Gentoo Logo

1.  Utiliser un environnement chroot

« Chrooter » un service (ou un utilisateur) est une façon de limiter son environnement afin qu'il n'accède qu'à l'essentiel sans pouvoir obtenir un accès (ou des informations) qui pourraient mener aux privilèges root. En démarrant un service par le biais d'un autre utilisateur que root (nobody, apache, named), un attaquant ne peut accéder aux fichiers qu'avec les permissions de cet utilisateur. Cela veut dire qu'un attaquant ne peut obtenir un accès root même si les services ont une faille de sécurité.

Certains services comme pure-ftpd et bind ont des fonctionnalités permettant d'utiliser chroot, mais pas tous. Si le service le supporte, profitez-en. Sinon, il vous faudra trouver un moyen de créer le vôtre. Voyons à présent comment créer un environnement chroot. Pour comprendre les bases, nous allons expérimenter avec bash. (Ce qui est une façon aisée d'apprendre à utiliser chroot.)

Créez le répertoire /chroot (mkdir /chroot) et cherchez quelles sont les bibliothèques dynamiques avec lesquelles bash est compilé (si la compilation a été faite avec le mode -static, ce n'est pas nécessaire) :

La commande suivante va créer une liste des bibliothèques utilisées par bash.

Exemple de code 1.1 : obtenir la liste des bibliothèques utilisées

# ldd /bin/bash
  libncurses.so.5 => /lib/libncurses.so.5 (0x4001b000)
  libdl.so.2 => /lib/libdl.so.2 (0x40060000)
  libc.so.6 => /lib/libc.so.6 (0x40063000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Créons à présent un environnement pour bash.

Exemple de code 1.1 : création d'un environnement chroot pour bash

# mkdir /chroot/bash
# mkdir /chroot/bash/bin
# mkdir /chroot/bash/lib

Copiez ensuite les fichiers utilisés par bash (/lib) dans le répertoire lib de l'environnement chroot et copiez la commande bash dans le répertoire bin du chroot. Cela devrait suffire pour recréer l'environnement, mais avec moins de fonctionnalités. Il ne vous reste qu'à l'essayer : chroot /chroot/bash /bin/bash. Si vous obtenez une invite vous donnant /, c'est gagné ! Dans le cas contraire, il devrait vous dire quel est le fichier manquant. Il se peut également que certaines bibliothèques partagées dépendent d'autres bibliothèques.

Vous remarquerez assez vite que, dans le chroot, rien ne marche à part echo. C'est parce que nous n'avons aucune autre commande dans notre environnement que bash et qu'echo est une fonction intégrée.

La méthode est la même pour créer un service en chroot. La seule différence est que les services se basent parfois sur des périphériques (« devices ») et des fichiers de configuration dans /etc. Copiez-les tout simplement (des périphériques peuvent être copiés avec cp -a) vers l'environnement chroot, éditez le script d'initialisation (init) pour qu'il utilise chroot avant de s'exécuter. Il peut être difficile de trouver quels périphériques et fichiers de configuration sont nécessaires. C'est ici que la commande strace devient utile. Démarrez le service avec /usr/bin/strace et notez les fonctions suivantes : open, read, stat et peut-être connect. Cela devrait vous donner une bonne idée des fichiers à copier. Dans la plupart des cas, copiez juste le fichier passwd (retirez tous les utilisateurs qui n'ont aucun rapport avec le service), /dev/zero, /dev/log et /dev/random.

1.  Le mode utilisateur Linux (« User Mode Linux »)

Une autre façon de créer un environnement plus sécurisé est de faire fonctionner une machine virtuelle. Une telle machine est, comme son nom l'indique, un processus exécuté par votre véritable système d'exploitation, et qui fournit un environnement matériel et un système d'exploitation qui donnent l'impression d'être une machine en soit. Le bénéfice, en ce qui a trait à la sécurité, est que si le serveur exécuté par la machine virtuelle est compromis, seul le serveur virtuel est affecté, et non pas l'installation mère.

Pour plus d'informations au sujet de l'installation du mode utilisateur Linux, consultez le User Mode Linux Guide.

Dernière mise à jour le 15 décembre 2005

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.