Cet article vous montre comment créer des utilisateurs sécurisés du protocole de transfert de fichiers SSH (SFTP) qui sont limités ou emprisonnés à leurs répertoires personnels.
AVERTISSEMENT :N'essayez pas d'emprisonner l'utilisateur root. Emprisonnez uniquement les utilisateurs supplémentaires afin de ne pas empêcher l'utilisateur root d'effectuer correctement les opérations.
Avant de commencer, passez en revue les bonnes pratiques suivantes :
-
Le répertoire personnel de l'utilisateur SFTP doit appartenir à
root:root
. Les autres répertoires peuvent (et doivent) appartenir (et être accessibles en écriture) à l'utilisateur. -
Il est important de s'assurer que l'utilisateur chroot dispose d'un accès en écriture au DocumentRoot spécifié.
-
Il est important de se connecter et de tester que l'utilisateur SFTP fonctionne correctement.
-
Il est important de s'assurer que l'utilisateur SFTP ajouté est ajouté au groupe SFTP.
-
Ces instructions concernent l'ajout d'un seul domaine (utilisateur SFTP), mais vous pouvez éventuellement les utiliser pour gérer plusieurs domaines.
Important :Les étapes décrites dans cet article ne fonctionnent pas avec RHEL® 7 ou CentOS® 7. Comme pour toute opération chroot appropriée, cette configuration ne fournit pas d'accès en écriture au répertoire chroot. Seuls les sous-répertoires de la prison chroot sont accessibles en écriture. Cela est dû à la façon dont les autorisations root sont interprétées au niveau des répertoires de niveau supérieur dans lesquels l'utilisateur SFTP est contenu.
Utilisez les étapes suivantes pour créer des utilisateurs SFTP sécurisés qui sont emprisonnés dans leurs répertoires personnels :
-
Ajoutez le groupe SFTP que vous souhaitez utiliser pour l'accès SFTP en exécutant la commande suivante :
groupadd sftponly
-
Ajoutez l'utilisateur SFTP en exécutant la commande suivante, en remplaçant
myuser
avec le nom d'utilisateur :useradd -d /var/www/vhosts/domain.com -s /bin/false -G sftponly myuser
-
Créez un mot de passe pour l'utilisateur en exécutant la commande suivante, en remplaçant
myuser
avec le nom d'utilisateur :passwd myuser
-
Ouvrez le
sshd_config
fichier contenant la configuration SSH et SFTP en exécutant la commande suivante :nano /etc/ssh/sshd_config
-
Commentez la ligne suivante en ajoutant un symbole dièse (#) au début, comme illustré dans l'exemple suivant :
#Subsystem sftp /usr/lib/openssh/sftp-server
-
Ajoutez la ligne suivante directement sous la ligne que vous venez de commenter :
Subsystem sftp internal-sftp
-
Ajoutez le code suivant au bas du fichier :
Match Group sftponly ChrootDirectory %h X11Forwarding no AllowTCPForwarding no ForceCommand internal-sftp
-
Exécutez le
sshd
commande pour tester les modifications, puis redémarrez le service.Important :Si cette étape n'est pas effectuée correctement, cela peut endommager votre configuration SSHD.
sshd -t service sshd restart
Assurez-vous que les autorisations de fichier sur le système de fichiers sont correctes
Ensuite, vous devez vérifier que les autorisations de fichiers sur le système de fichiers sont correctes afin que la prison SFTP fonctionne correctement.
-
Vérifiez que le
SFTPROOT
répertoire (le répertoire personnel que vous avez défini lorsque vous avez ajouté l'utilisateur SSH) a le droituser:root group:root
autorisations en exécutant la commande suivante :chown root:root /var/www/vhosts/mywebsite.com/
-
Pour vérifier que la connexion SFTP fonctionne, connectez-vous à SFTP en exécutant la commande suivante, en remplaçant
myuser
avec l'utilisateur que vous avez choisi, comme illustré dans l'exemple suivant :sftp myuser@localhost myuser@localhost's password: Connected to localhost.
-
Testez la liste des répertoires en exécutant la commande suivante :
sftp> ls -al
Le résultat doit ressembler à l'exemple suivant :
drwxr-xr-x 3 0 0 4096 Sep 28 08:09 . drwxr-xr-x 3 0 0 4096 Sep 28 08:09 .. drwxr-xr-x 2 5001 33 4096 Sep 28 08:52 html -rw-r--r-- 1 0 0 0 Sep 28 08:09 test.php
Remarque :Utilisez le
cd
commande pour accéder au répertoire HTML (situé dans/var/www/vhosts/mywebsite.com/html
parce que le site Web 'documentroot' est un niveau en dessous de laroot
de l'utilisateur SSH SFTP annuaire. Vous devez utiliser cette configuration car votrewww-data
les utilisateurs (les utilisateurs du serveur Web) ont la racineuser:group
autorisations sur ses fichiers. -
Testez la possibilité de télécharger des fichiers en exécutant les commandes suivantes :
sftp> cd html sftp> put test.php Uploading test.php to /html/test.php test.php 100% 12K 20.0KB/s 00:00
-
Testez la possibilité de télécharger des fichiers en exécutant la commande suivante :
sftp> get test.php Fetching /test.php to test.php
-
Affichez le répertoire de travail actuel en exécutant la commande suivante :
sftp> pwd Remote working directory: /html
SFTP ne voit que les fichiers dans
/var/www/vhosts/mywebsite.com/
et considère ce répertoire comme le répertoire racine ('/') de plus haut niveau. -
Utilisez les étapes suivantes pour vous connecter à SFTP et configurer votre client SFTP :
- Installez Cyberduck®.
- Ouvrez l'application Cyberduck.
- En haut de la fenêtre, cliquez sur l'icône Ouvrir une connexion .
- Dans le menu déroulant, sélectionnez SFTP (protocole de transfert de fichiers SSH) .
- Dans le serveur champ, saisissez l'adresse IP (Internet Protocol) du serveur.
- Saisissez le nom d'utilisateur et le mot de passe que vous utilisez pour vous connecter à SFTP.
- Cliquez sur Se connecter .
Important :Testez toujours votre site Web après avoir modifié les autorisations de fichiers.