Apa yang membuat systemd-nspawn masih "tidak cocok untuk pengaturan wadah yang aman"?

21

Ini dinyatakan dalam halaman manual untuk systemd-nspawn

Perhatikan bahwa meskipun tindakan pencegahan keamanan ini dilakukan systemd-nspawn tidak cocok untuk pengaturan wadah yang aman. Banyak fitur keamanan dapat dielakkan dan karenanya sangat berguna untuk menghindari perubahan yang tidak disengaja pada sistem host dari wadah. Tujuan penggunaan program ini adalah debugging dan pengujian serta pembuatan paket, distribusi, dan perangkat lunak yang terlibat dengan boot dan manajemen sistem.

Pertanyaan ini kemudian ditanyakan di milis pada tahun 2011 , tetapi jawabannya tampaknya sudah usang.

systemd-nspawn berisi kode untuk dieksekusi CLONE_NEWNETmenggunakan --private-networkopsi sekarang. Ini tampaknya mencakup AF_UNIXmasalah namespace pribadi , dan saya kira CAP_NET_RAWdan CAP_NET_BINDmasalah yang disebutkan.

Masalah apa yang masih ada pada titik ini dan apa yang dilakukan misalnya LXC selain apa yang systemd-nspawnsaat ini dapat dilakukan?

pengguna239558
sumber
AF_UNIX menjadi setengah terisolasi dengan CLONE_NEWNET: soket abstrak - terpisah, berbasis filesytem - bersatu (kecuali tidak ada sistem file bersama antara host dan wadah). Ini memudahkan untuk memulai aplikasi X yang membatasi jaringan untuk aplikasi tertentu (karena Xorg membuka soket UNIX yang abstrak dan sistem berkas).
Vi.

Jawaban:

12

LXC sedikit lebih baik karena dapat menjalankan kontainer sebagai pengguna yang tidak memiliki peringkat . Ini dimungkinkan dengan systemd-nspawn, tetapi hanya untuk skenario di mana Anda hanya perlu satu pengguna (bukan beberapa), yang bisa sulit atau kurang aman untuk multi proses dalam skenario wadah. Jika Anda ingin tahu mengapa docker, lxc, dan systemd-nspawn secara inheren bukan mekanisme keamanan yang solid, baca ini: https://opensource.com/business/14/7/docker-security-selinux . Pada dasarnya, kontainer masih memiliki akses ke kernel dan setiap kernel mengeksploitasi kontrol dari seluruh mesin. Pada kernel monolitik seperti Linux, eksploitasi kernel tidak jarang.

CameronNemo
sumber
3
Jawaban ini salah. systemd-nspawn mendukung menjatuhkan hak istimewa kepada pengguna yang berbeda: freedesktop.org/software/systemd/man/systemd-nspawn.html
David Timothy Strauss
Saya cukup yakin semua yang dilakukan adalah menjalankan konsol / shell sebagai pengguna non-priveleged, tetapi jalankan semua yang lain sebagai root. Bisakah Anda melihat itu?
CameronNemo
1
Ok, saya ambil pernyataan terakhir saya kembali. Namun, itu tidak memiliki penanganan subtuid / subgid yang tepat, hanya satu pengguna tidak berbayar per kontainer.
CameronNemo
2
Hanya bisa beralih ke satu pengguna yang tidak terjangkau per kontainer alih-alih mendukung penanganan subtuid / subgid penuh bukanlah masalah keamanan. Ini adalah batasan fitur.
David Timothy Strauss
Ya aku tahu. Saya baru saja menunjukkan perbedaannya.
CameronNemo