Introduction
Dans ce tutoriel, nous allons voir comment configurer un serveur SFTP chrooté sur Debian. Le chroot est une technique qui permet d’isoler un processus et de le restreindre à un sous-ensemble du système de fichiers. En utilisant chroot pour SFTP, nous pouvons restreindre les utilisateurs à un répertoire spécifique, ce qui empêche l’accès à d’autres fichiers sur le système.
Nous allons également configurer les options de sécurité du serveur SFTP pour limiter les commandes et les fonctionnalités disponibles pour les utilisateurs SFTP. En fin de compte, vous aurez un serveur SFTP sécurisé et fonctionnel que vous pourrez utiliser pour transférer des fichiers de manière fiable et sécurisée.
Mise en place du serveur SFTP
Si le paquet openssh-server n’est pas installé, vous pouvez l’e’ajouter avec les commandes suivantes:
sudo apt-get update sudo apt-get install openssh-server
Créez un utilisateur qui aura accès au SFTP :
sudo adduser sftpuser
Remplacez « sftpuser » par le nom d’utilisateur de votre choix et suivez les instructions pour définir un mot de passe.
Créez un répertoire pour stocker les fichiers SFTP, dans notre exemple, ce sera /var/sftp
:
sudo mkdir /var/sftp
Changez le propriétaire et le groupe du répertoire en sftpuser :
sudo chown sftpuser:sftpuser /var/sftp
Éditez le fichier de configuration /etc/ssh/sshd_config pour ajouter les options suivantes en bas de fichier:
Match User sftpuser ChrootDirectory /var/sftp ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
Expliquons le code ci-dessus:
Match User sftpuser
: Cette ligne indique que les configurations suivantes s’appliqueront uniquement à l’utilisateur « sftpuser ». Si vous avez plusieurs utilisateurs SFTP, vous pouvez ajouter plusieurs blocs « Match User » avec des noms d’utilisateurs différents.ChrootDirectory /var/sftp
: Cette ligne définit le répertoire racine pour l’utilisateur « sftpuser ». Il sera chrooté dans ce répertoire et ne pourra pas accéder à des fichiers ou des répertoires à l’extérieur de ce répertoire. Cela permet de sécuriser le serveur SFTP et d’empêcher les utilisateurs SFTP d’accéder à d’autres fichiers sur le système.ForceCommand internal-sftp
: Cette ligne indique que la commande SFTP sera la seule commande disponible pour l’utilisateur « sftpuser ». Cela garantit que l’utilisateur ne peut pas exécuter de commandes sur le shell du système.AllowTcpForwarding no
: Cette ligne désactive la redirection de port TCP pour l’utilisateur « sftpuser ». Cela empêche l’utilisateur de créer des tunnels de port et de contourner les restrictions de pare-feu.X11Forwarding no
: Cette ligne désactive le transfert X11 pour l’utilisateur « sftpuser ». Cela e
Pour appliquer les changements, redémarrez le service SSH pour appliquer les modifications :
sudo systemctl restart sshd
Il ne vous reste plus qu’à tester la connexion SFTP en utilisant un client SFTP tel que FileZilla, ou WinSCP apr exemple. Assurez-vous que vous vous connectez en utilisant l’utilisateur « sftpuser » et que vous pouvez transférer des fichiers vers et depuis le répertoire /var/sftp
.