SFTP signifie Secure File Transfer Protocol / SSH File Transfer Protocol, c'est l'une des méthodes les plus courantes utilisées pour transférer des fichiers en toute sécurité via ssh de notre système local vers un serveur distant et vice-versa. Le principal avantage de sftp est que nous n'avons pas besoin d'installer de package supplémentaire à l'exception de 'openssh-server ', dans la plupart des distributions Linux, le package 'openssh-server' fait partie de l'installation par défaut. L'autre avantage de sftp est que nous pouvons permettre à l'utilisateur d'utiliser sftp uniquement et non ssh.
Récemment Debian 10, le nom de code 'Buster' a été publié, dans cet article, nous allons montrer comment configurer sftp avec Chroot 'Jail' comme environnement dans le système Debian 10. Ici, un environnement de type Chroot Jail signifie que les utilisateurs ne peuvent pas aller au-delà de leurs répertoires personnels respectifs ou que les utilisateurs ne peuvent pas changer de répertoire à partir de leurs répertoires personnels. Voici les détails de l'atelier :
- SE =Debian 10
- Adresse IP =192.168.56.151
Passons aux étapes de configuration SFTP,
Étape :1) Créez un groupe pour sftp à l'aide de la commande groupadd
Ouvrez le terminal, créez un groupe avec un nom "sftp_users ” en utilisant la commande groupadd ci-dessous,
[email protected]:~# groupadd sftp_users
Étape :2) Ajouter des utilisateurs au groupe "sftp_users" et définir les autorisations
Si vous souhaitez créer un nouvel utilisateur et ajouter cet utilisateur au groupe "sftp_users", exécutez la commande suivante,
Syntaxe : # useradd -m -G sftp_users
Supposons que le nom d'utilisateur est 'Jonathan'
[email protected]:~# useradd -m -G sftp_users jonathan
définissez le mot de passe à l'aide de la commande chpasswd suivante,
[email protected]:~# echo "jonathan:<enter_password>" | chpasswd
Si vous souhaitez ajouter des utilisateurs existants au groupe 'sftp_users' puis exécuter sous la commande usermod, supposons que le nom d'utilisateur déjà existant est 'chris'
[email protected]:~# usermod -G sftp_users chris
Définissez maintenant les autorisations requises sur les utilisateurs,
[email protected]:~# chown root /home/jonathan /home/chris/
Créez un dossier de téléchargement dans le répertoire personnel de l'utilisateur et définissez le propriétaire correct,
[email protected]:~# mkdir /home/jonathan/upload [email protected]:~# mkdir /home/chris/upload [email protected]:~# chown jonathan /home/jonathan/upload [email protected]:~# chown chris /home/chris/upload
Remarque : Des utilisateurs comme Jonathan et Chris peuvent télécharger des fichiers et des répertoires pour télécharger un dossier à partir de leurs systèmes locaux.
Étape :3) Modifier le fichier de configuration sftp (/etc/ssh/sshd_config)
Comme nous l'avons déjà dit, les opérations sftp sont effectuées via ssh, donc son fichier de configuration est "/etc/ssh/sshd_config ", Avant d'apporter des modifications, je suggérerais d'abord de prendre la sauvegarde, puis de modifier ce fichier et d'ajouter le contenu suivant,
[email protected]:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org [email protected]:~# vim /etc/ssh/sshd_config ……… #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp …………
Enregistrez et quittez le fichier.
Pour apporter les modifications ci-dessus à l'effet, redémarrez le service ssh à l'aide de la commande systemctl suivante
[email protected]:~# systemctl restart sshd
Dans le fichier "sshd_config" ci-dessus, nous avons commenté la ligne qui commence par "Sous-système" et ajouté une nouvelle entrée "Sous-système sftp internal-sftp" et de nouvelles lignes comme,
"Match Group sftp_users" -> Cela signifie que si un utilisateur fait partie du groupe "sftp_users", appliquez les règles mentionnées ci-dessous à cette entrée.
"RépertoireChroot %h ” –> Cela signifie que les utilisateurs ne peuvent changer de répertoire que dans leurs répertoires personnels respectifs, ils ne peuvent pas aller au-delà de leurs répertoires personnels, ou en d'autres termes, nous pouvons dire que les utilisateurs ne sont pas autorisés à changer de répertoire, ils obtiendront un environnement de type jai dans leurs répertoires et pourront n'accède pas aux répertoires des autres utilisateurs et systèmes.
"ForceCommand interne-sftp ” –> Cela signifie que les utilisateurs sont limités à la commande sftp uniquement.
Étape 4) Tester et vérifier sftp
Connectez-vous à tout autre système Linux qui se trouve sur le même réseau que votre serveur sftp, puis essayez de vous connecter au serveur ssh sftp via les utilisateurs que nous avons mappés dans le groupe "sftp_users".
[[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]#
Ci-dessus confirme que les utilisateurs ne sont pas autorisés à utiliser SSH, essayez maintenant sftp en utilisant les commandes suivantes,
[[email protected] ~]# sftp [email protected] [email protected]'s password: Connected to 192.168.56.151. sftp> ls -l drwxr-xr-x 2 root 1001 4096 Sep 14 07:52 debian10-pkgs -rw-r--r-- 1 root 1001 155 Sep 14 07:52 devops-actions.txt drwxr-xr-x 2 1001 1002 4096 Sep 14 08:29 upload
Essayons de télécharger un fichier en utilisant sftp 'get ‘ commande
sftp> get devops-actions.txt Fetching /devops-actions.txt to devops-actions.txt /devops-actions.txt 100% 155 0.2KB/s 00:00 sftp> sftp> cd /etc Couldn't stat remote file: No such file or directory sftp> cd /root Couldn't stat remote file: No such file or directory sftp>
La sortie ci-dessus confirme que nous sommes en mesure de télécharger le fichier de notre serveur sftp sur la machine locale et en dehors de cela, nous avons également testé que les utilisateurs ne peuvent pas changer de répertoire.
Essayons de télécharger un fichier sous "télécharger ” dossier,
sftp> cd upload/ sftp> put metricbeat-7.3.1-amd64.deb Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb metricbeat-7.3.1-amd64.deb 100% 38MB 38.4MB/s 00:01 sftp> ls -l -rw-r--r-- 1 1001 1002 40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb sftp>
Cela confirme que nous avons réussi à télécharger un fichier de notre système local vers le serveur sftp.
Testez maintenant le serveur SFTP avec l'outil winscp, entrez l'adresse IP du serveur SFTP avec les informations d'identification de l'utilisateur,
Cliquez sur Connexion, puis essayez de télécharger et de télécharger des fichiers
Essayez maintenant de télécharger des fichiers dans le dossier de téléchargement,
La fenêtre ci-dessus confirme que le téléchargement fonctionne également correctement, c'est tout de cet article. Si ces étapes vous aident à configurer le serveur SFTP avec un environnement chroot dans Debian 10, veuillez partager vos commentaires et commentaires.