Mettre en place un accès SFTP en jail chroot pour un groupe spécifique

Lorsque cela est possible, il est préférable d’utiliser le protocole SFTP pour effectuer des transferts de fichiers sur un serveur plutôt que du FTP classique. Je vous propose aujourd’hui un petit mémo pour mettre en place un accès SFTP avec utilisateurs chrootés.

L’exemple de base est de donner un accès au fichiers d’un serveur web qui seront situé sous /var/www, dans mon cas sous CentOS 7.


Configuration du SFTP

  • Créer un groupe pour le SFTP :
    $ sudo groupadd sftp_users
  • Ajouter un utilisateur (ici web) pour le SFTP :
    $ sudo useradd web
  • Ajouter un mot de passe à l’utilisateur web :
    $ sudo passwd web
  • Ajouter l’utilisateur web au groupe pour le SFTP et lui attribuer le répertoire par défaut :
    $ sudo usermod -g sftp_users web
    $ sudo usermod -d /var/www web
  • Éditer le fichier de configuration du daemon SSH sous /etc/ssh/sshd_config.
    • Commenter la ligne suivante :
      #Subsystem sftp /usr/libexec/openssh/sftp-server
    • Ajouter ce qui suit :
      Subsystem sftp internal-sftp
      
      Match Group sftp_users
      	X11Forwarding no
      	AllowTcpForwarding no
      	ChrootDirectory %h
      	ForceCommand internal-sftp
  • Redémarrer le service SSH :
    $ sudo systemctl restart sshd
  • S’assurer que les permissions sont correctes pour le chroot, le répertoire /var/www doit appartenir à root et uniquement éditable par le propriétaire.

Test de l’accès SFTP

On teste l’accès en SFTP :

$ sftp web@mon-serveur
web@mon-serveur's password:
Connected to mon-serveur.
sftp> ls -l
drwxrwxr-x 2 0 48 4096 Oct 19 20:39 cgi-bin
drwxrwxr-x 2 0 48 4096 Mar 29 06:12 html
sftp> pwd
Remote working directory: /
sftp>

Test de l’accès SSH

L’accès ssh quant à lui est bien refusé :

$ ssh web@mon-serveur
web@mon-serveur's password:
This service allows sftp connections only.
Connection to mon-serveur closed.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *