Il existe plusieurs raisons de restreindre une session utilisateur SSH à un répertoire particulier, en particulier sur les serveurs Web, mais la plus évidente est la sécurité du système. Afin de verrouiller les utilisateurs SSH dans un certain répertoire, nous pouvons utiliser chrooter mécanisme.
changer de racine (chrooter) dans les systèmes de type Unix tels que Linux, est un moyen de séparer les opérations utilisateur spécifiques du reste du système Linux ; change le répertoire racine apparent du processus utilisateur en cours d’exécution et de son processus enfant (parent) avec un nouveau répertoire racine appelé a prison chrootée.
Dans ce didacticiel, nous allons vous montrer comment restreindre l’accès des utilisateurs SSH à un répertoire donné sous Linux. Notez que nous exécuterons toutes les commandes en tant que root, utilisez la commande sudo si vous êtes connecté au serveur en tant qu’utilisateur normal.
Étape 1 : Créer une prison SSH Chroot
1. Commencez par créer la prison chroot à l’aide de la commande mkdir ci-dessous :
# mkdir -p /home/test
2. Ensuite, identifiez les fichiers requis, selon le sshd_config page de manuel, la ChrootDirectory
L’option spécifie le chemin du répertoire vers lequel chrooter après l’authentification. Le répertoire doit contenir les fichiers et répertoires nécessaires pour prendre en charge la session d’un utilisateur.
Pour une session interactive, cela nécessite au moins un shell, généralement sh
et de base /dev
nœuds tels que les périphériques null, zero, stdin, stdout, stderr et tty :
# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
3. Maintenant, créez le /dev
fichiers comme suit en utilisant le commande mknod. Dans la commande ci-dessous, le -m
flag est utilisé pour spécifier les bits d’autorisation de fichier, c
signifie fichier de caractères et les deux nombres sont les nombres majeur et mineur vers lesquels les fichiers pointent.
# mkdir -p /home/test/dev/ # cd /home/test/dev/ # mknod -m 666 null c 1 3 # mknod -m 666 tty c 5 0 # mknod -m 666 zero c 1 5 # mknod -m 666 random c 1 8
4. Ensuite, définissez l’autorisation appropriée sur la prison chroot. Notez que la prison chroot et ses sous-répertoires et sous-fichiers doivent appartenir au racine utilisateur, et non accessible en écriture par un utilisateur ou un groupe normal :
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test
Étape 2 : Configurer le shell interactif pour SSH Chroot Jail
5. Tout d’abord, créez le bin
répertoire, puis copiez le /bin/bash
fichiers dans le bin
répertoire à l’aide de la commande cp comme suit :
# mkdir -p /home/test/bin # cp -v /bin/bash /home/test/bin/
6. Maintenant, identifiez le bash requis pour le partage libs
comme ci-dessous, et copiez-les dans le lib
annuaire:
# ldd /bin/bash # mkdir -p /home/test/lib64 # cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/
Étape 3 : Créer et configurer un utilisateur SSH
7. Maintenant, créez l’utilisateur SSH avec la commande useradd et définissez un mot de passe sécurisé pour l’utilisateur :
# useradd tecmint # passwd tecmint
8. Créer le répertoire des configurations générales de chroot jail, /home/test/etc
et copiez les fichiers de compte mis à jour (/etc/passwd et /etc/groupe) dans ce répertoire comme suit :
# mkdir /home/test/etc # cp -vf /etc/{passwd,group} /home/test/etc/
Note: Chaque fois que vous ajoutez d’autres utilisateurs SSH au système, vous devrez copier les fichiers de compte mis à jour dans le /home/test/etc
annuaire.
Étape 4 : Configurer SSH pour utiliser Chroot Jail
9. Maintenant, ouvrez le sshd_config
déposer.
# vi /etc/ssh/sshd_config
et ajoutez/modifiez les lignes ci-dessous dans le fichier.
#define username to apply chroot jail to Match User tecmint #specify chroot jail ChrootDirectory /home/test
Enregistrez le fichier et quittez, puis redémarrez les services SSHD :
# systemctl restart sshd OR # service sshd restart
Étape 5 : Tester SSH avec Chroot Jail
dix. À ce stade, testez si la configuration de la prison chroot fonctionne comme prévu :
# ssh [email protected] -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname
Dans la capture d’écran ci-dessus, nous pouvons voir que l’utilisateur SSH est verrouillé dans la prison chrootée et ne peut exécuter aucune commande externe (ls, date, uname, etc.).
L’utilisateur ne peut exécuter que bash et ses commandes intégrées telles que (pwd, history, echo, etc.) comme indiqué ci-dessous :
# ssh [email protected] -bash-4.1$ pwd -bash-4.1$ echo "Tecmint - Fastest Growing Linux Site" -bash-4.1$ history
Étape 6. Créer le répertoire personnel de l’utilisateur SSH et ajouter des commandes Linux
11. De l’étape précédente, nous pouvons remarquer que l’utilisateur est verrouillé dans le répertoire racine, nous pouvons créer un répertoire personnel pour l’utilisateur SSH comme ceci (faites ceci pour tous les futurs utilisateurs) :
# mkdir -p /home/test/home/tecmint # chown -R tecmint:tecmint /home/test/home/tecmint # chmod -R 0700 /home/test/home/tecmint
12. Ensuite, installez quelques commandes utilisateur telles que ls, date et mkdir dans le bin
annuaire:
# cp -v /bin/ls /home/test/bin/ # cp -v /bin/date /home/test/bin/ # cp -v /bin/mkdir /home/test/bin/
13. Ensuite, vérifiez les bibliothèques partagées pour les commandes ci-dessus et déplacez-les dans le répertoire des bibliothèques jail chrootées :
# ldd /bin/ls # cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/
Étape 7. Tester SFTP avec Chroot Jail
14. Faites un test final en utilisant sftp ; vérifiez si les commandes que vous venez d’installer fonctionnent.
Ajoutez la ligne ci-dessous dans le /etc/ssh/sshd_config
déposer:
#Enable sftp to chrooted jail ForceCommand internal-sftp
Enregistrez le fichier et quittez. Redémarrez ensuite les services SSHD :
# systemctl restart sshd OR # service sshd restart
15. Maintenant, testez en utilisant SSH, et vous obtiendrez l’erreur suivante :
# ssh [email protected]
Essayez d’utiliser SFTP comme suit :
# sftp [email protected]
C’est tout pour le moment! Dans cet article, nous vous avons montré comment restreindre un utilisateur SSH dans un répertoire donné (prison chrootée) sous Linux. Utilisez la section des commentaires ci-dessous pour nous faire part de vos réflexions sur ce guide.
Si vous appréciez ce que nous faisons ici sur TecMint, vous devriez considérer :
TecMint est le site communautaire à la croissance la plus rapide et le plus fiable pour tout type d’articles, de guides et de livres Linux sur le Web. Des millions de personnes visitent TecMint ! pour rechercher ou parcourir les milliers d’articles publiés accessibles GRATUITEMENT à tous.
Si vous aimez ce que vous lisez, pensez à nous acheter un café (ou 2) en signe d’appréciation.
Nous sommes reconnaissants pour votre soutien sans fin.