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
- Limite l'accès : en cas de compromission de la sécurité, les seuls répertoires endommagés sont ceux de la prison chroot.
- Limites de commandes : les utilisateurs ou les processus sont limités aux commandes autorisées dans la prison.
Désavantages
- Il peut être difficile à configurer.
- Cela nécessite beaucoup de travail-Si vous avez besoin d'une commande supplémentaire que celles autorisées par défaut, vous devez l'inclure manuellement.
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 /chrootjailNous 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, lib64Une 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.bashrcUne 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/bashVous 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)