Y a-t-il des différences notables entre LXC (conteneurs Linux) et les prisons de FreeBSD en termes de sécurité, de stabilité & performances?
En premier regardez, les deux approches se ressemblent beaucoup.
Commentaires
- LXC est une technologie plutôt nouvelle, donc je mattendrais à une meilleure sécurité et stabilité avec les prisons. Non même une supposition sur les performances. Il existe des problèmes de sécurité connus avec LXC qui peuvent être atténués à laide de selinux, par exemple. Personnellement, jaime LXC, cependant.
- @ PavelŠimerda Je viens dentendre parler de LXC aujourdhui, mais jétais surpris de découvrir que Heroku et probablement Google App Engine utilisent déjà LXC.
- Si vous ' venez de tomber sur LXC, vous devriez jeter un œil à Docker qui utilise LXC sous le capot: docker.io/the_whole_story
- Docker fait n ot nutilise plus lxc.
- @nwildner il nutilise plus ' liblxc, mais il utilise exactement les mêmes concepts: les espaces de noms du noyau.
Réponse
Quel que soit le nom de fantaisie utilisé ici, les deux sont des solutions à un problème spécifique: Une meilleure solution de ségrégation que Unix classique chroot . La virtualisation au niveau du système dexploitation, les conteneurs, les zones ou même «chroot with steroids» sont des noms ou des titres commerciaux qui définissent le même concept de séparation de lespace utilisateur, mais avec des fonctionnalités différentes.
Chroot a été introduit le 18 mars 1982 , des mois avant la sortie de 4.2 BSD , comme outil pour tester son système dinstallation et de construction, mais il a encore aujourdhui ses défauts. Puisque le premier objectif de chroot était uniquement de fournir un chemin newroot , dautres aspects du système qui devaient être isolés ou contrôlés ont été découverts (réseau, vue processus, débit dE / S). Cest là que sont apparus les premiers conteneurs (virtualisation au niveau utilisateur).
Les deux technologies (FreeBSD Jails et LXC) utilisent lisolation de lespace utilisateur pour fournir une autre couche de sécurité. Cette compartimentation garantira quun processus déterminé ne communiquera quavec dautres processus dans le même conteneur sur le même hôte, et si vous utilisez une ressource réseau pour réaliser une communication «du monde extérieur», tout sera transmis à linterface / canal attribué à ce conteneur a.
Fonctionnalités
Jails FreeBSD:
- Considérée comme une technologie stable, car cest une fonctionnalité de FreeBSD depuis la version 4.0;
- Elle prend le meilleur du système de fichiers ZFS au point où vous pouvez cloner des prisons et créer modèles de prison pour déployer facilement plus de prisons. Encore plus de Folie ZFS ;
- Bien documenté , et en évolution ;
- Les prisons hiérarchiques vous permettent de créer des prisons à lintérieur dune prison (nous devons aller plus loin!). À combiner avec
allow.mount.zfs
pour obtenir plus de puissance, et dautres variables commechildren.max
définissent le nombre maximal de prisons denfants. - rctl (8) gérera les limites de ressources des jails (mémoire, CPU, disque, …);
- les jails FreeBSD gèrent Linux espace utilisateur ;
- Isolation du réseau avec
vnet
, permettant à chaque prison davoir sa propre pile réseau, ses propres interfaces, tables dadressage et de routage; -
nullfs
pour aider à relier les dossiers à ceux qui se trouvent sur le serveur réel vers lintérieur dune prison; - ezjail pour aider les déploiements de masse et la gestion des prisons;
- Beaucoup de paramètres du noyau (
sysctl
).security.jail.allow.*
les paramètres limiteront les actions de lutilisateur root de cette prison. - Peut-être que les prisons FreeBSD étendront certaines des fonctionnalités du projet VPS comme migration en direct dans un proche avenir.
- Des efforts sont déployés pour lintégration de ZFS et de Docker fonctionnement. Encore expérimental.
- FreeBSD 12 prend en charge bhyve à lintérieur dune prison et pf à lintérieur dune prison, créant une isolation supplémentaire pour ces outils
- De nombreux outils intéressants ont été développés ces dernières années. Certains dentre eux sont indexés sur cet article de blog .
- Alternatives: Projet FreeBSD VPS
Conteneurs Linux (LXC):
- Nouvelle technologie « in kernel » mais approuvée par les plus grands (spécialement Canonical);
- Conteneurs non privilégiés à partir de LXC 1.0, fait un grand pas en avant dans la sécurité à lintérieur des conteneurs;
- Mappage UID et GID à lintérieur des conteneurs;
- Espaces de noms du noyau, pour séparer IPC, mount, pid, réseau et utilisateurs. Ces espaces de noms peuvent être gérés de manière détachée, où un processus qui utilise un espace de noms réseau différent ne sera pas nécessairement isolé sur dautres aspects comme le stockage;
- Groupes de contrôle (cgroups) pour gérer les ressources et les regrouper. CGManager est le gars pour y parvenir.
- Profils Apparmor / SELinux et capacités du noyau pour une meilleure application des fonctionnalités du noyau accessibles par les conteneurs. Seccomp est également disponible sur les conteneurs lxc pour filtrer les appels système. Autres aspects de sécurité ici .
-
Fonctionnalité de migration en direct en cours de développement. Il est vraiment difficile de dire quand il sera prêt pour une utilisation en production, car docker / lxc devra gérer la pause, linstantané, la migration et la consolidation du processus de lespace utilisateur – ref1 , ref2 .La migration en direct fonctionne avec des conteneurs de base (pas de relais de périphérique ni services réseau complexes ni configurations de stockage spéciales). - Liaisons dAPI pour permettre le développement en python3 et 2, lua, Go, Ruby et Haskell
- Zone centralisée «Quoi de neuf». Très utile chaque fois que vous devez vérifier si un bug a été corrigé ou si une nouvelle fonctionnalité a été validée. Ici .
- Une alternative intéressante pourrait être lxd , qui sous le capot fonctionne avec lxc mais, il a quelques fonctionnalités intéressantes comme une API REST, une intégration OpenStack, etc.
- Un autre intéressant le fait est quUbuntu semble livrer zfs comme système de fichiers par défaut pour les conteneurs sur 16.04 . Pour garder les projets alignés, lxd a lancé sa version 2.0, et certaines fonctionnalités sont liées à zfs .
- Alternatives : OpenVZ , Docker
- Docker . Notez ici que Docker utilise des espaces de noms, des groupes de contrôle créant une isolation « par application » / « par logiciel » . Différences clés ici . Alors que LXC crée des conteneurs avec plusieurs processus, Docker réduit autant que possible un conteneur à un seul processus, puis le gère via Docker.
- Effort dintégration de Docker avec SELinux et réduction des capacités à lintérieur dun conteneur pour le rendre plus sécurisé – Docker et SELinux, Dan Walsh
- Quelle est la différence entre Docker, LXD et LXC
Docker nutilise plus lxc. Ils ont maintenant un bibliothèque spécifique appelée runc qui gère directement lintégration avec les fonctionnalités despace de noms et de groupes de contrôle du noyau de bas niveau.
Aucune de ces technologies nest une panacée de sécurité, mais les deux sont de très bons moyens disoler un environnement qui ne nécessite pas de virtualisation complète en raison dune infrastructure de systèmes dexploitation mixtes. La sécurité viendra après de nombreuses lectures de documentation et implémentation des paramètres du noyau, des MAC et des isolations que ces virtuels au niveau du système dexploitation vous offrent.
Voir aussi:
- Conteneurs fabriqués à la main
- BSD Now: Tout ce que vous devez savoir sur les prisons
- ezjail – Cadre dadministration des prisons
- Bref historique des conteneurs: des années 1970 à 2017
- Docker considéré comme nuisible – Bon article sur le cirque de sécurité autour des technologies de conteneur.
Commentaires
- Il convient de mentionner que dès le départ, lxc ne fait aucun effort pour assurer une isolation adéquate des invités. lxd , cependant, tente de fournir une isolation comme les prisons BSD ou les zones Solaris.
- lxd est une " meilleure expérience " de LXC, en ajoutant dautres fonctionnalités. Cependant, cela semble bien de citer ce petit gars ici
- @allquixotic vous voulez dire si vous utilisez une configuration inchangée créée à partir de modèles? Des conteneurs certes, mais non privilégiés (activés pour les utilisateurs) étaient disponibles avec LXC 1.x et pouvaient même être démarrés automatiquement au démarrage du système, à condition quils appartenaient à
root
(et donc situés à lemplacement du système pour les conteneurs).