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-trigger
nella maggior parte dei /sys
file.
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-start
profilo, è 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.