La commande chroot crée un environnement isolé sous Linux en modifiant le répertoire racine de tous les processus en cours d'exécution.
Vous cherchez à exécuter des applications ou des services dans un espace isolé sous Linux? Ou peut-être voulez-vous tester et déboguer une application sans qu'elle n'interfère avec le reste de votre système? Si tel est le cas, vous voudrez en savoir plus sur chroot, un mécanisme puissant intégré à Linux qui vous permet de créer un environnement distinct au sein de votre système.
Explorons chroot en détail, découvrons ses avantages, ses cas d'utilisation, comment le configurer sur un système Linux et, si nécessaire, comment y échapper.
Qu'est-ce que le chroot sous Linux?
chroot ou change-root est sans doute l'une des formes les plus simples et les plus anciennes de logiciel de conteneurisation qui permet à un utilisateur de mettre en sandbox des applications et des services en toute sécurité. Le sandboxing, en termes informatiques, est le processus d'isolement d'un programme dans un espace confiné avec des ressources prédéfinies.
Si vous êtes familier avec Docker et son fonctionnement, vous pouvez considérer chroot comme une version très simplifiée de celui-ci. chroot fonctionne en modifiant le répertoire racine d'un programme, en restreignant l'accès et la visibilité, et en fournissant ainsi une couche supplémentaire d'isolement et de sécurité.
Essentiellement, vous créez un répertoire séparé, copiez toutes les dépendances du programme dans le nouveau répertoire, puis exécutez la commande chroot. Cela permet au programme de fonctionner correctement sans avoir accès au système de fichiers de base.
chrooter un programme est un excellent moyen de tester sa fiabilité dans un espace sûr sans altérer les fichiers du système réel. De plus, vous pouvez également réduire le risque de sécurité causé par un paquet compromis car dans un environnement chrooté, le paquet compromis ne pourra pas accéder et modifier les fichiers système sensibles.
Le programme ne pourra accéder et afficher que les fichiers importés dans le répertoire chrooté, autrement connu sous le nom de "prison chroot". Cela empêche le programme et ses sous-processus d'interférer avec le système de base.
Qu'est-ce qu'une prison chroot?
Une prison chroot est un environnement isolé où les programmes chroot résident et sont exécutés. Le terme prison chroot est dérivé du concept selon lequel le processus et ses sous-processus à l'intérieur de l'environnement chrooté n'ont aucun accès ou visibilité au système de fichiers de base et sont piégés dans les limites de chroot avec des ressources.
Maintenant que le concept de chroot est clair pour vous, passons à la pratique et apprenons comment vous pouvez créer une prison chroot et y générer des processus.
Comment créer une prison chroot et y exécuter des programmes
Une prison chroot est essentiellement un répertoire qui contient toutes les ressources, fichiers, binaires et autres dépendances nécessaires dont un programme aurait besoin pour fonctionner correctement.
Cependant, contrairement à un environnement Linux standard, l'environnement de la prison chroot est très restreint et le programme ne peut pas accéder aux fichiers et ressources système externes ou supplémentaires.
Par exemple, pour exécuter le shell Bash dans une prison chroot, vous devez copier le binaire Bash et toutes ses dépendances dans le répertoire chroot.
Voici les étapes pour créer une prison chroot et générer un shell Bash :
- Pour qu'un programme s'exécute correctement, vous devez copier toutes ses dépendances dans le répertoire chrooté. Trouvons le binaire, dans ce cas, Bash, et l'emplacement de toutes ses dépendances à l'aide des commandes which et ldd :
quelle frappe
ldd /usr/bin/bash - Maintenant que vous connaissez les emplacements du binaire et de ses dépendances, copiez-les dans le répertoire que vous souhaitez transformer en prison chroot. À l'aide de la commande mkdir, créez les répertoires nécessaires et utilisez la commande cp, copiez tous les fichiers dans les répertoires correspondants :
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- Enfin, avec le programme et ses dépendances copiés, vous pouvez exécuter la commande chroot avec des privilèges élevés en utilisant le préfixe sudo pour générer l'environnement chroot dans le répertoire choisi. Par défaut, il générera un shell Bash. Voici la commande à taper :
sudo chroot nom_répertoire
Ce sont toutes les étapes pour créer une prison chroot et exécuter un programme à l'intérieur.
Comment sortir d'une prison chroot
Alors que les prisons chroot sont bonnes pour tester des logiciels instables, elles sont également utiles lors de la gestion des connexions SSH, car chrooter les utilisateurs connectés est l'un des nombreux façons de sécuriser votre serveur SSH.
D'un autre côté, si vous êtes un testeur d'intrusion et que vous vous êtes connecté au serveur SSH de votre cible, trouver qu'il s'agit d'un environnement chrooté peut être frustrant et donner l'impression d'une impasse.
Cependant, il existe de nombreuses façons de s'échapper d'une prison chroot mal configurée, certaines nécessitant des compétences en programmation C tandis que d'autres peuvent être automatisées avec des outils. Voici quelques façons simples d'échapper au chroot :
- Appels chroot imbriqués
- Appels chroot imbriqués avec descripteur de fichier enregistré
- Monter la méthode racine
- procfs évasion
- ptrace évasion
Notez que pour effectuer un chroot escape à l'aide de l'une de ces méthodes, vous devrez disposer de privilèges élevés dans le système. En savoir plus sur ces méthodologies d'évasion en vous rendant sur Dépôt GitHub de chw00t, un outil d'automatisation d'échappement chroot.
Maintenant, vous savez tout sur le chroot sous Linux
Maintenant que vous savez ce qu'est le chroot, comment il fonctionne et comment l'implémenter, vous devriez pouvoir mettre en sandbox des applications sans effort depuis le terminal. Gardez à l'esprit que, comme vous le savez, il existe plusieurs façons de sortir d'un environnement chrooté.
Cela montre que chroot n'a en aucun cas été conçu pour être implémenté en tant que fonctionnalité de sécurité. Vous devez donc utiliser chroot avec beaucoup de prudence car une mauvaise configuration peut finir par se retourner contre vous et compromettre la sécurité de votre système.
Il est préférable de s'en tenir à des solutions de sandboxing dédiées telles que des logiciels de conteneurisation ou des machines virtuelles. Les deux sont centrés sur le sandboxing et la sécurité, donc à moins qu'il n'y ait un nouveau jour zéro en ville, vous n'aurez pas à vous soucier de la sécurité et de l'intégrité de votre système.
Si vous ne savez pas lequel choisir entre un logiciel de conteneurisation et un logiciel de virtualisation, vous devriez essayer les deux et voir par vous-même lequel est le meilleur.