Malheureusement, même après avoir pris des mesures de sécurité cruciales, les vulnérabilités de sécurité trouvent toujours leur chemin dans les systèmes sécurisés. Une façon de gérer et de protéger votre système est de limiter les dégâts possibles une fois qu'une attaque se produit.
Dans ce tutoriel, nous discuterons du processus d'utilisation de la prison de chroot pour gérer les dommages du système en cas d'attaque. Nous examinerons comment isoler les processus et les sous-processus dans un environnement particulier avec de faux privilèges racinaires. Cela limitera le processus à un répertoire spécifique et refusera l'accès à d'autres domaines système.
Une brève introduction à la prison de chroot
Une prison de chroot est une méthode d'isolement des processus et leur sous-processus du système principal en utilisant de fausses privilèges racine.
Comme mentionné, l'isolement d'un processus particulier utilisant de faux privilèges racinaires limite les dommages dans le cas d'une attaque malveillante. Les services chrootés sont limités aux répertoires et aux fichiers au sein de leurs répertoires et ne sont pas persistants lors du redémarrage du service.
Pourquoi utiliser la prison de chroot
Le but principal de la prison de chroot est une mesure de sécurité. Le chroot est également utile lors de la récupération de mots de passe perdus en montant des appareils à partir de médias en direct.
Il existe divers avantages et inconvénients de la prise de prison de chroot. Ceux-ci inclus:
Avantages
Désavantages
Comment créer une prison de chroot de base
Dans ce processus, nous créerons une prison de 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 / le dossier du 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 fausse racine contenant les commandes que nous y attribuerons. Avec les commandes que nous utiliserons, nous aurons besoin du répertoire bac (contient les exécutables de commande) et le, etc., répertoire (contenant des fichiers de configuration pour les commandes).
À l'intérieur du dossier / chrootjail, créez ces deux dossiers:
sudo mkdir / chrootjail / etc, bin
L'étape suivante consiste à créer des répertoires pour des 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 à l'intérieur du dossier bin, vous devez passer le chemin complet pour les 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. À l'intérieur du répertoire de la prison, créez ces dossiers.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64
Une fois que nous avons créé les répertoires de bibliothèque dynamique, nous pouvons les énumérer à l'aide d'une arbre, comme indiqué ci-dessous:
Au fur et à mesure que nous progressons, vous commencerez à obtenir une image claire de ce que signifie une prison de chroot.
Nous créons un environnement similaire à un répertoire racine normal d'un système Linux. La différence est que, à l'intérieur de cet environnement, seules les 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 pour 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 boucle simple pour copier chaque bibliothèque dans toutes les bibliothèques vers / chrootjail / lib / x86_64-linux-gninu
Répétons ce processus pour la commande LS et GREP:
Pour la commande LS:
Pour la commande grep:
Ensuite, à l'intérieur du répertoire LIB64, nous avons une bibliothèque partagée dans tous les binaires. Nous pouvons simplement le copier à l'aide d'une commande CP simple:
Ensuite, modifions le fichier de connexion principale principale (situé dans / etc / bash.Bashrc dans Debian) afin que nous puissions modifier l'invite bash à notre goût. Utilisation d'un écho simple et des commandes TEE comme indiqué:
sudo echo 'ps1 = "chrootjail #"' | tee sudo / chrootjail / etc / bash.bashrc
Une fois que nous aurons terminé toutes les étapes ci-dessus, nous pouvons nous connecter à l'environnement de la prison en utilisant la commande Chroot comme indiqué.
sudo chroot / chrootjail / bin / bash
Vous obtiendrez des privilèges racine avec l'invite similaire à celles créées dans la commande echo et tee ci-dessus.
Une fois que vous vous êtes connecté, vous verrez que vous n'avez accès qu'aux commandes que vous avez inclus lorsque vous avez créé la prison. Si vous avez besoin de plus de commandes, vous devez les ajouter manuellement.
NOTE: Depuis que vous avez inclus la coquille de bash, vous aurez accès à toutes les commandes intégrées bash. Qui vous permet de quitter la prison en utilisant la commande de sortie.
Conclusion
Ce tutoriel a couvert ce qu'est la prison de chroot et comment nous pouvons l'utiliser pour créer un environnement isolé du système principal. Vous pouvez utiliser les techniques discutées dans le Guide Can pour créer des environnements isolés pour les services critiques.
Pour pratiquer ce que vous avez appris, essayez de créer une prison Apache2.
INDICE: Commencez par créer un répertoire racine, ajoutez les fichiers config (etc / apache2), ajoutez le document root (/ var / www / html), ajoutez le binaire (/ usr / sbin / apache2) et enfin ajoutez les bibliothèques requises (LDD / usr / sbin / apache2)