Sécurité

Comment configurer les prisons Linux Chroot

Comment configurer les prisons Linux Chroot
En particulier ceux dédiés aux services critiques, les systèmes Linux nécessitent des connaissances de niveau expert pour travailler avec et des mesures de sécurité de base.

Malheureusement, même après avoir pris des mesures de sécurité cruciales, les vulnérabilités de sécurité se retrouvent toujours dans les systèmes sécurisés. Une façon de gérer et de protéger votre système est de limiter les dommages possibles une fois qu'une attaque se produit.

Dans ce tutoriel, nous aborderons le processus d'utilisation de la prison chroot pour gérer les dommages du système en cas d'attaque. Nous verrons comment isoler les processus et sous-processus dans un environnement particulier avec de faux privilèges root. Cela limitera le processus à un répertoire spécifique et refusera l'accès à d'autres zones du système.

Une brève introduction à la prison chroot

Une prison chroot est une méthode pour isoler les processus et leurs sous-processus du système principal en utilisant de faux privilèges root.

Comme mentionné, isoler un processus particulier à l'aide de faux privilèges root limite les dommages en cas d'attaque malveillante. Les services chrootés sont limités aux répertoires et fichiers contenus dans leurs répertoires et ne sont pas persistants au redémarrage du service.

Pourquoi utiliser la prison chroot

Le but principal de la prison chroot est une mesure de sécurité. Chroot est également utile pour récupérer des mots de passe perdus en montant des périphériques à partir de médias en direct.

Il y a divers avantages et inconvénients à définir une prison chroot. Ceux-ci inclus:

Avantages

Désavantages

Comment créer une prison Chroot basique

Dans ce processus, nous allons créer une prison chroot de base avec 3 commandes limitées à ce dossier. Cela aidera à illustrer comment créer une prison et attribuer diverses commandes.

Commencez par créer un dossier principal. Vous pouvez considérer ce dossier comme le dossier / dans le système principal. Le nom du dossier peut être n'importe quoi. Dans notre cas, nous l'appelons /chrootjail

sudo mkdir /chrootjail

Nous utiliserons ce répertoire comme la fausse racine contenant les commandes que nous lui attribuerons. Avec les commandes que nous utiliserons, nous aurons besoin du répertoire bin (contient les exécutables de la commande) et du, etc., répertoire (contenant les fichiers de configuration des commandes).

Dans le dossier /chrootjail, créez ces deux dossiers :

sudo mkdir /chrootjail/etc,bin

L'étape suivante consiste à créer des répertoires pour les bibliothèques liées dynamiquement pour les commandes que nous voulons inclure dans la prison. Pour cet exemple, nous utiliserons les commandes bash, ls et grep.

Utilisez la commande ldd pour répertorier les dépendances de ces commandes, comme indiqué ci-dessous :

sudo ldd /bin/bash /bin/ls /bin/grep

Si vous n'êtes pas dans le dossier bin, vous devez transmettre le chemin complet des commandes que vous souhaitez utiliser. Par exemple, ldd /bin/bash ou ldd /bin/grep

À partir de la sortie ldd ci-dessus, nous avons besoin des répertoires lib64 et /lib/x86_64-linux-gnu. Dans le répertoire jail, créez ces dossiers.

sudo mkdir -p /chrootjaillib/x86_64-linux-gnu, lib64

Une fois les répertoires de bibliothèque dynamiques créés, nous pouvons les répertorier à l'aide d'une arborescence, comme indiqué ci-dessous :

Au fur et à mesure que nous progressons, vous commencerez à avoir une image claire de ce que signifie une prison chroot.

Nous créons un environnement similaire à un répertoire racine normal d'un système Linux. La différence est qu'à l'intérieur de cet environnement, seules des commandes spécifiques sont autorisées et l'accès est limité.

Maintenant que nous avons créé le bac. etc., lib et lib64, nous pouvons ajouter les fichiers requis dans leurs répertoires respectifs.

Commençons par les binaires.

sudo cp /bin/bash /chrootjail/bin && sudo cp /bin/ls /chrootjail/bin && sudo cp /bin/grep /chrootjail/bin

Après avoir copié les binaires pour les commandes dont nous avons besoin, nous avons besoin des bibliothèques pour chaque commande. Vous pouvez utiliser la commande ldd pour afficher les fichiers à copier.

Commençons par bash. Pour bash, nous avons besoin des bibliothèques suivantes :

/lib/x86_64-linux-gnu/libtinfo.donc.6
/lib/x86_64-linux-gnu/libdl.donc.2
/lib/x86_64-linux-gnu/libc.donc.6
/lib64/ld-linux-x86-64.donc.2

Au lieu de copier tous ces fichiers un par un, nous pouvons utiliser une simple boucle for pour copier chaque bibliothèque de toutes les bibliothèques dans /chrootjail/lib/x86_64-linux-gnu

Répétons ce processus pour les commandes ls et grep :

Pour la commande ls :

Pour la commande grep :

Ensuite, dans le répertoire lib64, nous avons une bibliothèque partagée sur tous les binaires. Nous pouvons simplement le copier à l'aide d'une simple commande cp :

Ensuite, éditons le fichier de connexion bash principal (situé dans /etc/bash.bashrc dans Debian) afin que nous puissions modifier l'invite bash à notre guise. En utilisant une simple commande echo et tee comme indiqué :

sudo echo 'PS1="CHROOTJAIL #"' | sudo tee /chrootjail/etc/bash.bashrc

Une fois que nous avons terminé toutes les étapes ci-dessus, nous pouvons nous connecter à l'environnement de prison à l'aide de la commande chroot comme indiqué.

sudo chroot /chrootjail /bin/bash

Vous obtiendrez des privilèges root avec l'invite similaire à ceux créés dans la commande echo et tee ci-dessus.

Une fois connecté, vous verrez que vous n'avez accès qu'aux commandes que vous avez incluses lors de la création de la prison. Si vous avez besoin de plus de commandes, vous devez les ajouter manuellement.

REMARQUE: Puisque vous avez inclus le shell bash, vous aurez accès à toutes les commandes intégrées de bash. Cela vous permet de quitter la prison en utilisant la commande exit.

Conclusion

Ce tutoriel a couvert ce qu'est la prison chroot et comment nous pouvons l'utiliser pour créer un environnement isolé du système principal. Vous pouvez utiliser les techniques décrites dans le guide pour créer des environnements isolés pour les services critiques.

Pour mettre en pratique ce que vous avez appris, essayez de créer une prison Apache2.

INDICE: Commencez par créer un répertoire racine, ajoutez les fichiers de configuration (etc/apache2), ajoutez la racine du document (/var/www/html), ajoutez le binaire (/usr/sbin/apache2) et enfin ajoutez les bibliothèques requises (ldd / usr/sbin/apache2)

Comment afficher la superposition OSD dans les applications et jeux Linux en plein écran
Jouer à des jeux en plein écran ou utiliser des applications en mode plein écran sans distraction peut vous couper des informations système pertinente...
Top 5 des cartes de capture de jeu
Nous avons tous vu et aimé des gameplays en streaming sur YouTube. PewDiePie, Jakesepticye et Markiplier ne sont que quelques-uns des meilleurs joueur...
Comment développer un jeu sur Linux
Il y a dix ans, peu d'utilisateurs de Linux prédisaient que leur système d'exploitation préféré serait un jour une plate-forme de jeu populaire pour l...