Créer un chroot jail pour ssh

modifié le : 13 septembre 2022,
par Guillaume Chéramy
 

Il arrive souvent d'avoir besoins de donner des autorisations à un utilisateur sur un serveur sans que cet utilisateur n'ai trop de droits, par exemple naviguer dans le système de fichiers. sudo à ses limites.

La solution est de chrooter la connexion ssh de l'utilisateur en lui donnant une liste de commandes restreinte.

Pour cela on va utiliser un petit script qui permet de créer cet environnement (il est bien sur possible de le créer à la main mais bon on est toujours un peu faineant nous les admins).

Télécharger le script suivant http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh.html

Ce script date un peu mais il fait ce qu'on lui demande et c'est le principal.

Donnez les droits d'exécution sur ce script. Et exécutez le simplement comme ceci :

# make_chroot_jail.sh toto

Ce qui va créer la prison dans le répertoire /home/jail et l'utilisateur toto aura son homedirectory dans /home/jail/home/toto

Suffit ensuite de modifier le fichier /etc/ssh/sshd_config pour autoriser l'utilisateur à se connecter (si jamais vous restreignez les accès avec AllowUsers ou AllowGroup).

La liste des applications disponibles se trouve dans la variable APPS, voici par exemple pour Debian :

elif [ "$DISTRO" = DEBIAN ]; then
  APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync 
/usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/touch /bin/cat"

Donc pour rajouter des commandes, il suffit de les rajouter dans cette variable et de faire :

# make_chroot_jail.sh update

NB : il faut déconnecter les utilisateurs pour faire cette mise à jour