Comment restreindre l'accès des utilisateurs SSH à certains répertoires à l'aide de prison chrootée
- 4048
- 749
- Victor Charpentier
Il existe plusieurs raisons de restreindre une session d'utilisateur SSH à un répertoire particulier, en particulier sur les serveurs Web, mais l'évidence est la sécurité du système. Afin de verrouiller les utilisateurs de SSH dans un certain répertoire, nous pouvons utiliser chroot mécanisme.
changer la 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 pour le processus utilisateur en cours d'exécution et son processus d'enfant (parent) avec un nouveau répertoire racine appelé un prison.
Dans ce tutoriel, nous vous montrerons comment restreindre l'accès des utilisateurs SSH à un répertoire donné à Linux. Notez que nous allons exécuter toutes les commandes comme racine, utilisez la commande sudo si vous êtes connecté au serveur comme utilisateur normal.
Table des matières
1- Étape 1: Créer une prison de chroot SSH
- Étape 2: Configuration de la coque interactive pour la prison de chroot SSH
- Étape 3: Créer et configurer l'utilisateur SSH
- Étape 4: Configurer SSH pour utiliser la prison de chroot
- Étape 5: Tester SSH avec une prison de chroot
- Étape 6. Créez le répertoire personnel de l'utilisateur SSH et ajoutez des commandes Linux
- Étape 7. Tester SFTP avec une prison de chroot
Étape 1: Créer une prison de chroot SSH
1. Commencez par créer la prison de chroot à l'aide de la commande MKDIR ci-dessous:
# Mkdir -P / Home / Test
2. Ensuite, identifiez les fichiers requis, selon le sshd_config page man, le Chrootdirectoire
L'option 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 prendre en charge la session d'un utilisateur.
Pour une session interactive, cela nécessite au moins un shell, généralement shot
, et de base / dev
Des nœuds tels que Null, Zero, Stdin, Stdout, STDERR et TTY Dispositifs:
# ls -l / dev / null, zéro, stdin, stdout, stderr, aléatoire, ttyListing des fichiers requis
3. Maintenant, créez le / dev
les fichiers comme suit en utilisant le Commande MKNOD. Dans la commande ci-dessous, le -m
Le drapeau est utilisé pour spécifier les bits d'autorisations de fichier, c
signifie le fichier de caractères et les deux nombres sont des nombres majeurs et mineurs que les fichiers pointent vers.
# 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 8Créer / Dev et fichiers requis
4. Ensuite, définissez l'autorisation appropriée sur la prison du chroot. Notez que la prison de chroot et ses sous-répertoires et sous-fichiers doivent appartenir à la racine Utilisateur, et non écrivatif par aucun utilisateur ou groupe normal:
# Chown Root: Root / Home / Test # Chmod 0755 / Home / Test # LS -LD / Home / TestDéfinir les autorisations sur le répertoire
Étape 2: Configuration de la coque interactive pour la prison de chroot SSH
5. Tout d'abord, créez le poubelle
répertoire puis copier le / bac / bash
fichiers dans le poubelle
Répertoire utilisant la commande CP comme suit:
# mkdir -p / home / test / bin # cp -v / bin / bash / home / test / bin /Copier les fichiers dans le répertoire de bacs
6. Maintenant, identifiez le bash requis pour partager lib
, comme ci-dessous, et copiez-les dans le lib
annuaire:
# LDD / BIN / BASH # MKDIR -P / HOME / TEST / LIB64 # CP -V / LIB64 / LiBtinfo.donc.5, libdl.donc.2, libc.donc.6, LD-Linux-X86-64.donc.2 / home / test / lib64 /Copier les fichiers de bibliothèque partagée
Étape 3: Créer et configurer l'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 la prison de chroot, / Home / Test / etc
et copier 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, groupe / home / test / etc /Copier les fichiers de mot de passe Note: Chaque fois que vous ajoutez plus d'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 la prison de chroot
9. Maintenant, ouvrez le sshd_config
déposer.
# vi / etc / ssh / sshd_config
et ajouter / modifier les lignes ci-dessous dans le fichier.
#Define Nom d'utilisateur pour appliquer la prison de chroot Faire correspondre l'utilisateur Tecmint # spécifier la prison de chroot Chrootdirectory / Home / TestConfigurer la prison de chroot SSH
Enregistrez le fichier et sortez et redémarrez les services SSHD:
# SystemCTL Redémarrer SSHD ou # Service SSHD Redémarrer
Étape 5: Tester SSH avec une prison de chroot
dix. À ce stade, testez si la configuration de la prison de chroot fonctionne comme prévu:
# ssh [e-mail protégé] -bash-4.1 $ LS -BASH-4.1 $ DATE -BASH-4.1 $ unameTester la prison de chroot de l'utilisateur SSH
À partir de 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, Historique, écho, etc.) comme indiqué ci-dessous:
# ssh [e-mail protégé] -bash-4.1 $ PWD -BASH-4.1 $ echo "Tecmint - Site Linux à la croissance la plus rapide" -BASH-4.1 $ HISTORYCommandes intégrées SSH
Étape 6. Créez le répertoire personnel de l'utilisateur SSH et ajoutez des commandes Linux
11. À 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 domestique pour l'utilisateur SSH comme ainsi (faites-le 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 / TecmintCréer un répertoire de maison utilisateur SSH
12. Ensuite, installez quelques commandes utilisateur telles que LS, Date et Mkdir dans le poubelle
annuaire:
# cp -v / bin / ls / home / test / bin / # cp -v / bin / date / home / test / bin / # cp -v / bin / mkdir / home / test / bin /Ajouter des commandes à l'utilisateur SSH
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.donc.1, libcap.donc.2, libacl.donc.1, libc.donc.6, libpcre.donc.1, libdl.donc.2, LD-LINUX-X86-64.donc.2, libattr.donc.1, libpthread.donc.0 / home / test / lib64 /Copier les bibliothèques partagées
Étape 7. Tester SFTP avec une prison de chroot
14. Faites un test final en utilisant SFTP; Vérifiez si les commandes que vous venez d'installer fonctionnent.
Ajouter la ligne ci-dessous dans le / etc / ssh / sshd_config
déposer:
#Enable SFTP à la prison chrootée ForceCommand Internal-SFTP
Enregistrer le fichier et quitter. Redémarrez ensuite les services SSHD:
# SystemCTL Redémarrer SSHD ou # Service SSHD Redémarrer
15. Maintenant, testez à l'aide de SSH, et vous obtiendrez l'erreur suivante:
# ssh [e-mail protégé]Tester la prison de chroot SSH
Essayez d'utiliser SFTP comme suit:
# sftp [e-mail protégé]Tester l'utilisateur SFTP SSH
Vous pourriez aussi aimer:
- Comment restreindre les utilisateurs de SFTP aux répertoires domestiques à l'aide de la prison de chroot
- Utilisation et configuration de la commande SSH de base dans Linux
- 5 meilleures pratiques pour empêcher les attaques de connexion à force brute SSH dans Linux
- 5 meilleurs serveurs OpenSSH meilleures pratiques de sécurité
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) à Linux. Utilisez la section des commentaires ci-dessous pour nous offrir vos réflexions sur ce guide.
- « 4 Commandes utiles pour effacer l'écran du terminal Linux
- 6 métriques de performance clés à surveiller dans les serveurs Linux - Partie 1 »