Penjelasan teknis tentang apa itu wadah yang tidak terjangkau cukup bagus. Namun, ini bukan untuk pengguna PC biasa. Apakah ada jawaban sederhana kapan dan mengapa orang harus menggunakan wadah yang tidak terjangkau, dan apa manfaat dan kerugiannya?
Penjelasan teknis tentang apa itu wadah yang tidak terjangkau cukup bagus. Namun, ini bukan untuk pengguna PC biasa. Apakah ada jawaban sederhana kapan dan mengapa orang harus menggunakan wadah yang tidak terjangkau, dan apa manfaat dan kerugiannya?
Jawaban:
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.
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.
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. :)