Sftp-server

De Wiki doc


N'autoriser que le SFTP

Pour limiter l'accès à un utilisateur au seul transfert de fichier via SFTP (SSH), il faut ajouter le shell /usr/lib/stfp-server dans le fichier /etc/shells avec cette commande :

echo '/usr/lib/stfp-server' >> /etc/shells

et définir le shell de connexion de l'utilisateur souhaité

vim /etc/passwd

Mettre /usr/lib/stfp-server à la place de /bin/bash.

Source de la section

Limiter le SFTP d'un groupe utilisateurs à un répertoire

Cette section va expliquer la mise en œuvre d'un chroot pour le shell SFTP d'un groupe utilisateurs.

Pour cette partie, je vais prendre pour exemple deux personnes qui travaillent sur un même projet WEB et doivent apporter des modifications simultanées sur le site.

INFORMATION

Le chroot du serveur OpenSSH est un peu bizarre (pour ne pas dire merdique). Il n'autorise la racine qu'à l'utilisateur "root" (et seulement lui). Aucun autre utilisateur ne doit avoir de droits dans le répertoire de destination du chroot ("/var/www" dans mon cas). Ce détail est expliqué dans la section ChrootDirectory du manuel. Il est donc obligatoire d'avoir deux niveaux de répertoire: la racine (en droit root uniquement) et le répertoire de travail (avec les droits des utilisateurs) contenu dans la nouvelle racine.

Configuration du serveur SSH

Il va falloir changer le module SFTP pour pouvoir supporter cette fonctionnalité et ajouter une section propre au groupe utilisateurs à limiter.

vim /etc/ssh/sshd_config
# Remplacer le sous système SFTP par défaut par le module adéquat.                   
#Subsystem      sftp    /usr/lib/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match group toto
  # Forcer la connexion à utiliser SFTP et changer la racine au répertoire requis.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/
  # Désactiver la tunnelisation, l'agent d'authentification ainsi que le routage TCP et X11.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

Recharger la configuration du service:

systemctl reload ssh

Configuration de la partie utilisateurs

groupadd toto
apt install acl
setfacl -Rm g:toto:rwx,u:www-data:rw-,o:--- /var/www/notresite/
useradd ycharbi
useradd lesmorin
usermod -s /usr/lib/sftp-server ycharbi
usermod -s /usr/lib/sftp-server lesmorin

Ces commandes ont pour effet:

  1. Création du groupe toto
  2. Ajout du paquet permettant la gestion des droits étendus
  3. Ajout des droits étendus sur le répertoire de travail pour permettre la lecture/écriture des développeurs
  4. Création de l'utilisateur ycharbi
  5. Création de l'utilisateur lesmorin
  6. Les deux dernières commandes auront pour effet de changer le shell des utilisateurs. Elles modifient le fichier /etc/passwd comme suit:
ycharbi:x:1000:1000::/home/ycharbi:/usr/lib/sftp-server
lesmorin:x:1001:1001::/home/lesmorin:/usr/lib/sftp-server

Modifier le fichier /etc/group afin de mettre vos utilisateurs dans le groupe concerné par le chroot (toto en l'occurrence):

ycharbi:x:1000:
mysql:x:112:
ssl-cert:x:113:
toto:x:1001:ycharbi,lesmorin
lesmorin:x:1002:

Vous avez maintenant un accès SFTP limité au répertoire donné sur le serveur de développement.

Sources de la section