GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer SFTP chrooté sous Linux

Ce guide explique comment configurer Chrooted SFTP sous Linux afin de restreindre l'accès des utilisateurs SSH au répertoire personnel ou à tout répertoire particulier. En d'autres termes, nous allons forcer les utilisateurs à accéder à un répertoire spécifique et définir leur shell sur /bin/nologin ou un autre shell qui refuse l'accès à une connexion ssh. Une fois le SFTP chrooté configuré, les utilisateurs ne peuvent accéder qu'au répertoire personnel qui leur a été attribué, mais pas à l'ensemble du système de fichiers

L'activation de l'accès SFTP chrooté offre les avantages suivants :

  • Autoriser les utilisateurs à se connecter uniquement via SFTP, mais pas les autoriser à se connecter via SSH.
  • Limitez une session utilisateur SSH à son répertoire personnel ou à un répertoire spécifique de votre choix.
  • Restreindre l'accès SSH à certains utilisateurs tout en leur permettant de transférer des fichiers entre des systèmes locaux et distants.
  • Refuser l'accès de l'utilisateur à l'ensemble du système de fichiers.

Maintenant, allons-y et configurons Chrooted SFTP pour limiter les utilisateurs SSH au répertoire personnel et/ou à tout autre répertoire avec une prison chrootée sous Linux.

Ce guide est officiellement testé sur les distributions Debian 11 bullseye, Ubuntu 20.04 LTS et Ubuntu 18.04 LTS. Cependant, les étapes ci-dessous devraient fonctionner sur toutes les distributions Linux prenant en charge openSSH .

Configurer SFTP Chrooté sous Linux

À partir de la version 4.9, openSSH dispose d'une fonctionnalité appelée sous-système internal-sftp qui autorise uniquement l'accès SFTP, mais pas l'accès SSH. Ainsi, les utilisateurs peuvent accéder uniquement aux données du serveur, mais ils ne peuvent pas y accéder via SSH.

Créer un répertoire chrooté

Tout d'abord, créez un répertoire chrooté à l'aide de la commande :

$ sudo mkdir /sftp

Faites en sorte que ce répertoire appartienne entièrement à root utilisateur utilisant la commande :

$ sudo chown root:root /sftp/

Sous ce répertoire, créez des répertoires séparés pour chaque utilisateur, comme /sftp/user1 /sftp/user2 , et /sftp/user3 et ainsi de suite.

Pour les besoins de ce guide, je vais créer un répertoire appelé ostechnix sous /sftp répertoire.

$ sudo mkdir /sftp/ostechnix

Il s'agit du répertoire dans lequel les utilisateurs peuvent enregistrer les données. De plus, les utilisateurs ne peuvent pas aller au-delà de ce répertoire. C'est comme leur $HOME répertoire.

Créer un groupe sftp et attribuer des utilisateurs à ce groupe

Maintenant, nous devons créer les utilisateurs pour pouvoir accéder au répertoire chrooté SFTP.

Créez un groupe appelé sftponly comme indiqué dans la commande suivante :

$ sudo groupadd sftponly

Ensuite, créez de nouveaux utilisateurs SFTP ou affectez des utilisateurs existants au "sftponly" groupe comme indiqué ci-dessous.

Laissez-moi créer un nouvel utilisateur, par exemple senthil , et affectez-le au "sftponly" grouper. Et ensuite, configurez son répertoire personnel en tant que /sftp/ostechnix et le shell par défaut comme /sbin/nologin .

Nous pouvons le faire en utilisant la commande en ligne suivante :

$ sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil

Définissez le mot de passe pour l'utilisateur nouvellement créé à l'aide de la commande :

$ sudo passwd senthil

Pour modifier l'utilisateur existant, utilisez "usermod" au lieu de "useradd" commande comme ci-dessous :

$ sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil

Attribuez les autorisations appropriées au répertoire chrooté

Vous devez attribuer les autorisations appropriées aux utilisateurs SFTP pour accéder à leur répertoire HOME comme ci-dessous.

$ sudo chown senthil:sftponly /sftp/ostechnix
$ sudo chmod 700 /sftp/ostechnix/

Les autres utilisateurs SFTP ne peuvent pas accéder à ce répertoire.

