Comme je l'ai vu à propos de LXC, il stocke les informations sur les conteneurs et (avec le magasin de sauvegarde par défaut) les systèmes de fichiers racine sous / var / lib / lxc. Les modèles de création de conteneurs ont également tendance à stocker les informations de distribution mises en cache sous / var / cache / lxc.
Donc, généralement, l'accès au système de fichiers racine n'est autorisé qu'à l'administrateur, sauf en cas de mauvaise utilisation ou de mauvais profils utilisateur de configuration lors de leur création.
Mais les développeurs Ubuntu sont peut-être déjà arrivés à ce point et ils ont fourni une solution sécurisée avec l'aide d'AppArmor.
LXC est livré avec un profil Apparmor destiné à protéger l'hôte contre les abus de privilèges accidentels à l'intérieur du conteneur. Par exemple, le conteneur ne pourra pas écrire dans /proc/sysrq-trigger
ou vers la plupart des /sys
fichiers.
Le profil usr.bin.lxc-start est entré en exécutant lxc-start. Ce profil empêche principalement lxc-start de monter de nouveaux systèmes de fichiers en dehors du système de fichiers racine du conteneur. Avant d'exécuter l'initialisation du conteneur, LXC demande un basculement vers le profil du conteneur. Par défaut, ce profil est la stratégie lxc-container-default qui est définie dans /etc/apparmor.d/lxc/lxc-default
. Ce profil empêche le conteneur d'accéder à de nombreux chemins dangereux et de monter la plupart des systèmes de fichiers.
Si vous constatez que lxc-start échoue en raison d'un accès légitime refusé par sa stratégie Apparmor, vous pouvez désactiver le profil lxc-start en procédant comme suit:
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/
Cela rendra lxc-start non confiné, mais continuera à confiner le conteneur lui-même. Si vous souhaitez également désactiver le confinement du conteneur, en plus de désactiver le usr.bin.lxc-start
profil, vous devez ajouter:
lxc.aa_profile = unconfined
dans le fichier de configuration du conteneur. Si vous souhaitez exécuter un conteneur dans un profil personnalisé, vous pouvez créer un nouveau profil sous /etc/apparmor.d/lxc/
. Son nom doit commencer par lxc- pour que lxc-start puisse passer à ce profil. Après avoir créé la stratégie, chargez-la en utilisant:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
Le profil sera automatiquement chargé après un redémarrage, car il provient du fichier /etc/apparmor.d/lxc-containers
. Enfin, pour que le conteneur CN utilise cette nouvelle lxc-CN-profile
, ajoutez la ligne suivante à son fichier de configuration:
lxc.aa_profile = lxc-CN-profile
lxc-execute
n'entre pas dans un profil d'Apparmor, mais le conteneur qu'il génère sera confiné.