Apa manfaat dan kerugian dari wadah yang tidak terjangkau?

Jawaban:

14

Menjalankan kontainer yang tidak terjangkau adalah cara paling aman untuk menjalankan kontainer di lingkungan produksi. Kontainer mendapatkan publisitas yang buruk ketika datang ke keamanan dan salah satu alasannya adalah karena beberapa pengguna telah menemukan bahwa jika pengguna mendapatkan root di wadah maka ada kemungkinan mendapatkan root pada host juga. Pada dasarnya apa yang dilakukan oleh wadah yang tidak terjangkau adalah menutupi userid dari host. Dengan wadah yang tidak terjangkau, pengguna non-root dapat membuat kontainer dan akan memiliki dan muncul di dalam wadah sebagai root tetapi akan muncul sebagai userid 10000 misalnya pada host (apa pun yang Anda petakan sebagai userids). Baru-baru ini saya menulis posting blog berdasarkan seri blog Stephane Graber di LXC (Salah satu pengembang / pemimpin brilian LXC dan seseorang yang pasti akan mengikuti). Saya katakan lagi, sangat cemerlang.

Dari blog saya:

Dari wadah:

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

Dari tuan rumah:

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

Seperti yang Anda lihat proses berjalan di dalam wadah sebagai root tetapi tidak muncul sebagai root tetapi sebagai 100000 dari host.

Jadi kesimpulannya: Manfaat - keamanan tambahan dan isolasi tambahan untuk keamanan. Kelemahan - Sedikit membingungkan untuk membungkus kepala Anda pada awalnya dan bukan untuk pengguna pemula.

geekbass
sumber
3
Jadi, jika saya memahaminya dengan benar, kontainer tidak 100% aman sendiri. Tidak peduli wadah mana yang Anda jalankan, ada kemungkinan binatang itu bisa melarikan diri. Dan itu hanya di sini, ketika jenis wadah menjadi penting. Untuk wadah istimewa, binatang buas itu akan berjalan di bawah root, menanam rootkit, dan mengunyah kunci SSL yang berharga. Untuk yang tidak mampu, itu hanya akan terbatas pada akun pengguna yang membuat wadah, bukan? Mencuri kunci SSH dll. Apakah itu benar-benar lebih aman? Bisakah itu dijelaskan dengan gambar empat kotak bersarang?
anatoly techtonik
2
Singkatnya, Wadah sendiri di luar kotak tidak aman untuk penggunaan produksi. Perlakukan lingkungan LXC Anda seperti halnya lingkungan Linux lainnya. Anda juga tidak akan membiarkan kotak Linux Anda terbuka lebar kan ?! Ya, wadah Anda akan dibatasi hanya untuk yang dipetakan oleh akun pengguna. Lihat posting Graber pada conatiners yang tidak diprivasi: Saya pikir masalah terbesar adalah mampu mengeksploitasi kernel dan syscalls karena setiap kontainer berbagi kernel yang sama. Ada beberapa cara untuk meningkatkan keamanan melalui cgroup dan aplikasi lain seperti selinux, apparmor dan seccomp dan banyak lagi.
geekbass
Jadi, buat pengguna terbatas terpisah untuk menjalankan kontainer. Tampak adil. Saya menerima ini sebagai jawabannya. Terima kasih.
anatoly techtonik
4

Mereka adalah alat yang sangat berharga untuk pengujian, kotak pasir dan enkapsulasi. Ingin server web terkunci dengan aman di lingkungan kerjanya sendiri, tidak dapat mengakses file pribadi yang sensitif? Gunakan wadah. Anda memiliki aplikasi yang memerlukan pustaka versi lama, dan file konfigurasi tertentu, tidak kompatibel dengan aplikasi lain? Juga sebuah wadah. Ini pada dasarnya chroot dilakukan dengan benar. Hal ini memungkinkan Anda untuk menjaga layanan cukup terpisah sehingga menjaga masing-masing layanan menjadi lebih mudah, dan mereka dapat dipindahkan atau disalin ke mesin lain tanpa harus mengganggu sistem yang ada.

The downside adalah bahwa Anda perlu mengingat namespace untuk hampir semuanya lokal ke wadah. Anda harus menyadari di mana Anda berada, dan komunikasi antar wadah tidak sepele. Ini adalah ide yang baik ketika Anda membutuhkan modularitas, tetapi tidak ingin overhead mesin virtual, dan hal-hal yang Anda simpan dalam wadah benar-benar tidak terkait banyak.

Untuk pengguna "biasa", Anda dapat menggunakan wadah untuk menggunakan satu mesin untuk dua orang sambil menjaganya seolah-olah mereka berada di mesin yang sama sekali berbeda. Teman sekamar, misalnya.

orion
sumber
3
Sementara deskripsi manusia yang baik tentang untuk apa wadah, ini masih tidak menjelaskan perbedaan antara yang istimewa dan yang tidak terjangkau.
anatoly techtonik
1

Nah, dengan kernel yang dibagikan, meskipun meningkatkan persyaratan musuh untuk membebaskan diri dalam beberapa hal (atau lebih tepatnya; itu membantu membatasi permukaan serangan), wadah tidakrivasi masih belum sepenuhnya terisolasi dari peretasan lurus yang mendapatkan root host, meskipun demikian .

Untuk alasan itu, itu adalah asumsi / klaim yang salah. Karena itu, tingkat bakat teknis di banyak pengguna di internet masih akan menjalankan layanan inet, dalam banyak cara yang mereka tidak benar-benar mampu secara teknis, jadi hei. :)

Malina Salina
sumber