Configurer un serveur SFTP avec OpenSSH sous Debian
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 le groupe du futur utilisateur :
groupadd UTILISATEUR1
- Création de l'utilisateur : Créez l'utilisateur UTILISATEUR1 sans shell de connexion pour des raisons de sécurité.
useradd -g UTILISATEUR1 -m -d /SFTP/UTILISATEUR1 -s /sbin/nologin UTILISATEUR1
- Définir le mot de passe de l'utilisateur : Utiliser la commande passwd pour définir le mot de passe.
passwd UTILISATEUR1
- Création des répertoires : Créez les répertoires qui accueilleront les données de l'utilisateur.
mkdir -p /SFTP/UTILISATEUR1/DATA
- Définir les permissions : Configurer les permissions pour le chroot.
chown root:root /SFTP
chmod 755 /SFTP
chown root:root /SFTP/UTILISATEUR1
chmod 755 /SFTP/UTILISATEUR1
chown UTILISATEUR1:UTILISATEUR1 /SFTP/UTILISATEUR1/DATA
chmod 700 /SFTP/UTILISATEUR1/DATA
- Configuration de sshd_config : Modifier le fichier de configuration SSH pour activer le chroot et restreindre les utilisateurs.
vi /etc/ssh/sshd_config
Ajouter/modifier les lignes suivantes (tout en bas du fichier :)
Subsystem sftp internal-sftp
Match Group UTILISATEUR1
ChrootDirectory /SFTP/UTILISATEUR1
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
- Redémarrage du service SSH : Redémarrer le service SSH pour appliquer les modifications.
systemctl restart sshd
Méthode 2 :
- On se met en root pour la suite !
su -
- Créer le groupe dont les utilisateurs membres seront autorisés à se connecter en SFTP :
groupadd sftpexclusive
- 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 UTILISATEUR1
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.
- Création de l'utilisateur : Créez l'utilisateur UTILISATEUR1 sans shell de connexion pour des raisons de sécurité et l'ajouter automatiquement au groupe sftpexclusive.
useradd -g sftpexclusive -m -d /SFTP/UTILISATEUR1 -s /sbin/nologin UTILISATEUR1
- Définir le mot de passe de l'utilisateur : Utiliser la commande passwd pour définir le mot de passe.
passwd UTILISATEUR1
- Création des répertoires : Créez les répertoires qui accueilleront les données de l'utilisateur.
mkdir -p /SFTP/UTILISATEUR1/DATA
- Définir les permissions : Configurer les permissions pour le chroot.
chown root:root /SFTP
chmod 755 /SFTP
chown root:root /SFTP/UTILISATEUR1
chmod 755 /SFTP/UTILISATEUR1
chown UTILISATEUR1:sftpexclusive /SFTP/UTILISATEUR1/DATA
chmod 700 /SFTP/UTILISATEUR1/DATA
- Modifier le fichier de configuration d'OpenSSH, /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group nosftp
ForceCommand /usr/bin/false
Match Group sftpexclusive
ChrootDirectory /SFTP/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
- Redémarrage du service SSH : Redémarrer le service SSH pour appliquer les modifications.
systemctl restart sshd
↑ Haut de page