-
Configurer un serveur SFTP avec OpenSSH
Le but :
- permettre à des utilisateurs d'accéder à un espace de stockage personnel sur le serveur (via SSH).
- les utilisateurs n'ont pas le droit d'accéder en SSH au serveur, seulement en SFTP
- les utilisateurs doivent être chrootés (enfermés) dans un répertoire particulier sur le serveur (ils ne doivent pas pouvoir en sortir ni consulter l'arborescence antérieure).On peut utiliser un logiciel (Pro-FTP, VsFTPd etc..)... ou simplement utiliser OpenSSH...
ça se fait en un tour de main !
Je vous montre ici 2 méthodes.
La première est la plus simple, la seconde est un peu plus élaborée.Méthode 1 :
- On se met en root pour la suite !
su -
-
Création des groupes d'utilisateurs : Créer un groupe pour chaque utilisateur.
-
Création des utilisateurs : Créer les utilisateurs UTILISATEUR1, UTILISATEUR2, UTILISATEUR3 et UTILISATEUR4 sans shell de connexion pour des raisons de sécurité. Assurez-vous de les ajouter au groupe correspondant.
-
Définir les mots de passe des utilisateurs : Utiliser la commande
passwd
pour définir les mots de passe des utilisateurs. -
Création des répertoires : Créer les répertoires nécessaires pour chaque utilisateur.
-
Définir les permissions : Configurer les permissions pour le chroot.
-
Configuration de
sshd_config
: Modifier le fichier de configuration SSH pour activer le chroot et restreindre les utilisateurs.Ajouter/modifier les lignes suivantes :
-
Redémarrage du service SSH : Redémarrer le service SSH pour appliquer les modifications.
---------------------------------------------------------------------------------------------------------------------------------------
Méthode 2 :
On se met en root pour la suite !
su -
1) Créer le groupe dont les utilisateurs seront autorisés à se connecter en SFTP :
groupadd sftpexclusive
2) Créer un second groupe, qui lui, permettra de désactiver le compte d'un utilisateur :
groupadd nosftp
Vous l'aurez compris, le principe est très simple : si on veut désactiver le compte d'un utilisateur, il suffira de le rajouter au groupe nosftp avec la commande suivante : (le compte sera alors immédiatement désactivé)
usermod -G nosftp marcel
Peu importe qu'il soit aussi dans l'autre groupe, car l'instruction du groupe interdisant la connexion sera placée avant dans le fichier /etc/ssh/sshd_config (voir plus bas).
Pour réactiver le compte, il faudra sortir l'utilisateur du groupe.3) Ajouter le shell /usr/bin/false à la liste des shells autorisés
echo "/usr/bin/false" >> /etc/shells
Par défaut, ce shell n'est pas autorisé.
4) Créer l'utilisateur marcel, l'ajouter au groupe sftpexclusive, l'empêcher de se connecter en SSH, lui créer son répertoire d'accueil, lui attribuer un mot de passe et enfin s'occuper des permissions d'accès à son répertoire.
useradd -G sftpexclusive -s /sbin/nologin -m -d /SFTP/marcel marcel
/sbin/chown root:sftpexclusive /SFTP/marcel
chmod 755 /SFTP/marcel
Sur NetBSD, le raccourci de la commande chown ne fonctionne pas dans les scripts en shell standard, il faut indiquer le chemin complet (raison pour laquelle je le mets ici en entier).
5) modifier le fichier de configuration d'OpenSSH, /etc/ssh/sshd_config
- on va d'abord empêcher l'affichage des bannières d'accueil ainsi que du motd (je trouve ça drôlement emmerdant de voir que lorsqu'une connexion est refusée, openSSH vous présente qu'il s'agît d'un serveur NetBSD !! pas futefute ce truc !).
La commande suivante modifie directement le fichier sshd_config (à condition que vous n'ayez pas déjà modifié ces éléments avant.. sinon voir plus bas !)sed -i "" "s/#Banner none/Banner no\nPrintMotd no/" /etc/ssh/sshd_config
- on va modifier le serveur SFTP indiqué par défaut dans le fichier pour le passer sur le serveur SFTP interne
- on va également faire en sorte que les utilisateurs n'ait qu'accès à SFTP, les enfermer, et empêcher tout type de forwarding.
La commande suivante modifie directement le fichier sshd_config (à condition que vous n'ayez pas déjà modifié ces éléments avant.. sinon voir plus bas !)sed -i'' "s/\/usr\/libexec\/sftp-server/internal-sftp\n\nMatch Group nosftp\n ForceCommand \/usr\/bin\/false\n\nMatch Group sftpexclusive\n ChrootDirectory \/SFTP\/%u\n ForceCommand internal-sftp\n AllowTcpForwarding no\n X11Forwarding no\n/" /etc/ssh/sshd_config
Pour résumer le 5) :
voici ce que donne les 2 commandes imbuvables au-dessus dans votre fichier /etc/ssh/sshd_config :# no default banner path
Banner no
PrintMotd no
# override default of no subsystems
Subsystem sftp internal-sftp
Match Group nosftp
ForceCommand /usr/bin/false
Match Group sftpexclusive
ChrootDirectory /SFTP/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
6) On redémarre ssh :service sshd restart
Tags : openssh, sftp, fichiers, serveur, netbsd
- On se met en root pour la suite !
-
Commentaires