Recherche de site Web

Restreindre l'accès des utilisateurs SSH au répertoire personnel à l'aide de la prison chrootée


Il existe plusieurs raisons de restreindre une session utilisateur SSH à un répertoire particulier, notamment 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 le mécanisme chroot.

changer de racine (chroot) 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 ; modifie le répertoire racine apparent du processus utilisateur en cours d'exécution et de son processus enfant (parent) par un nouveau répertoire racine appelé 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 qu'utilisateur 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 la page de manuel sshd_config, l'option ChrootDirectory 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 des nœuds /dev de base 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 les fichiers /dev comme suit à l'aide de la commande mknod. Dans la commande ci-dessous, l'indicateur -m est utilisé pour spécifier les bits d'autorisations de fichier, c signifie fichier de caractères et les deux nombres sont des nombres majeurs et mineurs vers lesquels pointent les fichiers. .

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 à l'utilisateur root et ne doivent pas être accessibles 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 Interactive Shell pour SSH Chroot Jail

5. Commencez par créer le répertoire bin, puis copiez les fichiers /bin/bash dans le répertoire bin en utilisant la commande cp comme suit :

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

6. Maintenant, identifiez le bash requis pour les libs partagés, comme ci-dessous, et copiez-les dans le répertoire lib :

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éez le répertoire de configurations générales de la prison chroot, /home/test/etc et copiez les fichiers de compte mis à jour (/etc/passwd et /etc/group) dans ce répertoire comme suit :

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

Étape 4 : Configurer SSH pour utiliser Chroot Jail

9. Maintenant, ouvrez le fichier sshd_config.

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, quittez et redémarrez les services SSHD :

systemctl restart sshd
OR
service sshd restart

Étape 5 : tester SSH avec Chroot Jail

10. À ce stade, testez si la configuration de la prison chroot fonctionne comme prévu :

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

D'après 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 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Étape 6. Créez le répertoire personnel de l'utilisateur SSH et ajoutez des commandes Linux

11. A partir 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 (faire cela 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 répertoire bin :

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 de prison 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. Test de SFTP avec Chroot Jail

14. Effectuez un test final en utilisant sftp ; vérifiez si les commandes que vous venez d'installer fonctionnent.

Ajoutez la ligne ci-dessous dans le fichier /etc/ssh/sshd_config :

#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 avec SSH et vous obtiendrez l'erreur suivante :

ssh [email 

Essayez d'utiliser SFTP comme suit :

sftp [email 

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 commentaires ci-dessous pour nous faire part de votre avis sur ce guide.