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 <source lang="bash" inline>/usr/lib/stfp-server</source> dans le fichier <source lang="bash" inline>/etc/shells</source> 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 <source lang="bash" inline>/usr/lib/stfp-server</source> à la place de <source lang="bash" inline>/bin/bash</source>.
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
<source lang="bash">
- 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
</source>
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 <source lang="bash" inline>/etc/passwd</source> 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 <source lang="bash" inline>/etc/group</source> 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.