5.10. Paranoïa généralisée du suid et du chroot
chroot
est l'une des plus puissantes possibilités pour restreindre un démon, un utilisateur ou un autre service. Imaginez simplement une prison autour de votre cible, de laquelle votre cible ne peut s'échapper (normalement, mais il y a encore beaucoup de conditions qui peuvent permettre de s'échapper d'une telle prison). Si vous ne faites pas confiance à l'utilisateur ou au service, vous pouvez créer un environnement racine modifié pour lui. Cela peut utiliser pas mal d'espace disque car vous devez copier tous les exécutables nécessaires, ainsi que des bibliothèques, dans la prison. Mais alors, même si l'utilisateur fait quelque chose de malveillant, l'étendue des dommages est limitée à la prison.
Un grand nombre de services fonctionnant en démons pourraient bénéficier de ce type d'arrangement. Les démons que vous installez dans votre distribution Debian ne seront cependant pas fournis chrootés
par défaut.
Exemples : serveurs de noms de domaine (comme
bind
), serveurs web (comme
apache
), serveurs de courrier (comme
sendmail
) et serveurs FTP (comme
wu-ftpd
). La complexité de BIND est probablement la raison pour laquelle il a été exposé à de nombreuses attaques ces dernières années (consultez
Section 5.7, « Sécurisation de BIND »).
De toute façon, si vous exécutez un quelconque service sur votre système, vous devriez considérer de le faire fonctionner de la façon la plus sécurisée possible. Cela comprend : révoquer les droits du superutilisateur, le faire fonctionner dans un environnement restreint (comme une prison chroot) ou le remplacer par un équivalent plus sécurisé.
Cependant, soyez prévenu qu'une prison chroot
peut être cassée si l'utilisateur fonctionnant dedans est le superutilisateur. Vous devez donc faire fonctionner le service avec un utilisateur sans droits élevés. En limitant son environnement, vous limitez les fichiers lisibles et exécutables par tout le monde auxquels le service peut accéder, vous limitez donc aussi les possibilités d'une augmentation de droits en utilisant des failles de sécurité sur le système local. Même dans une situation où vous ne pouvez pas être complètement certain qu'il n'y a pas de moyen pour un attaquant intelligent de sortir de la prison d'une manière ou d'une autre. Utiliser seulement des programmes serveur ayant une réputation de sécurité est une bonne mesure de sécurité additionnelle. Même des trous minuscules comme des descripteurs de fichier peuvent être utilisés par un attaquant doué pour s'introduire dans le système. Après tout, chroot
n'a pas été conçu pour être un outil de sécurité, mais un outil de test.
5.10.1. Créer des environnements chrooté automatiquement
Plusieurs programmes permettent de chrooter automatiquement des serveurs et services. Debian fournit actuellement (accepté en mai 2002) chrootuid
de Wietse Venema dans le paquet chrootuid, ainsi que compartment et makejail. Ces programmes peuvent être utilisés pour mettre en place un environnement restreint pour exécuter tout programme (chrootuid
vous permet même de l'exécuter avec un utilisateur restreint).
Certains de ces outils peuvent être utilisés pour mettre en place l'environnement chrooté facilement. Le programme
makejail
, par exemple, peut créer et mettre à jour une prison chroot avec de petits fichiers de configuration (il fournit des fichiers de configuration exemple pour
bind
,
apache
,
postgresql
et
mysql
). Il tente de deviner et d'installer dans la prison tous les fichiers nécessaires au démon en utilisant
strace
,
stat
et les dépendances du paquet Debian. De plus amples renseignements sont disponibles à
http://www.floc.net/makejail/.
Jailer
est un outil semblable disponible à
http://www.balabit.hu/downloads/jailer/ et en paquet Debian.