De même, attribuez également les autorisations appropriées à tous les autres utilisateurs SFTP.

Téléchargement recommandé - Ebook gratuit :"Apprenez Linux en 5 jours"

Configurer le SFTP chrooté

Modifier /etc/ssh/sshd_config fichier :

$ sudo vi /etc/ssh/sshd_config

Recherchez et commentez les lignes suivantes (c'est-à-dire ajoutez un astérisque # devant pour les commenter).

#Subsystem       sftp    /usr/libexec/openssh/sftp-server

Dans certaines distributions, par exemple Ubuntu 18.04 LTS , recherchez et commentez la ligne suivante :

#Subsystem sftp /usr/lib/openssh/sftp-server

Ajoutez ensuite les lignes suivantes à la fin du fichier :

Subsystem       sftp    internal-sftp
Match group sftponly
     ChrootDirectory /sftp/
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

Configurer le SFTP chrooté

Si vous souhaitez limiter les utilisateurs à $HOME répertoire, remplacez simplement /sftp avec /home dans le code ci-dessus. Assurez-vous d'avoir spécifié le chemin correct du répertoire sftp. Appuyez sur ESC et tapez :wq pour enregistrer le fichier et quitter.

Redémarrez ssh service pour mettre à jour les modifications.

$ sudo systemctl restart sshd

Maintenant, essayez de vous connecter en SSH à ce système à partir de n'importe quel autre système sur le réseau en utilisant l'utilisateur sftp (c'est-à-dire senthil dans notre cas).

$ ssh [email protected]1

Vous obtiendrez le message d'erreur suivant.

Mot de passe de
[email protected]'s password: 
This service allows sftp connections only.
Connection to 192.168.122.181 closed.

Ici, 192.168.122.181 est l'adresse IP de mon système Debian distant où j'ai configuré SFTP.

Vous ne pouvez accéder au système distant qu'en utilisant sftp comme indiqué ci-dessous.

$ sftp [email protected]
[email protected]'s password: 
Connected to 192.168.43.2.
sftp>

Voir? L'utilisateur "senthil" peut se connecter via sftp, mais pas via ssh.

Pour connaître le répertoire de travail courant, utilisez 'pwd' commande :

sftp> pwd
Remote working directory: /ostechnix
sftp>

Configurer le SFTP chrooté sous Linux

Commandes SFTP de base

Nous pouvons nous connecter en utilisant un autre port en utilisant -p drapeau.

$ sftp -P <port_number> [email protected]_host

Pour transférer un fichier distant vers le système local, faites :

sftp> get /path/remote_file

Nous pouvons transférer le fichier local vers le système distant en utilisant la commande :

sftp> put /path/local_file

Pour transférer un dossier distant vers le système local de manière récursive :

sftp> get -R /path/remote_folder

Pour afficher la liste des fichiers sur la machine locale :

sftp> lls

Pour afficher la liste des fichiers sur la machine distante :

sftp> ls

Pour plus de détails sur l'utilisation de sftp, consultez les pages de manuel.

$ man sftp

Conclusion

Dans ce guide, nous avons expliqué comment configurer et configurer le SFTP chrooté dans les systèmes d'exploitation Linux tels que Debian et Ubuntu.

Suggestion de lecture :

  • Comment changer le port FTP par défaut en un port personnalisé
  • Installer le serveur VSFTPD dans Ubuntu
  • Serveur VSFTPD sécurisé avec cryptage TLS/SSL dans Ubuntu
  • Configurer le serveur FTP étape par étape dans CentOS
  • FTP_Manager :un script simple pour installer et gérer le serveur FTP dans CentOS

Linux
  1. Comment mettre à jour un lien symbolique Linux

  2. Comment configurer des jails chroot Linux

  3. Comment rendre un répertoire partagé accessible par Sftp ?

  4. Comment configurer Chroot SFTP sous Linux (Autoriser uniquement SFTP, pas SSH)

  5. Comment obtenir la taille du répertoire sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Comment configurer le dernier Oracle OpenJDK sous Linux

Comment exécuter tous les scripts dans un répertoire sous Linux

Comment copier un répertoire sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Comment activer sFTP dans un VPS Linux ?