Lợi ích và nhược điểm của container không có đặc quyền là gì?


16

Các giải thích kỹ thuật về những gì container không có đặc quyền là khá tốt. Tuy nhiên, nó không dành cho người dùng PC thông thường. Có một câu trả lời đơn giản khi nào và tại sao mọi người nên sử dụng các container không có điều kiện, và lợi ích và nhược điểm của chúng là gì?

Câu trả lời:


14

Chạy các container không có đặc quyền là cách an toàn nhất để chạy container trong môi trường sản xuất. Các container bị công khai xấu khi nói đến bảo mật và một trong những lý do là bởi vì một số người dùng đã phát hiện ra rằng nếu người dùng đã root trong một container thì cũng có khả năng lấy được root trên máy chủ. Về cơ bản những gì một container không có đặc quyền làm là che dấu userid từ máy chủ. Với các bộ chứa không có đặc quyền, người dùng không root có thể tạo các bộ chứa và sẽ có và xuất hiện trong bộ chứa dưới dạng root nhưng sẽ xuất hiện dưới dạng userid 10000 chẳng hạn trên máy chủ (bất cứ thứ gì bạn ánh xạ người dùng như). Gần đây tôi đã viết một bài đăng trên blog này dựa trên loạt blog của Stephane Graber trên LXC (Một trong những nhà phát triển trí tuệ / nhà phát triển chính của LXC và một người nào đó chắc chắn sẽ theo dõi). Tôi nói lại, vô cùng rực rỡ.

Từ blog của tôi:

Từ container:

lxc-attach -n ubuntu-unprived
root@ubuntu-unprived:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 04:48 ?        00:00:00 /sbin/init
root       157     1  0 04:48 ?        00:00:00 upstart-udev-bridge --daemon
root       189     1  0 04:48 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
root       244     1  0 04:48 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid
syslog     290     1  0 04:48 ?        00:00:00 rsyslogd
root       343     1  0 04:48 tty4     00:00:00 /sbin/getty -8 38400 tty4
root       345     1  0 04:48 tty2     00:00:00 /sbin/getty -8 38400 tty2
root       346     1  0 04:48 tty3     00:00:00 /sbin/getty -8 38400 tty3
root       359     1  0 04:48 ?        00:00:00 cron
root       386     1  0 04:48 console  00:00:00 /sbin/getty -8 38400 console
root       389     1  0 04:48 tty1     00:00:00 /sbin/getty -8 38400 tty1
root       408     1  0 04:48 ?        00:00:00 upstart-socket-bridge --daemon
root       409     1  0 04:48 ?        00:00:00 upstart-file-bridge --daemon
root       431     0  0 05:06 ?        00:00:00 /bin/bash
root       434   431  0 05:06 ?        00:00:00 ps -ef

Từ chủ nhà:

lxc-info -Ssip --name ubuntu-unprived
State:          RUNNING
PID:            3104
IP:             10.1.0.107
CPU use:        2.27 seconds
BlkIO use:      680.00 KiB
Memory use:     7.24 MiB
Link:           vethJ1Y7TG
TX bytes:      7.30 KiB
RX bytes:      46.21 KiB
Total bytes:   53.51 KiB

ps -ef | grep 3104
100000    3104  3067  0 Nov11 ?        00:00:00 /sbin/init
100000    3330  3104  0 Nov11 ?        00:00:00 upstart-udev-bridge --daemon
100000    3362  3104  0 Nov11 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
100000    3417  3104  0 Nov11 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
100102    3463  3104  0 Nov11 ?        00:00:00 rsyslogd
100000    3516  3104  0 Nov11 pts/8    00:00:00 /sbin/getty -8 38400 tty4
100000    3518  3104  0 Nov11 pts/6    00:00:00 /sbin/getty -8 38400 tty2
100000    3519  3104  0 Nov11 pts/7    00:00:00 /sbin/getty -8 38400 tty3
100000    3532  3104  0 Nov11 ?        00:00:00 cron
100000    3559  3104  0 Nov11 pts/9    00:00:00 /sbin/getty -8 38400 console
100000    3562  3104  0 Nov11 pts/5    00:00:00 /sbin/getty -8 38400 tty1
100000    3581  3104  0 Nov11 ?        00:00:00 upstart-socket-bridge --daemon
100000    3582  3104  0 Nov11 ?        00:00:00 upstart-file-bridge --daemon
lxc       3780  1518  0 00:10 pts/4    00:00:00 grep --color=auto 3104

