Wadah LXC sebagai lingkungan kotak pasir

9

Saat ini saya memulai proyek yang mengevaluasi program-program yang tidak dipercaya (tugas siswa) di lingkungan kotak pasir yang aman. Gagasan utamanya adalah membuat aplikasi web untuk GlassFish dan Java wrapper di sekitar lxc-utils untuk mengelola wadah LXC. Ini akan memiliki antrian program menunggu dan pembungkus Java akan mempertahankan nomor tetap (kumpulan) kontainer LXC, menugaskan masing-masing program satu kontainer (tidak terpakai).

Setiap kontainer harus diamankan dengan SELinux untuk melindungi sistem host.

Pertanyaan saya adalah: Apakah ide yang bagus untuk membuat mekanisme seperti itu untuk lingkungan kotak pasir, atau adakah solusi yang lebih cocok untuk masalah ini? Itu harus ringan dan aman terhadap kreativitas siswa.

eXPi
sumber

Jawaban:

6

Anda tidak menulis mengapa Anda memilih LXC karena itu bukan solusi virtualisasi yang paling aman. Saya pengguna berat KVM / XEN dan juga LXC dan saya dapat mengatakan satu hal ini bahwa ketika datang ke keamanan saya tidak pernah pergi dengan wadah Linux (tidak peduli apakah LXC / OpenVZ / VServer). Ini lebih mudah (dan lebih dapat diandalkan) dengan KVM / XEN.

Jika ini tentang kinerja atau persyaratan perangkat keras maka ok - Anda dapat mencoba dengan LXC, tetapi ada beberapa aturan yang harus Anda ikuti:

  • libvirt memastikan pengurungan kontainer yang ketat saat menggunakan SELinux (terima kasih kepada LXC_driver) - meskipun tidak yakin apakah itu hanya kotak RHEL / Centos / Fedora (saya tidak terlalu menggunakan Ubuntu / Debian) https://www.redhat.com/archives /libvir-list/2012-Januari/msg01006.html - jadi menggunakan SELinux adalah ide yang bagus (menurut saya itu "harus dimiliki" dalam keadaan seperti itu)
  • Tetapkan aturan cgroup yang ketat sehingga tamu Anda tidak membuat host Anda membeku atau memengaruhi wadah lain
  • Saya lebih suka menggunakan wadah berbasis LVM - selalu ada satu lapisan lagi "keamanan"
  • Pikirkan tentang solusi dan arsitektur jaringan. Apakah wadah-wadah itu harus saling berkomunikasi?

Mulailah dengan membaca ini - ini sudah cukup tua, tetapi masih - ada banyak pengetahuan di sana. Dan juga - memenuhi ruang nama pengguna

Dan setelah semua itu pikirkan lagi - apakah Anda benar-benar punya banyak waktu untuk bermain dengan keamanan LXC? KVM jauh lebih sederhana ...

Maciej Lasyk
sumber
Pertama-tama, terima kasih atas jawabannya. Saya memilih LXC karena saya butuh sesuatu yang ringan, dan itu akan berjalan di dalam KVM. Dimungkinkan untuk menjalankan KVM di dalam KVM?
eXPi
1

Untuk menjalankan program yang tidak tepercaya, ruang nama Linux masih merupakan solusi terbaik. Lebih mudah diatur daripada KVM, dan membutuhkan lebih sedikit sumber daya. Anda dapat mencoba LXC, namun LXC dibuat sebagai kotak pasir yang lebih umum untuk menjalankan gambar distribusi Linux lengkap. Dua kotak pasir ruang nama Linux lainnya muncul dalam pikiran:

  • Google Chrome sandbox, didistribusikan saat ini dengan Google Chrome / Chromium
  • Firejail , kotak pasir keamanan yang dibuat untuk menjalankan Mozilla Firerfox dan program GUI lainnya.
netblue
sumber