Linux : ajouter un client sftp et le chrooter
UPDATE : voici le lien (merci Hervé !) que j’aurais dû lire avant de faire tout cela…
A vous de lire mon blog + celui qui suit et de prendre le meilleur de chacun pour aller au plus vite !
Restrict SSH User Access to Certain Directory Using Chrooted Jail
Voici ce qu’il faut savoir (et qui m’a pris le plus de temps) : pour chrooter vraiment un utilisateur, il faut lui mettre les ordres de commande minimales requises dans un dossier bin
et l’autre dossier qui gère les entrées-sorties dev
. Et puis ajouter configurer le serveur ssh pour préciser « que du sftp
, pas de ssh
». Ce n’est presque jamais documenté dans les sites d’exemples que vous trouverez sur le Web, merci unix.stackexchange !
Dans mon cas, voici tous les ordres que j’ai faits, et qui font qu’au final tout a fonctionné. Si ça se trouve il y en a un ou deux qui sont inutiles… mais je n’ai pas le temps de tout parfaitement nettoyer, je vous dis ce que j’ai compris des ordres, à ma manière :
- Installer une ligne de commande shell qui peut fonctionner sans aucune dépendance :
apt-get install bash-static
- Ajouter l’utilisateur thomas en précisant le nom du shell à lancer :
useradd -m -c /home/thomas -s /home/thomas/bin/sh thomas
- Changer son mot de passe :
passwd thomas
- S’assurer que le
home
de Thomas appartient bien à root et est en 755 (sinon ssh refuse la connexion) :
chmod 755 /home/thomas ; chown root: /home/thomas
- Créer les dossiers
bin
etdev
:
mkdir /home/thomas/bin
mkdir /home/thomas/dev
cp /bin/bash-static /home/thomas/bin/sh
- Ensuite il faut copier puis exécuter ce code, mais je ne sais pas trop à quoi ça sert :
cp /dev/MAKEDEV /home/thomas/dev/
cd /home/thomas/dev/ && ./MAKEDEV
- Enfin le plus important : configurer le serveur sshd
vim /etc/ssh/sshd_config
Et y ajouter ces lignes, qui précisent où chrooter et (surtout) qu’on n’autorise que le sftp :
Match user thomas
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
C’est le tout dernier ordre, toute dernière ligne qui m’a fait perdre énormément de temps !