Comment restreindre l’accès utilisateur SSH à certains répertoires en utilisant une prison chrootée

Il existe plusieurs raisons de restreindre une session utilisateur SSH à un répertoire particulier, surtout sur les serveurs web, mais la raison évidente est la sécurité système. Pour verrouiller les utilisateurs SSH dans un certain répertoire, nous pouvons utiliser le mécanisme chroot.

La modification du répertoire racine (chroot) dans les systèmes de type Unix tels que Linux est un moyen de séparer des opérations utilisateur spécifiques du reste du système Linux ; cela change le répertoire racine apparent pour le processus utilisateur en cours d’exécution et son processus enfant (parent) avec un nouveau répertoire racine appelé chrooted jail.

Dans ce tutoriel, nous vous montrerons comment restreindre l’accès utilisateur 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.

1. Commencez par créer la prison chroot en utilisant la commande mkdir ci-dessous:

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 d’accès du répertoire à chroot après l’authentification. Le répertoire doit contenir les fichiers et répertoires nécessaires pour soutenir la session d’un utilisateur.

Pour une session interactive, cela nécessite au moins un shell, communément sh, et des noeuds de base /dev tels que null, zero, stdin, stdout, stderr et les périphériques tty :

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
Listing Required Files

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 de permissions du fichier, c signifie fichier de caractères et les deux nombres sont les numéros principaux et secondaires auxquels 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
Create /dev and Required Files

4. Par la suite, définissez les permissions appropriées sur la prison chroot. Notez que la prison chroot et ses sous-répertoires et sous-fichiers doivent être détenus par l’utilisateur root et ne doivent pas être écrits par un utilisateur normal ou un groupe :

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test
Set Permissions on Directory

Étape 2 : Configuration d’un Shell Interactif pour la Prison Chroot SSH

5. Premièrement, créez le répertoire bin et copiez ensuite 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/
Copy Files to bin Directory

6. Maintenant, identifiez les bibliothèques partagées libs nécessaires pour bash, 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/
Copy Shared Library Files

Étape 3 : Créer et configurer l’utilisateur SSH

7. Créez maintenant 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/
Copy Password Files
Note: Each time you add more SSH users to the system, you will need to copy the updated account files into the /home/test/etc directory.

Étape 4 : Configurer SSH pour utiliser la prison chroot

9. Ouvrez maintenant le fichier sshd_config.

# vi /etc/ssh/sshd_config

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
Configure SSH Chroot Jail

Enregistrez le fichier et quittez, puis redémarrez les services SSHD :

# systemctl restart sshd
OR
# service sshd restart

Étape 5 : Tester SSH avec la prison chroot

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

# ssh [email protected]
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname
Testing SSH User Chroot Jail

À partir de la capture d’écran ci-dessus, nous pouvons voir que l’utilisateur SSH est enfermé dans la prison chroot et ne peut pas exécuter de commandes externes (ls, date, uname, etc).

L’utilisateur ne peut qu’exécuter bash et ses commandes intégrées telles que (pwd, history, echo, etc) comme le montre ci-dessous :

# ssh [email protected]
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history
SSH Built-in Commands

Étape 6. Créer le répertoire personnel de l’utilisateur SSH et ajouter des commandes Linux

11. À partir de l’étape précédente, nous pouvons constater que l’utilisateur est enfermé dans le répertoire racine, nous pouvons créer un répertoire personnel pour l’utilisateur SSH de la manière suivante (faites cela pour tous les utilisateurs futurs) :

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint
Create SSH User Home Directory

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/
Add Commands to SSH User

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 la prison chrootée :

# 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/
Copy Shared Libraries

Étape 7. Test de SFTP avec Chroot Jail

14. Effectuez un test final à l’aide de 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. Puis redémarrez les services SSHD :

# systemctl restart sshd
OR
# service sshd restart

15. Maintenant, testez à l’aide de SSH, et vous obtiendrez l’erreur suivante :

# ssh [email protected]
Test SSH Chroot Jail

Essayez d’utiliser SFTP comme suit :

# sftp [email protected]
Testing sFTP SSH User

C’est tout pour le moment! Dans cet article, nous vous avons montré comment restreindre un utilisateur SSH dans un répertoire donné (jail chroot) sous Linux. Utilisez la section des commentaires ci-dessous pour nous donner vos réflexions à propos de ce guide.

Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/