SFTP (SSH File Transfer Protocol) est un protocole de fichier sécurisé utilisé pour accéder, gérer et transférer des fichiers via une session de transport SSH cryptée. La sécurité d'abord est une règle empirique pour les administrateurs système. Dans certains cas, nous devons autoriser les utilisateurs distants à accéder au système de fichiers sur notre système, mais vous ne voulez pas leur permettre d'obtenir un shell. Cela vous permettra d'avoir un canal sécurisé pour fournir un accès limité à des fichiers et répertoires spécifiques.
Ce tutoriel vous aidera à configurer l'accès SFTP uniquement (sans accès au shell) sur le système Debian 11. Il créera un environnement chroot sur votre système pour limiter l'utilisateur SFTP à un répertoire spécifique uniquement. En outre, cela autorisera uniquement l'accès SFTP sans accès SSH à l'utilisateur.
Prérequis
- Un système Linux Debian 11 Bullseye en cours d'exécution
- Vous devez avoir un compte privilégié sudo avec accès au shell
Étape 1 - Créer un nouvel utilisateur
Tout d'abord, créez un nouvel utilisateur pour vous connecter au serveur sftp. La commande suivante créera un nouveau compte nommé sftpuser sans accès au shell. Vous pouvez utiliser n'importe quel nom de votre choix ou exigence.
sudo adduser --shell /bin/false sftpuser
Étape 2 - Créer un répertoire pour l'accès SFTP
Vous avez créé un utilisateur pour sftp. Maintenant, créez un répertoire à configurer comme chroot pour le sftp. Pour cet exemple, je vais créer un /var/sftp annuaire. Le répertoire doit avoir la propriété root pour être configuré en tant que répertoire chroot. Nous allons donc créer un sous-répertoire sous /var/sftp avec un accès en écriture au compte sftp.
Créez la structure de répertoire avec la commande suivante :
sudo mkdir -p /var/sftp/files
Ensuite, nous devons définir les autorisations appropriées sur les répertoires à configurer en tant qu'accès chroot avec accès en écriture à l'utilisateur. Ici, /var/sftp doit avoir la propriété root et le groupe avec les autorisations appropriées. Pour définir cette autorisation, saisissez :
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
Maintenant, changez l'autorisation pour les "files"
répertoire pour autoriser l'accès en écriture à sftpuser. Pour définir ces autorisations, saisissez :
sudo chown sftpuser:sftpuser /var/sftp/files
Une fois que le sftpuser se connecte au serveur, il obtiendra /var/sftp comme répertoire racine. Il ne peut pas accéder au système de fichiers en dehors de celui-ci. De plus, l'utilisateur peut lire/écrire des fichiers uniquement dans le répertoire "files".
Étape 3 - Configurer sshd pour SFTP uniquement
Ensuite, vous devez configurer le serveur SSH pour permettre au "sftpuser" de se connecter au serveur avec sFTP uniquement sans accès au shell. Pour apporter les modifications nécessaires, modifiez le fichier de configuration SSH.
sudo nano /etc/ssh/sshd_config
et ajoutez les paramètres suivants à la fin du fichier.
Match User sftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Vérifiez que tous les paramètres sont corrects. Enregistrez ensuite les modifications et redémarrez le service SSH pour appliquer les modifications.
sudo systemctl restart ssh
Tout est fait, l'utilisation SFTP uniquement est créée avec succès sur votre système Debian. Essayez maintenant de vous connecter au système distant avec les informations d'identification du nouvel utilisateur et vérifiez si tout fonctionne correctement.
Étape 4 – Se connecter au SFTP
On peut se connecter à un serveur SFTP distant en utilisant une ligne de commande ou des applications graphiques comme Filezilla ou WinSCP. Dans ce tutoriel, je vais vous montrer les deux manières de connecter un serveur SFTP.
Les utilisateurs Linux peuvent utiliser l'utilitaire de ligne de commande sftp pour se connecter à des instances sftp distantes.
sftp [email protected]
[email protected]'s password:
sftp>
L'interface graphique ou les utilisateurs Windows peuvent utiliser des clients sftp graphiques. Par exemple, utilisez le client Filezilla pour connecter un compte sftp distant uniquement sur le système distant.
Vérifiez qu'il n'y a pas d'accès au shell :
Comme ce compte est configuré pour une connexion SFTP uniquement. Ainsi, si un utilisateur tente de se connecter via SSH, il sera déconnecté immédiatement après une authentification réussie. L'utilisateur recevra le message ci-dessous :
ssh [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to sftp.tecadmin.net closed.
Conclusion
Dans ce guide pratique, vous avez appris à créer un environnement de prison chroot pour les utilisateurs SFTP sans accès shell au serveur. L'environnement Chroot sécurise le système de fichiers en empêchant les utilisateurs d'accéder aux fichiers en dehors du répertoire défini. Ce tutoriel est créé et testé avec le système Debian 11 Bullseye mais cela fonctionnera sur d'autres versions de Debian.