Sftp-server
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:
- Création du groupe toto
- Ajout du paquet permettant la gestion des droits étendus
- Ajout des droits étendus sur le répertoire de travail pour permettre la lecture/écriture des développeurs
- Création de l'utilisateur ycharbi
- Création de l'utilisateur lesmorin
- 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.