Android

Comment configurer la prison chroot sftp

SFTP Server Chroot Configuration | How to Setup Chroot SFTP in Linux

SFTP Server Chroot Configuration | How to Setup Chroot SFTP in Linux

Table des matières:

Anonim

Dans ce didacticiel, nous expliquerons comment configurer un environnement SFTP Chroot Jail qui restreindra les utilisateurs à leurs répertoires personnels. Les utilisateurs n'auront qu'un accès SFTP, l'accès SSH sera désactivé. Ces instructions devraient fonctionner pour toute distribution Linux moderne, y compris Ubuntu, CentOS, Debian et Fedora.

Création d'un groupe SFTP

Au lieu de configurer le serveur OpenSSH pour chaque utilisateur individuellement, nous créerons un nouveau groupe et ajouterons tous nos utilisateurs chrootés à ce groupe.

Exécutez la commande groupadd suivante pour créer le groupe d'utilisateurs sftponly :

sudo groupadd sftponly Vous pouvez nommer le groupe comme vous le souhaitez.

Ajout d'utilisateurs au groupe SFTP

L'étape suivante consiste à ajouter les utilisateurs que vous souhaitez restreindre au groupe sftponly .

S'il s'agit d'une nouvelle configuration et que l'utilisateur n'existe pas, vous pouvez créer un nouveau compte utilisateur en tapant:

sudo useradd -g sftponly -s /bin/false -m -d /home/username username

  • L'option -g sftponly ajoutera l'utilisateur au groupe sftponly. L'option -s /bin/false définit le shell de connexion de l'utilisateur. En définissant le shell de connexion sur /bin/false l'utilisateur ne pourra pas se connecter au serveur via SSH. Les options -m -d /home/username indiquent à useradd de créer le répertoire personnel de l'utilisateur.

Définissez un mot de passe fort pour l'utilisateur nouvellement créé:

sudo passwd username

Sinon, si l'utilisateur que vous souhaitez restreindre existe déjà, ajoutez l'utilisateur au groupe sftponly et changez le shell de l'utilisateur:

sudo usermod -G sftponly -s /bin/false username2

Le répertoire de base de l'utilisateur doit appartenir à root et disposer de 755 autorisations:

sudo chown root: /home/username sudo chmod 755 /home/username

Étant donné que les répertoires personnels des utilisateurs appartiennent à l'utilisateur racine, ces utilisateurs ne pourront pas créer de fichiers et de répertoires dans leurs répertoires personnels. S'il n'y a aucun répertoire dans la maison de l'utilisateur, vous devrez créer de nouveaux répertoires auxquels l'utilisateur aura un accès complet. Par exemple, vous pouvez créer les répertoires suivants:

sudo mkdir /home/username/{public_html, uploads} sudo chmod 755 /home/username/{public_html, uploads} sudo chown username:sftponly /home/username/{public_html, uploads}

Si une application Web utilise le répertoire public_html l'utilisateur comme racine du document, ces modifications peuvent entraîner des problèmes d'autorisations. Par exemple, si vous exécutez WordPress, vous devrez créer un pool PHP qui s'exécutera en tant qu'utilisateur propriétaire des fichiers et ajouter le serveur sftponly groupe sftponly .

Configuration de SSH

SFTP est un sous-système de SSH et prend en charge tous les mécanismes d'authentification SSH.

Ouvrez le fichier de configuration SSH /etc/ssh/sshd_config avec votre éditeur de texte:

sudo nano /etc/ssh/sshd_config

Recherchez la ligne commençant par Subsystem sftp , généralement à la fin du fichier. Si la ligne commence par un hachage # supprimez le hachage # et modifiez-le pour qu'il ressemble à ceci:

/ etc / ssh / sshd_config

Subsystem sftp internal-sftp

Vers la fin du fichier, le bloc de paramètres suivant:

/ etc / ssh / sshd_config

Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no

La directive ChrootDirectory spécifie le chemin d'accès au répertoire chroot. %h signifie le répertoire personnel de l'utilisateur. Ce répertoire doit appartenir à l'utilisateur root et ne doit être accessible en écriture à aucun autre utilisateur ou groupe.

Soyez extrêmement prudent lorsque vous modifiez le fichier de configuration SSH. Une configuration incorrecte peut entraîner l'échec du démarrage du service SSH.

Une fois que vous avez terminé, enregistrez le fichier et redémarrez le service SSH pour appliquer les modifications:

sudo systemctl restart ssh

Dans CentOS et Fedora, le service ssh est nommé sshd :

sudo systemctl restart sshd

Test de la configuration

Maintenant que vous avez configuré le chroot SFTP, vous pouvez essayer de vous connecter à la machine distante via SFTP en utilisant les informations d'identification de l'utilisateur chrooté. Dans la plupart des cas, vous utiliserez un client SFTP de bureau comme FileZilla mais dans cet exemple, nous utiliserons la commande sftp.

Ouvrez une connexion SFTP à l'aide de la commande sftp suivie du nom d'utilisateur du serveur distant et de l'adresse IP ou du nom de domaine du serveur:

sftp [email protected]

Vous serez invité à saisir le mot de passe utilisateur. Une fois connecté, le serveur distant affichera un message de confirmation et l'invite sftp> :

[email protected]'s password: sftp>

Exécutez la commande pwd , comme indiqué ci-dessous, et si tout fonctionne comme prévu, la commande devrait retourner / .

sftp> pwd Remote working directory: /

Vous pouvez également répertorier les fichiers et répertoires distants à l'aide de la commande ls et vous devriez voir les répertoires que nous avons créés précédemment:

sftp> ls public_html uploads

Conclusion

Dans ce didacticiel, vous avez appris à configurer un environnement SFTP Chroot Jail sur votre serveur Linux et à restreindre l'accès des utilisateurs à leur répertoire personnel.

Par défaut, SSH écoute sur le port 22. La modification du port SSH par défaut ajoute une couche de sécurité supplémentaire à votre serveur en réduisant le risque d'attaques automatisées. Vous pouvez également configurer une authentification basée sur une clé SSH et vous connecter au serveur sans entrer de mot de passe.

ssh sftp security