5. Utilisation de l'environnement chrooté

Maintenant que vous avez installé votre environnement chrooté, il y a au moins deux manières de l'utiliser. L'une consiste à s'y installer pour y lancer un programme, exactement de la même manière que nous avons lancé sshd ci-dessus. Seul root peut faire cela puisque chroot est limité à root pour son utilisation. Cela peut s'avérer intéressant pour certains programmes démons, tels que sshd justement, ou sendmail/postfix, des serveurs web ou ftp, des serveurs proxies et tout ce qui peut s'avérer sensible comme programme. A part sshd qui est un cas particulier, ces programmes sont utilisés dans de tels environnements chrootés quand on souhaite que si jamais un pirate réussit à s'immiscer sur le système via le programme, il se retrouve dans la prison qu'est l'environnement chrooté. S'il n'est pas root à ce moment là, il aura encore du travail. S'il est root, il pourra évidemment très facilement monter la véritable racine dans un répertoire et sortir de la prison avec un nouveau chroot qu'il aura ramené si vous ne lui en avez pas installé un:

# MAKEDEV generic (inutile si vous avez devfs et monté /dev comme expliqué ci-dessus)
# mkdir /mnt/racine
# mount /dev/hda1 /mnt/racine
# chroot /mnt/racine /bin/bash
	

Voici comment sortir de la prison du chroot quand on est root. Bien entendu, trouver la partition à monter se fait un peu à tatons, et en ce qui concernes les binaires MAKEDEV, mkdir, mount et chroot, le pirate peut amener avec lui des versions statiques de ceux-ci si vous ne les avez pas installés. Pourtant, cela ne lui facilite pas la vie.

Une autre manière d'utiliser votre environnement chrooté est de permettre aux utilisateurs de travailler dessus. C'est là que se trouve tout l'intérêt d'installer sshd et de le faire tourner, comme on a fait ci-dessus. Ainsi, vous pouvez limiter vos utilisateurs au niveau de la véritable racine, mais en créer dans l'environnement chrooté. Les utilisateurs arriveront donc dans la prison de l'environnement chrooté, et ne peuvent pas faire autant de choses qu'ils le souhaiteraient, mais que celles permises par les outils que vous laissez à leur disposition.

J'ai parlé de prison plusieurs fois. Un environnement chrooté est effectivement une prison de laquelle seul root peut sortir ou s'évader. Et encore, avec un noyau sur lequel on n'a pas installé de patchs de sécurité, même pas besoin d'être root. De plus, il y a plusieurs ouvertures à connaître dans un tel environnement, ouvertures qui dans certains cas peuvent véritablement devenir des failles de sécurité. Lancez la commande ps auxwww (vous aurez bien entendu installé ps dans la prison). Vous devriez voir les processus qui tournent hors de la prison. Ainsi, on sait tout de suite que l'on a affaire à un environnement chrooté. Autre ouverture: voyez /proc. Ou encore /dev si vous utilisez devfs. Ces répertoires contiennent des informations sur le système global, tel que la charge système. On peut donc voir ce qui se passe hors de la prison, même si on ne peut pas influer dessus. Autre faille de sécurité potentielle: où se trouve votre /mnt/chroot ? Est-ce sur la même partition que /var ? Que se passe-t-il si un utilisateur ou un processus remplit complêtement l'espace disque de la prison ? Il devient impossible d'utiliser /var, ce qui peut bloquer voire planter des processus qui tournent hors de la prison. /var est un exemple systématique, mais d'autres répertoires peuvent être impactés de la même manière. Pour vous protéger de cela, vous devez au minimum mettre en place un système de quotas, et au mieux avoir une partition dédiée à la prison.

Si lancer un démon dans un environnement vraiment sécurisé vous intéresse, sachez que sur freebsd par exemple, vous pouvez utiliser jail qui lui a vraiment été conçu pour la sécurité. Ce n'est pas le cas de chroot. Mais les applications de chroot ne se limitent pas à la sécurité. Chroot peut aussi servir à simplement avoir un environnement propre à une application, qui n'interagit pas avec une autre application, le tout sur un même système.

création est mise à disposition sous un contrat Creative Commons