Création d’un serveur SFTP Chrooté via OpenSSH

Installation de Openssh
yum -y install openssh-server
Création du répertoire qui va accueillir le Chroot
mkdir /chroot_sftp
On s'assure d'avoir une version supérieur à la 4.9
ssh -V
On s'assure que root:root est propriétaire
chown root:root /chroot_sftp

Le répertoire chrooté doit impérativement appartenir à root (login:groupe).
Pour un autre utilisateur voir l’option « bind » de la commande mount.

Création du groupe sftpusers
addgroup sftpusers
Configuration d'Openssh
vi /etc/ssh/sshd_config

Il faut préciser ici, que l’on utilise le serveur sftp interne à OpenSSH.
Nous activons également le chroot sur le répertoire /chroot_sftp pour tous les utilisateurs du groupe sftpusers et nous interdisons, par mesure de sécurité, la redirection X11 ainsi que le tunnel TCP.

On commence par commenter et modifie le paramètre « Subsystem »:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Puis on met ça juste à la fin du fichier :

 Match Group sftpusers
ChrootDirectory /chroot_sftp
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no

Le partie « Match » doit absolument se trouver à la fin du fichier comme on peut le voir dans le man de sshd_config.

Match
Introduces a conditional block. If all of the criteria on the Match line are satisfied, the keywords on the following lines override those set in the global section of the config file, until either another Match line or the end of the file.

Création du compte client sftp1
useradd  --gid sftpusers --groups sftpusers -m --shell /bin/false -d /chroot_sftp sftp1
Création de son répertoire de travail sftp
mkdir /chroot_sftp/sftp1
chown sftp1:sftp1 /chroot_sftp/sftp1
chmod 700 /chroot_sftp/sftp1
On relance ssh
/etc/init.d/ssh restart
ou
systemctl restart sshd.service
Test de bon fonctionnement
sftp sftp1@localhost

 

Derniers Articles