 |
Introduction
- "Chrooter" un Shell sous GNU/Linux ou tout autre système Unix permet d'enfermer un utilisateur qui se connecte dans son répertoire home et de limiter au maximum ses accès aux zones système de la machine qui l'accueille.
- Vous trouverez ci-dessous les étapes minimales pour chrooter un utilisateur dans un Shell Bash, mais bien entendu ces étapes sont applicables à tout autre Shell. Si vous souhaitez aller plus à fond dans la notion de chroot, n'hésitez pas à utiliser un moteur de recherche avec le mot-clé "chroot", un certains nombre de HOWTO beaucoup plus détaillés y sont référencés.
Etapes minimales
- Positionner le bit Suid de "/usr/sbin/chroot" pour qu'il ait le droit nécessaire d'enfermer le compte des utilisateurs.
- chmod +s /usr/bin/chroot (chroot doit alors avoir les droits -rwsr-sr-x)
- Créer un script Shell "/bin/chroot". Le contenu de ce script "/bin/chroot" est le suivant :
- #!/bin/bash
exec -c /usr/sbin/chroot /home/$USER /bin/bash
- Créer le compte de l'utilisateur que l'on va chrooter (ex : utilisateur invite_chroot) et lui changer son Shell d'origine dans le fichier /etc/passwd ce qui pourrait donner par ex :
- invite_chroot:x:512:50:"Utilisateur chrooté":/home/invite_chroot:/bin/chroot
- Commencer à créer l'environnement de l'utilisateur nécessaire au chroot
- mkdir /home/invite_chroot/bin ; mkdir /home/invite_chroot/lib
- cp /bin/bash /home/invite_chroot/bin
- Voir les librairies nécessaires à /bin/bash et les copier dans le répertoire /home/invite_chroot/lib
- ldd /bin/bash , pour voir les librairies nécessaires au bash, par ex :
- libertemcap.so.2 => /lib/libtermcap.so.2 (0x4001c0000)
- libdl.so.2 => /lib/libdl.so.2 (0x40020000)
- libc.so.6 => /lib/libc.so.6 (0x10022000)
- ...
- cp /lib/libtermcap.so.2 /home/invite_chroot/lib
- cp /lib/libdl.so.2 /home/invite_chroot/lib
- cp /lib/libc.so.2 /home/invite_chroot/lib
- ...
- Créer un répertoire /etc avec des propriétés resctrictives pour finir de cloisonner el chroot
- mkdir /home/invite_chroot/etc
- chmod 600 /home/invite_chroot/etc
- chown root:root /home/invite_chroot/etc
- Finalement personnalisez à votre convenance l'environnement de votre utilisateur chrooté ainsi que les commandes qu'il aura le droit d'utiliser. Par exemple :
- cp /bin/cp /home/invite_chroot/bin
- cp /bin/rm /home/invite_chroot/bin
- cp /bin/mv /home/invite_chroot/bin
- cp /usr/bin/ls /home/invite_chroot/bin
- ...
- Voilà, le minimum vital est fait, vous pouvez maintenant effectuer un test de connection avec cet utilisateur : invite_chroot est enfermé en cage (on parle également de jail) et ne voit absolument rien d'autre de votre système que ce vous avez défini dans son répertoire home.
Bien entendu vous pourrez à tout moment en tant que root continuer à personnaliser à loisir son environnement de travail.
|
 |