Où sont les limites de sécurité des conteneurs LXC?

8

Ma question concerne la sécurité d'un conteneur LXC.

Si j'exécute plusieurs conteneurs sur ma boîte et que je donne aux utilisateurs un accès ssh distinct à leur conteneur appartenant, l'un de ces conteneurs peut-il pirater les autres conteneurs de cette boîte ou même la machine hôte?

Où sont les limites de sécurité des conteneurs LXC?

iCode
la source
vous savez que vous devez vous en préoccuper, AppArmor s'en occupera.
rɑːdʒɑ

Réponses:

8

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-triggerou vers la plupart des /sysfichiers.

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-startprofil, 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é.

rɑːdʒɑ
la source
Merci beaucoup pour votre réponse. Alors, dites-vous qu'il est sécurisé si j'utilise AppArmor?
iCode
@iCode, Oui appArmor conçu pour protéger les applications Ubuntu et LXC bénéficie également d'un excellent support en termes de sécurité si vous utilisez AppArmor.
rɑːdʒɑ
AppArmor n'est pas tout, par exemple j'ai trouvé que l' dmesgon peut appeler depuis n'importe quel conteneur (au moins dans la configuration par défaut). J'ai bien peur que ce ne soit pas le seul risque pour la sécurité ...
Daniel Alder