GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer des jails chroot Linux

Le terme prison chroot a été utilisé pour la première fois en 1992, dans un article d'un éminent chercheur en sécurité, Bill Cheswick, (ce qui est intéressant si vous aimez ce genre de choses, vous pouvez trouver l'article ici). Les prisons chroot ont commencé à apparaître en 2003, avec des applications comme IRC et FTP. En 2005, Sun a lancé sa technologie "Containers" appelée Zones, qui à son tour était un précurseur du concept d'espaces de noms. , qui est une technologie de base utilisée avec les conteneurs.

Bases du chroot

Chroot permet à un administrateur de contrôler l'accès à un service ou à un système de fichiers tout en contrôlant l'exposition à l'environnement de serveur sous-jacent. Les deux exemples courants que vous pourriez rencontrer sont pendant la séquence de démarrage et le "shell d'urgence" sur les systèmes Red Hat/CentOS/Fedora, et dans Secure FTP (SFTP).

La commande ressemble à ceci :

chroot <newroot> [[command][arguments]]

Similaire au sudo commande, le chroot La commande modifie l'environnement de la commande suivante. En d'autres termes, cela vous changera en newroot répertoire et fait également de ce répertoire le répertoire "de travail". La command s'exécute ensuite à cet emplacement, ce qui est utile pour des choses comme le sauvetage d'un système qui ne démarre pas.

Contrairement à sudo , vous serez "dans" le répertoire. Cette pratique, encore une fois, est utile si vous démarrez à partir d'un support externe, mais que vous devez accéder à un système de fichiers ou à une commande "local" pour effectuer le travail.

L'autre utilisation courante de chroot est de restreindre un service ou un utilisateur en utilisant un wrapper pour masquer le reste du système de fichiers, limitant ainsi la vue d'un utilisateur distant sur les données des autres utilisateurs. Une implémentation populaire utilisant cette approche SFTP.

Exemple

Avant de commencer à travailler sur cet exemple, vous devez vous assurer que vous disposez de sauvegardes. Dans ce cas, sauvegardez le fichier /etc/ssh/sshd_config fichier car vous apporterez des modifications à celui-ci en particulier :

[root@showme1 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Pour l'instant, vous limiterez uniquement les utilisateurs SFTP à leurs répertoires personnels sur le serveur. Cette exigence signifie que vous devrez ajouter des utilisateurs et les mettre dans un groupe :

[root@showme1 ~]# useradd -g sftpusers -s /sbin/nologin -p nick nick

Notez que cela affectera nick un compte sans shell de connexion. Cette technique est à la fois pratique et une bonne pratique de sécurité :s'il utilise simplement SFTP, il ne devrait pas avoir de privilèges de connexion. Je parlerai de la fourniture d'un shell aux utilisateurs distants dans le prochain article.

Maintenant, vous devez dire au ssh service que faire lorsque les utilisateurs SFTP se connectent. Ouvrez le /etc/ssh/sshd_config fichier et ajoutez ce qui suit à la fin :

Subsystem sftp internal-sftp

Match Group sftpusers
ForceCommand internal-sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no

Il est important que vous ajoutiez ces paramètres en tant qu'ensemble d'entrées distinct et que vous utilisiez l'élément Match syntaxe pour indiquer que cette section uniquement s'applique aux utilisateurs de ce groupe. Si vous apportiez les modifications aux entrées existantes, elles s'appliqueraient à toutes utilisateurs SSH, ce qui pourrait interrompre l'accès à distance.

Les lignes de configuration se décomposent comme suit :

  • La ForceCommand rend ssh choisissez sa fonction intégrée pour fournir un service SFTP (que vous pouvez contrôler indépendamment).
  • ChrootDirectory indique sshd où restreindre l'utilisateur.
  • Subsystem sftp internal-sftp indique sshd pour charger le sftp interne service et le rendre disponible.

Vous devrez peut-être vous assurer que ce Subsystem n'est pas déjà défini en commentant cette ligne plus tôt dans le fichier de configuration :

# override default of no subsystems
# Subsystem sftp /usr/libexec/openssh/sftp-server

Une fois que vous avez apporté les modifications et vérifié l'orthographe, continuez et enregistrez les modifications. Ensuite, redémarrez sshd :

[root@showme1 ~]# systemctl restart sshd

Testez le nouvel utilisateur :

[skipworthy@milo ~]$ sftp nick@showme
nick@showme's password:
Connected to nick@showme.
sftp> ls
accounting   ansible   fred   jason   kenny   lisa    
nick
sftp> pwd
Remote working directory: /
sftp> exit

Oups, attendez une minute :il semble que vous puissiez également voir tous les répertoires des autres utilisateurs. Cependant, vous ne pouvez pas accéder à ces répertoires :

sftp> cd fred
sftp> ls
remote readdir("/fred"): Permission denied

Vous pouvez diriger l'utilisateur chrooté vers son propre répertoire personnel en modifiant le ChrootDirectory ligne dans le sshd_config fichier comme celui-ci :

ChrootDirectory /

Ce changement rapide donne l'impression à Nick qu'il se trouve dans son propre répertoire personnel et qu'il ne pourra voir les fichiers d'aucun autre utilisateur :

sftp> pwd
Remote working directory: /home/nick
sftp>
sftp> exit
[skipworthy@milo ~]$ touch test.txt
[skipworthy@milo ~]$ sftp nick@showme
nick@showme's password:
Connected to nick@showme.
sftp> put test.txt
Uploading test.txt to /home/nick/test.txt
test.txt 100% 0 0.0KB/s 00:00
sftp> ls
test.txt
sftp>

Où est-il allé? Regardez ceci :

[root@showme1 ~]# ls /home/nick
test.txt

Notez qu'une chroot jail n'est pas considérée comme une restriction de sécurité adéquate en elle-même. Bien qu'il empêche un utilisateur de sortir d'un répertoire restreint, il existe des moyens de contourner cela (l'idée générale est mentionnée dans le chroot(2) page de manuel, que vous devriez consulter si vous envisagez d'utiliser cette astuce dans un contexte de production ou d'entreprise critique.)

Conclusion (pour l'instant)

Ainsi, vous pouvez voir que chroot peut être un outil très utile. Dans la partie 2, j'examinerai davantage l'attribution de répertoires spécifiques aux utilisateurs et la fourniture d'un environnement shell à un utilisateur distant sans exposer le reste du serveur.

Nouveauté dans les conteneurs ? Téléchargez l'introduction aux conteneurs et découvrez les bases des conteneurs Linux.


Linux
  1. Comment définir ou modifier le nom d'hôte du système sous Linux

  2. Plonger plus profondément dans les prisons de chroot Linux

  3. Comment configurer un serveur SFTP sur Arch Linux

  4. Comment définir la variable $Path sous Linux

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

Comment définir ou modifier le nom d'hôte sous Linux

Comment configurer SFTP chrooté sous Linux

Comment changer ou définir un mot de passe utilisateur sous Linux

Comment configurer un pare-feu avec GUFW sous Linux

Comment définir la date et l'heure sous Linux

Comment activer sFTP dans un VPS Linux ?