CHROOT
Une autre doc pour chrooté un utilisateur sur n'importe quelle distri : http://www.lea-linux.org/documentations/index.php/Admin-admin_env-chroot
#!/bin/bash # On vérifie que le nom de l'utilisateur souhaité est bien passé en paramêtre if [ "$#" != 1 ]; then echo "Usage : $0 <login>" exit 255; fi # Nom d'utilisateur LOGIN=$1 # Groupe attribué à l'utilisateur GROUP=chroot # Répertoire par défaut des shell chrootés dir=/home/chroot script_login_chroot=/bin/chrootshell echo -e "#!/bin/bash\nexec -c /usr/sbin/chroot $HOME /bin/bash" >> $script_login_chroot chmod +x $script_login_chroot #On rajoute le shellau shells connus if [ `grep $script_login_chroot /etc/shells | wc -l` -lt 1 ] ; then echo $script_login_chroot >> /etc/shells fi # Utilitaires OUTILB="bash cat grep awk sed ls ln socat" mkdir -p "$dir" echo "-- Création du groupe \"${GROUP}\"" groupadd "${GROUP}" > /dev/null 2>&1 echo "-- Création de l'utilisateur \"${LOGIN}\"" useradd \ -c "Utilisateur en espace restreint" \ -d "$dir/${LOGIN}" \ -g "${GROUP}" \ -s "$script_login_chroot" \ "${LOGIN}" echo "-- Son mot de passe : " passwd "${LOGIN}" > /dev/null echo "-- Création de l'arborescence de son Répertoire personnel --" mkdir -p $dir/${LOGIN}/dev/ # Mise en place des droits sur les répertoires cd $dir chmod -R 700 ${LOGIN} # Copie des programmes et de leurs librairies for I in $OUTILB; do bin=`which $I` mkdir -p "`dirname $dir/$LOGIN/$bin`" && cp -aL "$bin" "$dir/$LOGIN/$bin" # Pour chaque programme, on recherche les librairies correspondantes. # On termine en demandant l'exécution par bash des lignes renvoyées par awk for lib in `ldd $bin | awk '{ print $3 }' | grep ^/` `ldd $bin | awk '{ print $1 }' | grep ^/` do mkdir -p `dirname $dir/$LOGIN/$lib` && cp -aL "$lib" "$dir/$LOGIN/$lib" done done # Création de l'espace /dev mknod $dir/${LOGIN}/dev/null c 1 3 -m 666 chown -R "${LOGIN}:${GROUP}" $dir/${LOGIN} # Fin de la création du compte utilisateur. echo ">> Utilisateur \"${LOGIN}\" créée et emprisonné" chmod u+s `which chroot`
Debian / Ubuntu
Nous allons voir comment créer un chroot, afin de “cloisonner” un peu l’environnement de l’utilisateur par rapport au système.
Les packages nécessaires :
sudo apt-get install debootstrap chroot
Tout d’abord il nous faut un répertoire d’accueil pour notre nouveau système. Personellement je l’ai mis dans /data pour bien tout concentrer sur la même partition.
mkdir /data/chroot-ssh
Ensuite nous allons utiliser debootstrap. C’est un outils extrèmement pratique pour créer des chroots.
Attention aux utilisateurs de kernels patchés avec grsec. Vous risquez de rencontrer des difficultés à créer votre chroot. Le plus simple est de le faire depuis une autre machine puis de transférer le contenu du chroot.
Si vous souhaitez créer un chroot debian stable :
debootstrap etch /data/chroot-ssh/ http://ftp.fr.debian.org/debian
Si vous souhaitez créer un chroot debian testing :
debootstrap lenny /data/chroot-ssh/ http://ftp.fr.debian.org/debian
Tout un processus se déroule, il télécharge tous les éléments nécessaire à la création du chroot.
Une fois que vous avez le message comme quoi tout s’est bien passé, il est nécessaire de monter certaines partitions indispensable :
mount -o bind /dev /data/chroot-ssh/dev mount -o bind /proc /data/chroot-ssh/proc
Et si vous utilisez vhffs-fs :
mount -o bind /chemin/vers/montage/fuse /data/chroot-ssh/home
N’oubliez pas de modifier /etc/fstab en conséquence en rajoutant :
/dev /data/chroot-ssh/dev none rw,bind 0 0 /proc /data/chroot-ssh/proc none rw,bind 0 0 /chemin/vers/montage/fuse /data/chroot-ssh/home none rw,bind
Ensuite vous pouvez entrer dans votre nouveau chroot :
chroot /data/chroot-ssh/ /bin/bash
La première chose à faire est de configurer les locales
dpkg-reconfigure locales
puis le fuseau horaire
dpkg-reconfigure tzdata
Une fois tout ça fait, il faut au moins lancer dans votre chroot syslogd
/etc/init.d/sysklogd start
Vous voilà donc avec un système vierge, totalement isolé du reste. On y installe des applis, on le met à jour comme une vraie machine. Il vous faut donc installer ssh pour continuer.
Attention avant d’installer ssh que celui-ci ne rentre pas en conflit avec celui que vous utilisez pour vous connecter sur le serveur. Il vous faut choisir un port distinct pour chaque ssh !
Pour installer ssh dans votre chroot, rien de plus simple :
apt-get install ssh
Enfin, pour que les utilisateurs soient reconnus, n’oubliez pas de les déclarer, en utilisant nss ou par la methoque que vous avez déjà choisi. Si vous utilisez libnssSQLite, vous devez regénérer les fichiers (hors chroot, bien entendu) avec l’option –force-homedir /home et mettre les fichiers générés dans /data/chroot-ssh/var/db