Comment configurer les prisons de chroot Linux

Comment configurer les prisons de chroot Linux
Surtout ceux dédiés aux services critiques, les systèmes Linux nécessitent des connaissances de niveau expert pour travailler 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é 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

  • Limite l'accès: En cas de compromis de sécurité, les seuls répertoires endommagés sont ceux de la prison de chroot.
  • Limites de commande: les utilisateurs ou les processus se limitent aux commandes autorisées dans la prison.

Désavantages

  • Il peut être difficile de 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 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)