Qu’est-ce que chroot sous Linux et comment fonctionne-t-il ?
Vous souhaitez exécuter des applications ou des services dans un espace isolé sous Linux ? Ou peut-être souhaitez-vous tester et déboguer une application sans qu’elle n’interfère avec le reste de votre système ? Si c’est le cas, vous voudrez en savoir plus sur le 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 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 bac à sable des applications et des services en toute sécurité. Le sandboxing, en termes informatiques, est le processus d’isolation d’un programme dans un espace confiné avec des ressources prédéfinies.
Si vous connaissez Docker et son fonctionnement, vous pouvez considérer chroot comme une version fortement dépouillée de celui-ci. chroot fonctionne en modifiant le répertoire racine d’un programme, en limitant 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 tout en n’ayant pas accès au système de fichiers de base.
Le chrootage d’un programme est un excellent moyen de tester sa fiabilité dans un espace sécurisé sans modifier les fichiers du système réel. En outre, vous pouvez également réduire le risque de sécurité causé par un paquetage compromis, car dans un environnement chrooté, le paquetage compromis ne sera pas en mesure d’accéder aux fichiers sensibles du système et de les modifier.
Le programme ne pourra accéder qu’aux fichiers importés dans le répertoire chrooté et les visualiser, ce qui est 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é dans lequel les programmes chroot résident et sont exécutés. Le terme chroot jail est dérivé du concept selon lequel le processus et ses sous-processus à l’intérieur de l’environnement chrooté n’ont pas d’accès ou de visibilité au système de fichiers de base et sont piégés dans les limites du chroot avec des ressources prédéterminées.
Maintenant que le concept de chroot est clair pour vous, passons à la pratique et apprenons comment créer une prison chroot et y faire naître 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 dont un programme a besoin pour fonctionner correctement.
Cependant, contrairement à un environnement Linux normal, l’environnement de la prison chroot est très restreint et le programme ne peut pas accéder à des fichiers et à des ressources système externes ou supplémentaires.
Par exemple, pour exécuter l’interpréteur de commandes Bash dans une prison chroot, vous devez copier le binaire Bash et toutes ses dépendances dans le répertoire chroot.
Voici les étapes à suivre pour créer une prison chroot et lancer 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 :
- Maintenant que vous connaissez l’emplacement du binaire et de ses dépendances, copiez-les dans le répertoire que vous souhaitez transformer en prison chroot. En utilisant la commande mkdir, créez les répertoires nécessaires et en utilisant la commande cp, copiez tous les fichiers dans les répertoires correspondants :
- Enfin, une fois 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 créer l’environnement chroot dans le répertoire choisi. Par défaut, un shell Bash est lancé. Voici la commande à taper :
C’est tout ce qu’il faut faire pour créer une prison chroot et exécuter un programme à l’intérieur.
Comment sortir d’une prison chroot
Bien que les prisons chroot soient utiles pour tester des logiciels instables, elles sont également utiles pour gérer les connexions SSH, car le chrootage des utilisateurs connectés est l’une des nombreuses façons de sécuriser votre serveur SSH.
En revanche, si vous êtes un testeur de pénétration et que vous vous êtes connecté au serveur SSH de votre cible, le fait de découvrir qu’il s’agit d’un environnement chrooté peut être frustrant et vous donner l’impression d’être dans 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 moyens simples de s’échapper d’une prison chroot :
- Appels de chroot imbriqués
- Appels chroot imbriqués avec descripteur de fichier sauvegardé
- Méthode de montage de la racine
- Échappatoire procfs
- ptrace escape
Notez que pour effectuer une évasion de chroot à l’aide de l’une de ces méthodes, vous devez disposer de privilèges élevés dans le système. Pour en savoir plus sur ces méthodes d’échappement, consultez la page le dépôt GitHub de chw00t, un outil d’automatisation de l’évasion de chroot.
Maintenant vous savez tout sur chroot dans Linux
Maintenant que vous savez ce qu’est chroot, comment il fonctionne et comment le mettre en œuvre, vous devriez être en mesure de sandboxer des applications sans effort à partir du terminal. Gardez à l’esprit que, comme vous le savez, il y a plusieurs façons de sortir d’un environnement chrooté.
Cela montre que chroot n’a en aucun cas été conçu pour être mis en œuvre en tant que fonctionnalité de sécurité. Vous devez donc utiliser chroot avec beaucoup de prudence, car une configuration incorrecte peut 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, comme les logiciels de conteneurisation ou les machines virtuelles. Ces deux solutions sont axées sur le sandboxing et la sécurité. Ainsi, à moins qu’un nouveau zero-day n’apparaisse, vous n’avez pas à vous inquiéter de la sécurité et de l’intégrité de votre système.
Si vous ne savez pas lequel choisir entre les logiciels de conteneurisation et de virtualisation, vous devriez essayer les deux et voir par vous-même lequel est le meilleur.
S’abonner à notre lettre d’information
Qu’est-ce qu’un chroot et comment fonctionne-t-il ?
Un chroot (abréviation de change root) est une opération Unix qui change le répertoire racine apparent en celui spécifié par l’utilisateur. Tout processus exécuté après une opération de chroot n’a accès qu’au répertoire racine nouvellement défini et à ses sous-répertoires.
Quelle est l’utilité de chroot dans Linux ?
La « commande chroot » est une commande Unix/Linux. Elle est utilisée pour changer le répertoire racine en un nouveau répertoire dans le système d’exploitation Linux/Unix. Le nouveau répertoire est connu sous le nom de chroot jail et de jail directory. Il s’agit d’une commande simple et efficace pour l’ensemble des outils de l’utilisateur.
Quel est l’exemple de commande chroot ?
Par exemple, chroot /tmp ls > /bin/file créera le fichier dans /bin/file. Remarque : la redirection est gérée par l’interpréteur de commandes actuel avant l’exécution de chroot. Par exemple, chroot /tmp ‘ls > /bin/file’ créera le fichier dans /tmp/bin/file.
Quels sont les avantages de chroot ?
Le principal avantage d’une prison chroot est qu’elle limite la partie du système de fichiers que le démon peut voir au répertoire racine de la prison. En outre, étant donné que l’environnement jail ne doit supporter qu’Apache, les programmes disponibles dans l’environnement jail peuvent être extrêmement limités.