Contenitori LXC come ambiente sandbox


9

Attualmente sto avviando un progetto che valuta programmi non attendibili (compiti degli studenti) in un ambiente sandbox sicuro. L'idea principale è quella di creare un'app Web per GlassFish e il wrapper Java attorno a lxc-utils per gestire i contenitori LXC. Avrà una coda di programmi in attesa e un wrapper Java manterrà un numero fisso (pool) di contenitori LXC, assegnando a ciascun programma un contenitore (non utilizzato).

Ogni contenitore deve essere protetto con SELinux per proteggere il sistema host.

La mia domanda è: è una buona idea creare un tale meccanismo per un ambiente sandbox o esiste una soluzione più adatta a questo problema? Dovrebbe essere leggero e sicuro contro la creatività degli studenti.

Risposte:


6

Non hai scritto perché hai scelto LXC in quanto non è la soluzione di virtualizzazione più sicura. Sono un grande utente di KVM / XEN e anche di LXC e posso dire questa cosa che quando si tratta di sicurezza non vado mai con i container Linux (non importa se LXC / OpenVZ / VServer). È solo più semplice (e più affidabile) con KVM / XEN.

Se si tratta di prestazioni o requisiti hardware, allora ok - puoi provare con LXC, ma ci sono alcune regole che dovresti seguire:

  • libvirt garantisce il rigoroso confinamento dei container quando si utilizza SELinux (grazie a LXC_driver) - non sono sicuro se si tratti solo del caso RHEL / Centos / Fedora (non uso molto Ubuntu / Debian) https://www.redhat.com/archives /libvir-list/2012-January/msg01006.html - quindi andare con SELinux è una buona idea (secondo me è "must have" in tali circostanze)
  • Imposta rigide regole per i cgroups in modo che i tuoi ospiti non blocchino il tuo host o influenzino altri contenitori
  • Preferirei utilizzare i contenitori basati su LVM: è sempre un ulteriore livello di "sicurezza"
  • Pensa alla soluzione e all'architettura di rete. Quei container devono comunicare tra loro?

Inizia con la lettura di questo - è piuttosto vecchio, ma comunque - c'è molta conoscenza lì. E anche - incontra gli spazi dei nomi degli utenti

E dopo tutto ciò, ripensaci: hai davvero tanto tempo per giocare con la sicurezza LXC? KVM è molto più semplice ...


Prima di tutto, grazie per la risposta. Ho scelto LXC perché ho bisogno di qualcosa di leggero e funzionerà all'interno di KVM. È possibile eseguire KVM all'interno di KVM?
eXPi,

1

Per l'esecuzione di programmi non attendibili gli spazi dei nomi Linux sono ancora la soluzione migliore. È più facile da configurare rispetto a KVM e richiede meno risorse. Puoi provare LXC, tuttavia LXC è stato creato come sandbox più generico per l'esecuzione di immagini di distribuzione Linux complete. Mi vengono in mente altri due sandbox di namespace Linux:

  • Sandbox di Google Chrome , attualmente distribuito con Google Chrome / Chromium
  • Firejail , un sandbox di sicurezza creato per l'esecuzione di Mozilla Firerfox e di qualsiasi altro programma di interfaccia grafica.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.