GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comprendre la prison chroot

Comme son nom l'indique, une opération chroot modifie le répertoire racine apparent d'un processus en cours d'exécution et de ses enfants. Il vous permet d'exécuter un programme (processus) avec un répertoire racine autre que /. Le programme ne peut pas voir ni accéder aux fichiers en dehors de l'arborescence de répertoires désignée.

Par exemple, vous pouvez exécuter un programme et spécifier son répertoire racine comme /home/user/jail. Dans ce cas, le répertoire racine du programme est en fait /home/user/jail. Le programme ne serait pas au courant des fichiers situés au-dessus de ce répertoire dans la hiérarchie, ni ne pourrait y accéder.

Ce répertoire racine artificiel est appelé une prison chroot . Son but est de limiter l'accès au répertoire d'un attaquant potentiel. La prison chroot verrouille un processus donné et tout ID utilisateur qu'il utilise afin que l'utilisateur ne voie que le répertoire dans lequel le processus s'exécute. Pour le processus, il
apparaît qu'il s'exécute dans le répertoire racine.

Une prison chroot n'est pas destinée à :
– Se défendre contre la falsification intentionnelle par des utilisateurs privilégiés (root).
– Être utilisée pour bloquer l'accès de bas niveau aux périphériques système par des utilisateurs privilégiés. Un utilisateur chroot root peut toujours créer des nœuds de périphérique et y monter les systèmes de fichiers.

Pour qu'un processus chroot démarre avec succès, le répertoire chroot doit être rempli avec tous les fichiers de programme, fichiers de configuration, nœuds de périphérique et bibliothèques partagées requis à leurs emplacements prévus.

Utilisation de l'utilitaire chroot

1. Pour utiliser une prison chroot, utilisez la commande suivante (new_root doit être un répertoire existant) :

# chroot new_root [command]

2. Le répertoire new_root devient le répertoire racine artificiel. chroot devient new_root et exécute la commande facultative. Sans spécifier de commande comme argument, chroot devient new_root et exécute la valeur de la variable d'environnement SHELL ou /bin/sh si SHELL n'est pas défini.

3. Par exemple, en supposant que SHELL est défini sur /bin/bash et que le répertoire /home/user/jail existe, l'exécution de la commande chroot donne les résultats suivants :

# chroot /home/user/jail
chroot: failed to run command ‘/bin/bash’: No such file or directory

4. Le répertoire /home/user/jail prend le nom de /. chroot ne peut pas trouver le /bin/bash dans cette prison chroot et renvoie le message d'erreur. Pour implémenter une prison chroot, créez la nouvelle structure de répertoire racine et copiez tous les fichiers nécessaires dans ce nouveau répertoire racine avant d'exécuter la commande chroot.

Configuration de la prison chroot

1. Pour implémenter une prison chroot et exécuter /bin/bash, créez le répertoire bin dans le répertoire racine artificiel (/home/oracle/jail dans cet exemple), et copiez /bin/bash dans ce répertoire :

$ mkdir /home/oracle/jail/bin
$ cp /bin/bash /home/oracle/jail/bin

2. La commande /bin/bash est liée dynamiquement aux bibliothèques partagées. Ces bibliothèques doivent également être copiées dans la prison chroot. Utilisez la commande ldd pour déterminer quelles bibliothèques sont requises par la commande /bin/bash :

# ldd /bin/bash
	linux-vdso.so.1 =>  (0x00007fff11bff000)
	libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003728800000)
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003d56400000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003d56800000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003d56000000)

3. Copiez chacun de ces fichiers dans un répertoire lib64 du répertoire racine artificiel. Créez le répertoire lib64 et copiez les bibliothèques partagées dans ce répertoire :

$ mkdir /home/oracle/jail/lib64
$ cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/oracle/jail/lib64

4. Maintenant que tous les fichiers requis se trouvent aux emplacements prévus, l'exécution de la commande chroot (en tant que root) donne les résultats suivants :

# chroot /home/oracle/jail

5. La commande a réussi cette fois et le programme /bin/bash s'est exécuté. La saisie de pwd pour imprimer le répertoire actuel affiche /, même si le répertoire réel est /home/oracle/jail :

# pwd
/

La commande pwd s'exécute car il s'agit d'une commande intégrée du shell. L'exécution de toute autre commande échoue car bash ne trouve pas la commande. Le processus suppose qu'il se trouve dans le répertoire racine et n'a aucune visibilité ou connaissance des fichiers situés au-dessus de ce répertoire dans la hiérarchie. Par exemple, l'exécution de la commande ls échoue :

# ls
bash: ls: command not found

6. Utilisez la commande exit pour quitter la prison chroot.

# exit
exit
#
CentOS / RHEL :Comment configurer la prison chroot SFTP
CentOS / RHEL :Comment définir la prison chroot pour vsftp pour tous les utilisateurs
CentOS / RHEL :Comment définir la prison chroot pour vsftp uniquement pour des utilisateurs spécifiques
CentOS / RHEL :Comment configurer SFTP pour Chroot Jail uniquement pour un groupe spécifique


Cent OS
  1. Chroot "prison" - Qu'est-ce que c'est et comment l'utiliser ?

  2. Répertoire des squelettes

  3. Comprendre la prison chroot

  4. Comprendre la réservation SCSI Linux

  5. CentOS / RHEL :Comment définir la prison chroot pour vsftp uniquement pour des utilisateurs spécifiques

Qu'est-ce que la prison chroot et comment l'utiliser ?

Comment installer Go sur CentOS 7

Commande Du sous Linux

Commande mv sous Linux

Comprendre le répertoire /etc/xinetd.d sous Linux

Comprendre les booléens SELinux