Dove sono i confini di sicurezza dei contenitori lxc?


8

La mia domanda riguarda la sicurezza di un container LXC.

Se sto eseguendo più contenitori sulla mia scatola e concedo agli utenti un accesso ssh separato al loro contenitore di proprietà, qualcuno di questi contenitori può hackerare gli altri contenitori su quella scatola o persino la macchina host?

Dove sono i confini di sicurezza dei contenitori lxc?


sai che devi preoccuparti, AppArmor se ne occuperà.
rɑːdʒɑ

Risposte:


8

Come ho visto su LXC Memorizza le informazioni sul container e (con il backing store predefinito) filesystem di root in / var / lib / lxc. I modelli di creazione del contenitore tendono anche a memorizzare le informazioni sulla distribuzione memorizzata nella cache in / var / cache / lxc.

Quindi, generalmente l'accesso al filesystem di root è consentito solo all'amministratore, a meno che non ci siano errori di configurazione o profili utente di configurazione errati durante la loro creazione.

Ma gli sviluppatori Ubuntu potrebbero già essere arrivati ​​a questo punto e hanno fornito una soluzione sicura con l'aiuto di AppArmor.

LXC viene fornito con un profilo Apparmor destinato a proteggere l'host da abusi accidentali di privilegi all'interno del contenitore. Ad esempio, il contenitore non sarà in grado di scrivere /proc/sysrq-triggernella maggior parte dei /sysfile.

Il profilo usr.bin.lxc-start viene inserito eseguendo lxc-start. Questo profilo impedisce principalmente a lxc-start di montare nuovi filesystem all'esterno del filesystem di root del contenitore. Prima di eseguire init del contenitore, LXC richiede un passaggio al profilo del contenitore. Per impostazione predefinita, questo profilo è la politica lxc-container-default che è definita in /etc/apparmor.d/lxc/lxc-default. Questo profilo impedisce al contenitore di accedere a molti percorsi pericolosi e di montare la maggior parte dei file system.

Se scopri che lxc-start non riesce a causa di un accesso legittimo che viene negato dalla sua politica di Apparmor, puoi disabilitare il profilo lxc-start facendo:

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/

Ciò renderà lxc-start eseguito non confinato, ma continuerà a confinare il contenitore stesso. Se si desidera disabilitare anche il confinamento del contenitore, oltre a disabilitare il usr.bin.lxc-startprofilo, è necessario aggiungere:

lxc.aa_profile = unconfined

al file di configurazione del contenitore. Se si desidera eseguire un contenitore in un profilo personalizzato, è possibile creare un nuovo profilo in /etc/apparmor.d/lxc/. Il nome deve iniziare con lxc- per consentire a lxc-start di passare a quel profilo. Dopo aver creato il criterio, caricarlo utilizzando:

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

Il profilo verrà caricato automaticamente dopo un riavvio, poiché è originato dal file /etc/apparmor.d/lxc-containers. Infine, per fare in modo che il container CN utilizzi questo nuovo lxc-CN-profile, aggiungi la seguente riga al suo file di configurazione:

lxc.aa_profile = lxc-CN-profile

lxc-execute non inserisce un profilo Apparmor, ma il contenitore generato verrà confinato.


Mille grazie per la tua risposta. Quindi, stai dicendo che è sicuro se uso AppArmor?
iCode

@iCode, Sì appArmor progettato per proteggere le applicazioni Ubuntu e LXC ottiene anche un ottimo supporto in termini di sicurezza se usi AppArmor.
1313

AppArmor non è tutto, ad esempio ho scoperto che dmesgpuò essere chiamato da qualsiasi contenitore (almeno nella configurazione predefinita). Temo che non sia l'unico rischio per la sicurezza ...
Daniel Alder,
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.