Quels sont les avantages et les inconvénients des conteneurs non privilégiés?
16
L'explication technique de ce qu'est un conteneur non privilégié est assez bonne. Cependant, ce n'est pas pour un utilisateur PC ordinaire. Y a-t-il une réponse simple quand et pourquoi les gens devraient utiliser des conteneurs non autorisés, et quels sont leurs avantages et inconvénients?
L'exécution de conteneurs non privilégiés est le moyen le plus sûr d'exécuter des conteneurs dans un environnement de production. Les conteneurs obtiennent une mauvaise publicité en matière de sécurité et l'une des raisons est que certains utilisateurs ont constaté que si un utilisateur obtient racine dans un conteneur, il est également possible d'obtenir la racine sur l'hôte. Fondamentalement, ce qu'un conteneur non privilégié fait est de masquer l'ID utilisateur de l'hôte. Avec des conteneurs non privilégiés, les utilisateurs non root peuvent créer des conteneurs et auront et apparaîtront dans le conteneur en tant que root, mais apparaîtront comme ID utilisateur 10000 par exemple sur l'hôte (quel que soit le mappage des ID utilisateur). J'ai récemment écrit un article de blog à ce sujet basé sur la série de blogs de Stéphane Graber sur LXC (l'un des esprits brillants / développeurs principaux de LXC et quelqu'un à suivre certainement). Je le répète, extrêmement brillant.
Comme vous pouvez le voir, les processus s'exécutent à l'intérieur du conteneur en tant que root mais n'apparaissent pas en tant que root mais en tant que 100000 de l'hôte.
Donc, pour résumer: Avantages - sécurité accrue et isolation supplémentaire pour la sécurité. Inconvénient - Un peu déroutant pour envelopper votre tête au début et non pour l'utilisateur novice.
Donc, si je comprends bien, les conteneurs ne sont pas sécurisés à 100% par eux-mêmes. Quel que soit le conteneur que vous utilisez, il est possible que la bête puisse s'échapper. Et ce n'est qu'ici, lorsque le type de conteneur devient important. Pour les conteneurs privilégiés, la bête s'exécutera sous root, plantant des rootkits et grignotant de précieuses clés SSL. Pour les non privilégiés, il sera limité uniquement au compte d'utilisateur qui a créé le conteneur, non? Voler ses clés SSH, etc. Est-ce vraiment plus sûr? Peut-on l'expliquer avec une image de quatre boîtes imbriquées?
anatoly techtonik
2
En bref, les conteneurs eux-mêmes dès la sortie de la boîte ne sont pas sécurisés pour une utilisation en production. Traitez votre environnement LXC comme vous le feriez pour tout autre environnement Linux. Vous ne laisseriez pas votre boîte Linux grande ouverte non plus?! Oui, votre conteneur serait limité uniquement à celui auquel le compte d'utilisateur est mappé. Consultez la publication de Graber sur les conatiners non prouvés: je pense que le plus gros problème est de pouvoir exploiter le noyau et les appels système car chaque conteneur partage le même noyau. Il existe plusieurs façons d'améliorer la sécurité via des groupes de contrôle et d'autres applications comme selinux, apparmor et seccomp et plus encore.
Créez donc un utilisateur limité distinct pour exécuter les conteneurs. Semble juste. J'accepte cela comme réponse. Merci.
anatoly techtonik
4
Ce sont des outils très précieux pour les tests, le sandboxing et l'encapsulation. Vous voulez qu'un serveur Web soit verrouillé en toute sécurité dans son propre environnement de travail, incapable d'accéder à des fichiers privés sensibles? Utilisez un conteneur. Vous avez une application qui nécessite d'anciennes versions de bibliothèques et des fichiers de configuration spécifiques, incompatibles avec d'autres applications? Aussi un conteneur. C'est fondamentalement chroot bien fait. Il vous permet de maintenir les services suffisamment séparés pour que la maintenance de chacun d'eux soit beaucoup plus facile, et ils peuvent être déplacés ou copiés sur une autre machine sans avoir à perturber le système existant.
L'inconvénient est que vous devez vous souvenir de l'espace de noms car presque tout est local au conteneur. Vous devez savoir où vous vous trouvez et la communication entre les conteneurs n'est pas anodine. C'est une bonne idée lorsque vous avez besoin de modularité, mais ne voulez pas les frais généraux des machines virtuelles, et les choses que vous gardez dans les conteneurs ne sont vraiment pas très liées.
Pour un utilisateur "ordinaire", vous pouvez utiliser des conteneurs pour utiliser une seule machine pour deux personnes tout en les gardant comme s'ils se trouvaient sur des machines complètement différentes. Colocataires, par exemple.
Bien qu'une bonne description humaine de ce à quoi servent les conteneurs, cela n'explique toujours pas la différence entre les conteneurs privilégiés et non privilégiés.
anatoly techtonik
1
Eh bien, avec un noyau partagé, bien qu'il augmente les exigences de l'adversaire de se libérer de certaines façons (ou plutôt; cela aide à limiter la surface d'attaque), les conteneurs non privilégiés ne sont toujours pas complètement isolés des hacks droits qui gagnent la racine de l'hôte, malgré cela .
Pour cette raison, c'est un peu une hypothèse / revendication erronée. Cela dit, le niveau d'aptitude technique de nombreux utilisateurs sur Internet fonctionnera toujours avec des services inets, d'une multitude de façons dont ils ne sont pas vraiment capables techniquement, alors bon. :)
Ce sont des outils très précieux pour les tests, le sandboxing et l'encapsulation. Vous voulez qu'un serveur Web soit verrouillé en toute sécurité dans son propre environnement de travail, incapable d'accéder à des fichiers privés sensibles? Utilisez un conteneur. Vous avez une application qui nécessite d'anciennes versions de bibliothèques et des fichiers de configuration spécifiques, incompatibles avec d'autres applications? Aussi un conteneur. C'est fondamentalement chroot bien fait. Il vous permet de maintenir les services suffisamment séparés pour que la maintenance de chacun d'eux soit beaucoup plus facile, et ils peuvent être déplacés ou copiés sur une autre machine sans avoir à perturber le système existant.
L'inconvénient est que vous devez vous souvenir de l'espace de noms car presque tout est local au conteneur. Vous devez savoir où vous vous trouvez et la communication entre les conteneurs n'est pas anodine. C'est une bonne idée lorsque vous avez besoin de modularité, mais ne voulez pas les frais généraux des machines virtuelles, et les choses que vous gardez dans les conteneurs ne sont vraiment pas très liées.
Pour un utilisateur "ordinaire", vous pouvez utiliser des conteneurs pour utiliser une seule machine pour deux personnes tout en les gardant comme s'ils se trouvaient sur des machines complètement différentes. Colocataires, par exemple.
la source
Eh bien, avec un noyau partagé, bien qu'il augmente les exigences de l'adversaire de se libérer de certaines façons (ou plutôt; cela aide à limiter la surface d'attaque), les conteneurs non privilégiés ne sont toujours pas complètement isolés des hacks droits qui gagnent la racine de l'hôte, malgré cela .
Pour cette raison, c'est un peu une hypothèse / revendication erronée. Cela dit, le niveau d'aptitude technique de nombreux utilisateurs sur Internet fonctionnera toujours avec des services inets, d'une multitude de façons dont ils ne sont pas vraiment capables techniquement, alors bon. :)
la source