Di mana batas keamanan kontainer lxc?

8

Pertanyaan saya adalah tentang keamanan wadah LXC.

Jika saya menjalankan beberapa wadah di kotak saya, dan memberikan pengguna akses ssh terpisah ke wadah milik mereka, dapatkah salah satu dari wadah itu meretas ke dalam wadah lain di kotak itu atau bahkan mesin host?

Di mana batas keamanan kontainer lxc?

iCode
sumber
Anda tahu perlu khawatir tentang itu, AppArmor akan mengurusnya.
rɑːdʒɑ

Jawaban:

8

Seperti yang saya lihat tentang LXC, ia menyimpan informasi kontainer dan (dengan backing store default) sistem file root di bawah / var / lib / lxc. Templat pembuatan kontainer juga cenderung menyimpan informasi distribusi dalam cache di / var / cache / lxc.

Jadi Umumnya akses ke root filesystem hanya diizinkan untuk admin kecuali ada kesalahan penggunaan atau konfigurasi profil pengguna saat membuat mereka.

Tetapi Pengembang Ubuntu mungkin sudah sampai pada titik ini dan mereka telah memberikan solusi yang aman dengan bantuan AppArmor.

LXC dikirimkan dengan profil Apparmor yang dimaksudkan untuk melindungi tuan rumah dari penyalahgunaan hak istimewa secara tidak sengaja di dalam wadah. Misalnya, wadah tidak akan dapat menulis ke /proc/sysrq-triggeratau ke sebagian besar /sysfile.

Profil usr.bin.lxc-start dimasukkan dengan menjalankan lxc-start. Profil ini terutama mencegah lxc-mulai dari pemasangan sistem file baru di luar sistem file root wadah. Sebelum menjalankan init penampung, LXC meminta peralihan ke profil penampung. Secara default, profil ini adalah kebijakan lxc-container-default yang didefinisikan dalam /etc/apparmor.d/lxc/lxc-default. Profil ini mencegah wadah mengakses banyak jalur berbahaya, dan dari pemasangan sebagian besar sistem file.

Jika Anda menemukan bahwa lxc-start gagal karena akses yang sah yang ditolak oleh kebijakan Apparmor-nya, Anda dapat menonaktifkan profil lxc-start dengan melakukan:

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/

Ini akan membuat lxc-start dijalankan tanpa dibatasi, tetapi terus membatasi wadah itu sendiri. Jika Anda juga ingin menonaktifkan kurungan wadah, maka selain menonaktifkan usr.bin.lxc-startprofil, Anda harus menambahkan:

lxc.aa_profile = unconfined

ke file konfigurasi wadah. Jika Anda ingin menjalankan wadah di profil khusus, Anda dapat membuat profil baru di bawah /etc/apparmor.d/lxc/. Namanya harus dimulai dengan lxc- agar lxc-start diizinkan untuk beralih ke profil itu. Setelah membuat kebijakan, muat menggunakan:

sudo apparmor_parser -r /etc/apparmor.d/lxc-containers

Profil akan dimuat secara otomatis setelah reboot, karena bersumber dari file /etc/apparmor.d/lxc-containers. Akhirnya, untuk membuat wadah CN menggunakan ini baru lxc-CN-profile, tambahkan baris berikut ke file konfigurasinya:

lxc.aa_profile = lxc-CN-profile

lxc-execute tidak memasukkan profil Apparmor, tetapi wadah yang ditimbulkannya akan terbatas.

rɑːdʒɑ
sumber
Terima kasih banyak atas jawaban Anda. Jadi, apakah Anda mengatakan itu aman jika saya menggunakan AppArmor?
iCode
@ iCode, Ya appArmor dirancang untuk melindungi aplikasi Ubuntu dan LXC juga mendapatkan dukungan besar dalam hal keamanan jika Anda menggunakan AppArmor.
rɑːdʒɑ
AppArmor bukan segalanya, misalnya saya menemukan bahwa dmesgdapat dipanggil dari wadah apa pun (setidaknya dalam konfigurasi default). Saya khawatir itu bukan satu-satunya risiko keamanan ...
Daniel Alder