Afin d'autoriser la fonctionnalité ChrootDirectory sur une base par utilisateur, utilisez une configuration sshd exécutée de manière conditionnelle (en utilisant le "Match ” mot-clé) dans le sshd_config dossier. La configuration de ChrootDirectory sur un groupe spécifique garantit que les utilisateurs de ce groupe ne peuvent pas sortir de leur répertoire personnel, garantissant ainsi qu'aucun autre utilisateur n'est affecté.
1. Créez un groupe pour les utilisateurs qui seront chrootés.
# groupadd sftp_group
2. Créez un utilisateur pour le groupe SFTP et définissez un mot de passe.
# useradd sftp_test1
# passwd sftp_test1 Changing password for user sftp_test1. New password: Retype new password: passwd: all authentication tokens updated successfully.
3. Ajoutez l'utilisateur sftp_test1 au groupe sftp_group. Laissez le shell utilisateur être /bin/false car les utilisateurs ne devraient être autorisés qu'à utiliser sftp et non ssh/scp.
# usermod -g sftp_group -s /bin/false sftp_test1
# id sftp_test1 uid=1000(sftp_test1) gid=1001(sftp_test1) groups=1001(sftp_test1),1000(sftp_group)REMARQUE :Les utilisateurs ne faisant pas partie de ce groupe peuvent toujours se connecter à l'hôte via ssh et interagir normalement avec openssh.
4. Modifiez la configuration sshd pour configurer le sftp. Supprimez le /usr/libexec/openssh/sftp-server et ajoutez la ligne internal-sftp comme indiqué ci-dessous :
Supprimez ou hachez la ligne :
# vi /etc/ssh/sshd_config Subsystem sftp /usr/libexec/openssh/sftp-server
ajoutez la ligne ci-dessous :
# vi /etc/ssh/sshd_config Subsystem sftp internal-sftp
5. Ajoutez le contenu ci-dessous à la fin du fichier /etc/ssh/sshd_config pour ajouter l'environnement chroot sftp :
# vi /etc/ssh/sshd_config Match Group sftp_group X11Forwarding no AllowTcpForwarding no ChrootDirectory /home ForceCommand internal-sftp
5. Redémarrez le service sshd pour prendre effet de la configuration sftp.
# systemctl restart sshd
Vérifier
1. Essayez maintenant d'accéder au système avec le service SSH et SFTP à partir d'autres clients :
a. SSH
# ssh [email protected] The authenticity of host 'x.x.x.x (x.x.x.x)' can't be established. ECDSA key fingerprint is 07:1c:34:30:f4:81:e1:e0:b3:13:30:b8:57:d9:d9:58. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'x.x.x.x' (ECDSA) to the list of known hosts. [email protected]'s password: Could not chdir to home directory /home/sftp_test1: No such file or directory This service allows sftp connections only. Connection to x.x.x.x closed.
Comme vous le voyez ci-dessus, la connexion est fermée et n'est pas autorisée à se connecter en SSH.
# sftp [email protected] [email protected]'s password: Connected to x.x.x.x. sftp> pwd Remote working directory: / sftp> ls sftp_test1 sftp> cd /home Couldn't canonicalize: No such file or directory sftp>
En conséquence, l'utilisateur sftp_test1 ci-dessus est connecté via SFTP et ne peut pas modifier le répertoire en raison de l'environnement chroot
3. Vous pouvez également tester la fonction SFTP-Server à partir du client Windows en utilisant les logiciels "WinSCP" ou "Filezilla".