Gentoo Logo

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


11. Les environnements chroot et les serveurs virtuels

Table des matières :

11.a. 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.2 : 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.

11.b. 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.


[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Voir tout

Dernière mise à jour le 2 avril 2010

Résumé : Isolez vos serveurs.

Kim Nielsen
Auteur

John P. Davis
Correcteur

Eric R. Stockbridge
Correcteur

Carl Anderson
Correcteur

Jorge Paulo
Correcteur

Sven Vermeulen
Correcteur

Benny Chuang
Correcteur

Sune Jeppesen
Correcteur

Tiemo Kieft
Correcteur

Zack Gilburd
Correcteur

Dan Margolis
Correcteur

FRLinux
Traducteur

Matthieu Montaudouin
Traducteur

Olivier Fisette
Traducteur

Clément Varaldi
Traducteur

Xavier Neys
Traducteur

José Fournier
Traducteur

Donate to support our development efforts.

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