Như bạn có thể thấy các tiến trình đang chạy bên trong container dưới dạng root nhưng không xuất hiện dưới dạng root mà là 100000 từ máy chủ.

Vì vậy, để tóm tắt: Lợi ích - thêm bảo mật và thêm sự cô lập cho bảo mật. Nhược điểm - Một chút bối rối để quấn đầu của bạn lúc đầu và không dành cho người dùng mới làm quen.


3
Vì vậy, nếu tôi hiểu chính xác, container không tự bảo mật 100%. Bất kể bạn chạy container nào, có khả năng con thú có thể trốn thoát. Và nó chỉ ở đây, khi loại container trở nên quan trọng. Đối với các thùng chứa đặc quyền, con thú sẽ tự nhiên chạy theo root, trồng rootkit và nhai các khóa SSL có giá trị. Đối với người không có đặc quyền, nó sẽ chỉ giới hạn trong tài khoản người dùng đã tạo vùng chứa, phải không? Ăn cắp các khóa SSH của anh ấy, v.v ... Điều đó có thực sự an toàn hơn không? Nó có thể được giải thích với một hình ảnh của bốn hộp lồng nhau?
anatoly techtonik

2
Nói tóm lại, các thùng chứa ngay bên ngoài hộp không an toàn cho sử dụng sản xuất. Hãy đối xử với môi trường LXC của bạn như bất kỳ môi trường Linux nào khác. Bạn sẽ không để hộp Linux của mình mở rộng phải không?! Có, container của bạn sẽ chỉ bị giới hạn trong đó tài khoản người dùng được ánh xạ tới. Kiểm tra bài đăng của Graber về các conatin không được cấp phép: Tôi nghĩ vấn đề lớn nhất là có thể khai thác kernel và các tòa nhà cao tầng vì mọi container đều có chung một kernel. Có một số cách để tăng cường bảo mật thông qua các nhóm và các ứng dụng khác như selinux, apparmor và seccomp và hơn thế nữa.
geekbass


Vì vậy, tạo một người dùng hạn chế riêng để chạy container. Có vẻ công bằng. Tôi chấp nhận đây là câu trả lời. Cảm ơn.
anatoly techtonik

4

Chúng là những công cụ rất có giá trị để thử nghiệm, hộp cát và đóng gói. Muốn một máy chủ web bị khóa an toàn trong môi trường làm việc của chính nó, không thể truy cập các tệp riêng tư nhạy cảm? Sử dụng một container. Bạn có một ứng dụng yêu cầu các phiên bản cũ của thư viện và các tệp cấu hình cụ thể, không tương thích với các ứng dụng khác? Cũng là một container. Về cơ bản, nó đã được thực hiện đúng. Nó cho phép bạn duy trì các dịch vụ đủ riêng biệt để duy trì từng dịch vụ dễ dàng hơn nhiều và chúng có thể được di chuyển hoặc sao chép sang một máy khác mà không phải làm phiền hệ thống hiện tại.

Nhược điểm là bạn cần nhớ không gian tên cho hầu hết mọi thứ là cục bộ của container. Bạn phải nhận thức được bạn đang ở đâu và giao tiếp giữa các container không phải là chuyện nhỏ. Đó là một ý tưởng tốt khi bạn cần mô đun hóa, nhưng không muốn chi phí hoạt động của các máy ảo và những thứ bạn giữ trong các thùng chứa thực sự không liên quan nhiều.

Đối với người dùng "thông thường", bạn có thể sử dụng các thùng chứa để sử dụng một máy cho hai người trong khi vẫn giữ họ như thể họ đang ở trên các máy hoàn toàn khác nhau. Bạn cùng phòng chẳng hạn.


3
Mặc dù mô tả tốt của con người về những gì container dành cho, nhưng điều này vẫn không giải thích được sự khác biệt giữa những đặc quyền và không có đặc quyền.
anatoly techtonik

1

Chà, với một hạt nhân được chia sẻ, mặc dù nó làm tăng yêu cầu của kẻ thù để thoát ra theo một số cách (hay đúng hơn là nó giúp hạn chế bề mặt tấn công), các container không được ưu tiên vẫn không bị cô lập hoàn toàn khỏi các hack thẳng, lấy được root host, mặc dù điều này .

Vì lý do đó, đó là một chút giả định / yêu cầu sai. Phải nói rằng, mức độ năng khiếu kỹ thuật ở nhiều người dùng trên internet vẫn sẽ chạy các dịch vụ inet, theo vô số cách mà họ không thực sự có khả năng về mặt kỹ thuật, vì vậy, hey. :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.