J'ai beaucoup entendu parler de la prison chroot sous Linux, mais je ne l'ai jamais encore utilisée (j'utilise Fedora au jour le jour), alors qu'est-ce qu'une "prison" chroot? Quand et pourquoi devrais-je l'utiliser / ne pas l'utiliser et y a-t-il autre chose que je devrais savoir? Comment pourrais-je en créer un?
99
Réponses:
Une prison chroot est un moyen d'isoler un processus et ses enfants du reste du système. Il ne doit être utilisé que pour les processus qui ne s'exécutent pas en tant que root, car les utilisateurs root peuvent sortir de la prison très facilement.
L'idée est de créer une arborescence de répertoires dans laquelle vous copiez ou liez tous les fichiers système nécessaires à l'exécution d'un processus. Vous utilisez ensuite l'
chroot()
appel système pour modifier le répertoire racine afin qu'il se trouve à la base de cette nouvelle arborescence et pour démarrer le processus exécuté dans cet environnement chroot'd. Comme il ne peut pas réellement référencer des chemins en dehors de la racine modifiée, il ne peut pas effectuer d'opérations (lecture / écriture, etc.) de manière malveillante sur ces emplacements.Sous Linux, l’utilisation d’un support de liaison est un excellent moyen de renseigner l’arbre de chroot. En utilisant cela, vous pouvez , par exemple , accéder à des dossiers tels que
/lib
et/usr/lib
sans y accéder/usr
. Liez simplement les arborescences de répertoires de votre choix aux répertoires que vous avez créés dans le répertoire jail.la source
firejail
est en cours d'exécution./bin
qui est installé par l'utilisateur root? @ Ben Combee"prison de chroot" est un terme impropre qui devrait vraiment disparaître, mais les gens continuent à l'utiliser.
chroot
est un outil qui vous permet de simuler un répertoire sur votre système de fichiers en tant que racine du système de fichiers. Cela signifie que vous pouvez avoir une structure de dossier du type:Si vous le
chroot foo
faitesls /
, vous verrez:En ce qui concerne
ls
(et tous les autres outils que vous utilisez), ce sont les seuls répertoires du système de fichiers. La raison pour laquelle "prison" est un terme impropre n'estchroot
pas destiné à forcer un programme à rester dans ce système de fichiers simulé; un programme qui sait qu'il se trouve dans une "prison" chroot peut assez facilement s'échapper, vous ne devez donc pas l'utiliserchroot
comme mesure de sécurité pour empêcher un programme de modifier des fichiers en dehors de votre système de fichiers simuléla source
chroot
"prison". Le cas que j'ai vu nécessite l'ascension des privilèges root. Est-il difficile d'empêcher un processus de passer aux privilèges root?chroot
. Pour cette raison, les gens se confondent souventchroot
etjails
veulent dire la même chose. Ils ne le font pas. Le terme "prison" aurait été inventé par Bill Cheswick quand il aurait mis en place un pot de miel pour attraper un cracker: csrc.nist.gov/publications/secpubs/berferd.pdfchroot jail
une bonne idée dans mon cas ?En gros, vous ne faites que changer le répertoire racine de votre environnement. Alors
devient
Lorsqu'une application accède à / ils obtiendront / une-prison /. De plus, l'application ne peut pas sortir de / some-jail /, vous savez donc qu'elle ne pourra accéder à rien d'autre sur votre ordinateur. C’est un moyen très simple de dire: «Hé, vous ne pouvez accéder qu’à ce que je vous donne, et vous ne pouvez accéder à rien d’autre sur le système.
la source
"Quand et pourquoi pourrais-je l'utiliser?"
Une utilisation est de tester des scripts (heure de démarrage et autres) qui font des références de chemin absolues, ou qui exécutent des commandes que vous pouvez vouloir intercepter et journaliser (et peut-être ne les optez pas) - dans un environnement où vous ne voudriez pas que ces commandes fonctionne réellement sur votre environnement de course.
Par exemple, j’ai un périphérique intégré fonctionnant sous Linux, je voudrais vérifier le fonctionnement de certains bash sans a) l’exécuter sur le périphérique réel (car j’ai de meilleurs outils sur mon bureau et que je ne souhaite pas maquiller le périphérique) b) en cours d’exécution pour de vrai sur mon bureau (puisque je ne veux pas que mon système de bureau soit foiré)
En outre, vous pouvez alors découvrir quelles commandes ou autres fichiers de script sont utilisés, car l'exécution se termine avec une erreur chaque fois qu'elle tente d'exécuter un script de commande ou un shell qui n'est pas présent dans la "prison chroot".
(Bien sûr, pour tout faire, vous pouvez utiliser QEMU, Docker ou une machine virtuelle, mais cela impliquerait de créer une image de machine virtuelle, etc. - beaucoup plus de travail)
la source