« Sftp-server » : différence entre les versions

De Wiki doc

(Page créée avec « Category:shell =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="ba... »)
 
(→‎Configuration du serveur SSH : Ajout de l'étape du rechargement du service SSH.)
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
[[Category:shell]]
[[Category:shell]]
=N'autoriser que le SFTP=
=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 :
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
  echo '/usr/lib/stfp-server' >> /etc/shells
et définir le shell de connexion de l'utilisateur souhaité
et définir le shell de connexion de l'utilisateur souhaité
  vim /etc/passwd
  vim /etc/passwd
Mettre <source lang="bash" inline>/usr/lib/stfp-server</source> à la place de <source lang="bash" inline>/bin/bash</source>.
Mettre <source lang="bash" inline>/usr/lib/stfp-server</source> à la place de <source lang="bash" inline>/bin/bash</source>.
=Source=
 
https://debian-administration.org/article/94/How_to_restrict_users_to_SFTP_only_instead_of_SSH
==Source de la section==
* https://debian-administration.org/article/94/How_to_restrict_users_to_SFTP_only_instead_of_SSH
 
=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.
 
{{info|Le ''chroot'' du serveur [[Openssh|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 [https://linux.die.net/man/5/sshd_config 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_linux#Droits_.C3.A9tendus|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.
 
==Sources de la section==
* https://passingcuriosity.com/2014/openssh-restrict-to-sftp-chroot/
* https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Dernière version du 7 juillet 2019 à 19:05


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