Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:debian:11:sec:l105 [2025/12/03 16:49] adminelearning:workbooks:debian:11:sec:l105 [2025/12/04 09:51] (Version actuelle) admin
Ligne 28: Ligne 28:
       * 1.2 - Installation       * 1.2 - Installation
       * 1.3 - Utilisation       * 1.3 - Utilisation
-    * LAB #2 - Mise en place d'AppArmor pour sécuriser le serveur +    * LAB #2 - Mise en Place d'un Chroot pour isoler un utilisateur/une application 
-      * 2.1 - Présentation +    * LAB #3 - Mise en place d'AppArmor pour sécuriser le serveur 
-      * 2.2 - Définitions+      * 3.1 - Présentation 
 +      * 3.2 - Définitions
         * Les Profils d'AppArmor         * Les Profils d'AppArmor
         * Les Etats ou Modes d'AppArmor         * Les Etats ou Modes d'AppArmor
-      * 2.3 - Installation+      * 3.3 - Installation
         * Installation des Paquets         * Installation des Paquets
         * Modification de GRUB         * Modification de GRUB
         * Vérification de l'Activation d'AppArmor         * Vérification de l'Activation d'AppArmor
-      * LAB #- Travailler avec AppArmor +    * LAB #- Travailler avec AppArmor 
-        3.1 - Consulter la Liste des Profils Chargés +      4.1 - Consulter la Liste des Profils Chargés 
-          * La Commande aa-status +        * La Commande aa-status 
-        3.2 - Passer le Mode d'un Profil de Complain à Enforce +      4.2 - Passer le Mode d'un Profil de Complain à Enforce 
-          * La Commande aa-complain +        * La Commande aa-complain 
-        3.3 - Passer le Mode d'un Profil d'Enforce à Complain +      4.3 - Passer le Mode d'un Profil d'Enforce à Complain 
-          * La Commande aa-enforce +        * La Commande aa-enforce 
-        3.4 - Désactiver et Réactiver tous les Profils +      4.4 - Désactiver et Réactiver tous les Profils 
-        3.5 - Créer un Profil +      4.5 - Créer un Profil 
-          * La Commande aa-genprof +        * La Commande aa-genprof 
-          * La Commande aa-logprof +        * La Commande aa-logprof 
-        3.6 - Supprimer un Profil +      4.6 - Supprimer un Profil 
-          * La Commande apparmor_parser +        * La Commande apparmor_parser 
-          * La Commande aa-remove-unknown +        * La Commande aa-remove-unknown 
-      * LAB #- Mise en place de SELinux pour sécuriser le serveur +    * LAB #- Mise en place de SELinux pour sécuriser le serveur 
-        4.1 - Présentation +      5.1 - Présentation 
-        4.2 - Définitions +      5.2 - Définitions 
-          * Security Context +        * Security Context 
-          * Domains et Types +        * Domains et Types 
-          * Roles +        * Roles 
-          * Politiques de Sécurité +        * Politiques de Sécurité 
-          * Langage de Politiques +        * Langage de Politiques 
-            * allow +          * allow 
-            * type +          * type 
-          * type_transition +        * type_transition 
-          * Décisions de SELinux +        * Décisions de SELinux 
-            * Décisions d'Accès +          * Décisions d'Accès 
-            * Décisions de Transition +          * Décisions de Transition 
-        4.3 - Commandes SELinux +      5.3 - Commandes SELinux 
-        4.4 - Les Etats de SELinux +      5.4 - Les Etats de SELinux 
-        4.5 - Booléens +      5.5 - Booléens 
-      * LAB #- Travailler avec SELinux +    * LAB #- Travailler avec SELinux 
-        5.1 - Copier et Déplacer des Fichiers +      6.1 - Copier et Déplacer des Fichiers 
-        5.2 - Vérifier les SC des Processus +      6.2 - Vérifier les SC des Processus 
-        5.3 - Visualiser la SC d'un Utilisateur +      6.3 - Visualiser la SC d'un Utilisateur 
-        5.4 - Vérifier la SC d'un fichier +      6.4 - Vérifier la SC d'un fichier 
-        5.5 - Troubleshooting SELinux +      6.5 - Troubleshooting SELinux 
-          * La commande chcon +        * La commande chcon 
-          * La commande restorecon +        * La commande restorecon 
-        5.6 - Le fichier /.autorelabel +      6.6 - Le fichier /.autorelabel 
-        5.7 - La commande semanage +      6.7 - La commande semanage 
-        5.8 - La commande audit2allow +      6.8 - La commande audit2allow
  
 =====System Hardening Manuel===== =====System Hardening Manuel=====
Ligne 831: Ligne 831:
  
 A l'issue de l'implémentation des suggestions, il convient d'exécuter de nouveau la commande **lynis audit system**. A l'issue de l'implémentation des suggestions, il convient d'exécuter de nouveau la commande **lynis audit system**.
- 
  
 <WRAP center round todo 50%> <WRAP center round todo 50%>
Ligne 837: Ligne 836:
 </WRAP> </WRAP>
  
-=====LAB #2 - Mise en place d'AppArmor pour sécuriser le serveur=====+=====LAB #2 - Mise en Place d'un Chroot pour isoler un utilisateur/une application===== 
 + 
 +Le chrootage permet de séparer un utilisateur ou un utilisateur système ( et donc un serveur ) du système.  
 + 
 +Sous Debian 12 le binaire chroot est installé par défaut : 
 + 
 +<code> 
 +root@debian12:~# which chroot 
 +/usr/sbin/chroot 
 +</code> 
 + 
 +Commencez par créer un répertoire pour l'utilisateur qui sera emprisonné : 
 + 
 +<code> 
 +root@debian12:~# mkdir /home/prison 
 +</code> 
 + 
 +Le binaire **/usr/sbin/chroot** doit prendre le SUID bit : 
 + 
 +<code> 
 +root@debian12:~# mkdir /home/prison 
 + 
 +root@debian12:~# ls -l /usr/sbin/chroot 
 +-rwxr-xr-x. 1 root root 48112 Sep 20  2022 /usr/sbin/chroot 
 + 
 +root@debian12:~# chmod +s /usr/sbin/chroot 
 + 
 +root@debian12:~# ls -l /usr/sbin/chroot 
 +-rwsr-sr-x. 1 root root 48112 Sep 20  2022 /usr/sbin/chroot 
 +</code> 
 + 
 +Créez maintenant un script de connexion générique pour que l'utilisateur **prison** puisse se connecter : 
 + 
 +<code> 
 +root@debian12:~# vi /bin/chroot 
 + 
 +root@debian12:~# cat /bin/chroot 
 +#!/bin/bash 
 +exec -c /usr/sbin/chroot /home/$USER /bin/bash 
 +</code> 
 + 
 +Rendez ce script exécutable : 
 + 
 +<code> 
 +root@debian12:~# chmod +x /bin/chroot  
 +</code> 
 + 
 +Il est maintenant nécessaire de copier toutes les commandes dont l'utilisateur **prison** aura besoin. Dans cet exemple, nous allons nous contenter de copier **/bin/bash** et **/bin/ls** ainsi que les bibliothèques associées : 
 + 
 +<code> 
 +root@debian12:~# mkdir /home/prison/bin 
 + 
 +root@debian12:~# cp /bin/bash /home/prison/bin/ 
 + 
 +root@debian12:~# ldd /bin/bash 
 +        linux-vdso.so.1 (0x00007ffd39fcf000) 
 +        libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fef082e8000) 
 +        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fef08106000) 
 +        /lib64/ld-linux-x86-64.so.2 (0x00007fef08471000) 
 +    
 +root@debian12:~# mkdir /home/prison/lib64 
 + 
 +root@debian12:~# mkdir -p /home/prison/lib/x86_64-linux-gnu/ 
 + 
 +root@debian12:~# cp /lib/x86_64-linux-gnu/libtinfo.so.6 /home/prison/lib/x86_64-linux-gnu/ 
 + 
 +root@debian12:~# cp /lib/x86_64-linux-gnu/libc.so.6 /home/prison/lib/x86_64-linux-gnu/ 
 + 
 +root@debian12:~# cp /lib64/ld-linux-x86-64.so.2 /home/prison/lib64 
 + 
 +root@debian12:~# cp /bin/ls /home/prison/bin/ 
 + 
 +root@debian12:~# ldd /bin/ls 
 +        linux-vdso.so.1 (0x00007fff3db26000) 
 +        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f8afb9a0000) 
 +        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8afb7be000) 
 +        libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f8afb724000) 
 +        /lib64/ld-linux-x86-64.so.2 (0x00007f8afba0a000) 
 + 
 +root@debian12:~# cp /lib/x86_64-linux-gnu/libselinux.so.1 /home/prison/lib/x86_64-linux-gnu/ 
 + 
 +root@debian12:~# cp /lib/x86_64-linux-gnu/libpcre2-8.so.0 /home/prison/lib/x86_64-linux-gnu/ 
 +</code> 
 + 
 +Créez maintenant le groupe chroot : 
 + 
 +<code> 
 +root@debian12:~# groupadd chroot 
 + 
 +root@debian12:~# cat /etc/group | grep chroot 
 +chroot:x:1001: 
 +</code> 
 + 
 +Créez maintenant l'utilisateur **prison** : 
 + 
 +<code> 
 +root@debian12:~# useradd prison -c chroot_user -d /home/prison -g chroot -s /bin/chroot 
 +</code> 
 + 
 +Dernièrement, modifiez le propriétaire et le groupe du répertoire **/home/prison** : 
 + 
 +<code> 
 +root@debian12:~# chown -R prison:chroot /home/prison 
 +</code> 
 + 
 +Essayez maintenant de vous connecter en tant que l'utilisateur prison : 
 + 
 +<code> 
 +root@debian12:~# su - prison 
 + 
 +bash-5.2$ pwd 
 +
 + 
 +bash-5.2$ ls 
 +bin  lib  lib64 
 + 
 +bash-5.2$ ls -la 
 +total 20 
 +drwxr-xr-x. 5 1001 1001 4096 Dec  1 13:59 . 
 +drwxr-xr-x. 5 1001 1001 4096 Dec  1 13:59 .. 
 +drwxr-xr-x. 2 1001 1001 4096 Dec  1 13:56 bin 
 +drwxr-xr-x. 3 1001 1001 4096 Dec  1 13:59 lib 
 +drwxr-xr-x. 2 1001 1001 4096 Dec  1 13:56 lib64 
 + 
 +bash-5.2$ exit 
 +exit 
 + 
 +root@debian12:~#  
 +</code> 
 + 
 +Notez que l'utilisateur **prison** est //chrooté//
 + 
 +=====LAB #3 - Mise en place d'AppArmor pour sécuriser le serveur=====
  
-====2.1 - Présentation====+====3.1 - Présentation====
  
 **AppArmor**, abréviation d'Application Armor (Armure d'Application), est un module de sécurité du noyau pour les distributions Linux basées sur Debian qui vous permet de définir des profils de sécurité par application. Ces profils restreignent les ressources système auxquelles une application peut accéder, créant ainsi efficacement un bac à sable (sandbox) autour de chaque application. Ce mécanisme de sécurité permet de prévenir l'accès non autorisé aux données sensibles et réduit le risque de failles de sécurité. AppArmor s’appuie sur l’interface **LSM** (Linux Security Modules) fournie par le noyau Linux. **AppArmor**, abréviation d'Application Armor (Armure d'Application), est un module de sécurité du noyau pour les distributions Linux basées sur Debian qui vous permet de définir des profils de sécurité par application. Ces profils restreignent les ressources système auxquelles une application peut accéder, créant ainsi efficacement un bac à sable (sandbox) autour de chaque application. Ce mécanisme de sécurité permet de prévenir l'accès non autorisé aux données sensibles et réduit le risque de failles de sécurité. AppArmor s’appuie sur l’interface **LSM** (Linux Security Modules) fournie par le noyau Linux.
Ligne 858: Ligne 989:
   * **Conformité en matière de sécurité** : De nombreuses distributions Linux, notamment Debian et Ubuntu, utilisent AppArmor par défaut pour appliquer des politiques de sécurité.   * **Conformité en matière de sécurité** : De nombreuses distributions Linux, notamment Debian et Ubuntu, utilisent AppArmor par défaut pour appliquer des politiques de sécurité.
  
-====2.2 - Définitions====+====3.2 - Définitions====
  
 ===Les Profils d'AppArmor=== ===Les Profils d'AppArmor===
Ligne 1007: Ligne 1138:
 | **enforce** | C'est le mode par défaut. AppArmor bloque toute tentative de l'application de faire quelque chose qui n'est pas explicitement autorisé par son profil. | | **enforce** | C'est le mode par défaut. AppArmor bloque toute tentative de l'application de faire quelque chose qui n'est pas explicitement autorisé par son profil. |
  
-====2.3 - Installation====+====3.3 - Installation====
  
 ===Installation des Paquets=== ===Installation des Paquets===
Ligne 1200: Ligne 1331:
 </code> </code>
  
-=====LAB #- Travailler avec AppArmor=====+=====LAB #- Travailler avec AppArmor=====
  
-====3.1 - Consulter la Liste des Profils Chargés====+====4.1 - Consulter la Liste des Profils Chargés====
  
 Pour consulter la liste de tous les profils Apparmor chargés pour les applications et les processus et détaille leur statut (loaded., complain mode, enforce mode), utilisez la commande **aa-status** : Pour consulter la liste de tous les profils Apparmor chargés pour les applications et les processus et détaille leur statut (loaded., complain mode, enforce mode), utilisez la commande **aa-status** :
Ligne 1255: Ligne 1386:
 </code> </code>
  
-====3.2 - Passer le Mode d'un Profil de Complain à Enforce====+====4.2 - Passer le Mode d'un Profil de Complain à Enforce====
  
 Le profil **traceroute** est actuellement en mode **complain**. Pour passer ce profil en mode **enforce**, saisissez la commande suivante : Le profil **traceroute** est actuellement en mode **complain**. Pour passer ce profil en mode **enforce**, saisissez la commande suivante :
Ligne 1309: Ligne 1440:
 </code> </code>
  
-====3.3 - Passer le Mode d'un Profil d'Enforce à Complain====+====4.3 - Passer le Mode d'un Profil d'Enforce à Complain====
  
 Pour repasser le profil en mode **enforce**, saisissez la commande suivante : Pour repasser le profil en mode **enforce**, saisissez la commande suivante :
Ligne 1363: Ligne 1494:
 </code> </code>
  
-====3.4 - Désactiver et Réactiver tous les Profils====+====4.4 - Désactiver et Réactiver tous les Profils====
  
 Pour déactiver tous les profils, utilisez la commande **aa-teardown** : Pour déactiver tous les profils, utilisez la commande **aa-teardown** :
Ligne 1399: Ligne 1530:
 Notification emitter started in the background Notification emitter started in the background
  
-====3.5 - Créer un Profil====+====4.5 - Créer un Profil====
  
 Créez le script **newusercheck.sh** qui a pour but d'envoyer un email à un récipent chaque fois qu'un nouvel utilisateur est créé dans Debian 12 : Créez le script **newusercheck.sh** qui a pour but d'envoyer un email à un récipent chaque fois qu'un nouvel utilisateur est créé dans Debian 12 :
Ligne 1962: Ligne 2093:
 </code> </code>
  
-====3.6 - Supprimer un Profil====+====4.6 - Supprimer un Profil====
  
 Afin de supprimer le profil **root.scripts.newusercheck.sh**, il faut de d'abord le décharger du noyau avant de supprimer le fichier profil : Afin de supprimer le profil **root.scripts.newusercheck.sh**, il faut de d'abord le décharger du noyau avant de supprimer le fichier profil :
Ligne 2064: Ligne 2195:
 </code> </code>
  
-=====LAB #- Mise en place de SELinux pour sécuriser le serveur=====+=====LAB #- Mise en place de SELinux pour sécuriser le serveur=====
  
-====4.1 - Présentationn====+====5.1 - Présentationn====
  
 Désactivez AppArmor : Désactivez AppArmor :
Ligne 2216: Ligne 2347:
 </WRAP> </WRAP>
  
-====4.2 - Introducton====+====5.2 - Introducton====
  
 L'approche %%SELinux%% (//Security Enhanced Linux//) à la sécurité est une approche de type **TE**. Elle essaie aussi d'intégrer les notions des approches de type **RBAC**, **MAC** et **MLS** sous la forme de **MCS** : L'approche %%SELinux%% (//Security Enhanced Linux//) à la sécurité est une approche de type **TE**. Elle essaie aussi d'intégrer les notions des approches de type **RBAC**, **MAC** et **MLS** sous la forme de **MCS** :
Ligne 2239: Ligne 2370:
 Chaque **//classe d'objet//** possède un jeu de permissions possibles ou **//actions//** qui peuvent être uniques à la classe ou bien **héritées** d'autres classes. Chaque **//classe d'objet//** possède un jeu de permissions possibles ou **//actions//** qui peuvent être uniques à la classe ou bien **héritées** d'autres classes.
  
-====4.3 - Définitions====+====5.3 - Définitions====
  
 ===Security Context=== ===Security Context===
Ligne 2428: Ligne 2559:
   * de créer des **//objets//** dans différents **Types** que le répertoire parent de l'**//objet//**.   * de créer des **//objets//** dans différents **Types** que le répertoire parent de l'**//objet//**.
  
-====4.4 - Commandes SELinux====+====5.4 - Commandes SELinux====
  
 ^ Commande ^ Description ^ ^ Commande ^ Description ^
Ligne 2449: Ligne 2580:
 | togglesebool | Bascule la valeur d'un booléen | | togglesebool | Bascule la valeur d'un booléen |
  
-====4.5 - Les Etats de SELinux====+====5.5 - Les Etats de SELinux====
  
 %%SELinux%% connait trois états : %%SELinux%% connait trois états :
Ligne 2551: Ligne 2682:
 </code> </code>
  
-====4.6 - Booléens====+====5.6 - Booléens====
  
 Les booléens permettent à des ensembles de règles d'être utilisées d'une manière alternative. Les booléens permettent à des ensembles de règles d'être utilisées d'une manière alternative.
Ligne 2693: Ligne 2824:
 </code> </code>
  
-=====LAB #- Travailler avec SELinux=====+=====LAB #- Travailler avec SELinux=====
  
 Afin reconstruire la politique actuelle **sans** les règles **dontaudit**, utilisez la commande **semodule** : Afin reconstruire la politique actuelle **sans** les règles **dontaudit**, utilisez la commande **semodule** :
Ligne 2732: Ligne 2863:
 </code> </code>
  
-====5.1 - Copier et Déplacer des Fichiers====+====6.1 - Copier et Déplacer des Fichiers====
  
 Créez deux fichiers **file1** et **file2** en tant que l'utilisateur **trainee** puis visualisez les SC des fichiers : Créez deux fichiers **file1** et **file2** en tant que l'utilisateur **trainee** puis visualisez les SC des fichiers :
Ligne 2771: Ligne 2902:
 Notez que la commande **mv** maintient le **type** d'origine. Notez que la commande **mv** maintient le **type** d'origine.
  
-====5.2 - Vérifier les SC des Processus====+====6.2 - Vérifier les SC des Processus====
  
 Il convient d'utiliser l'option **Z** avec la commande **ps** : Il convient d'utiliser l'option **Z** avec la commande **ps** :
Ligne 2835: Ligne 2966:
 </code> </code>
  
-====5.3 - Visualiser la SC d'un Utilisateur====+====6.3 - Visualiser la SC d'un Utilisateur====
  
 Utilisez l'option **-Z** avec la commande **id** : Utilisez l'option **-Z** avec la commande **id** :
Ligne 2854: Ligne 2985:
 </code> </code>
  
-====5.4 - Vérifier la SC d'un fichier====+====6.4 - Vérifier la SC d'un fichier====
  
 Il convient d'utiliser la commande ls avec l'option **-Z** : Il convient d'utiliser la commande ls avec l'option **-Z** :
Ligne 2885: Ligne 3016:
 </code> </code>
  
-====5.5 - Troubleshooting SELinux====+====6.5 - Troubleshooting SELinux====
  
 L'interprétation des messages journalisés de %%SELinux%% est souvent la clef d'un dépannage efficace et rapide. L'interprétation des messages journalisés de %%SELinux%% est souvent la clef d'un dépannage efficace et rapide.
Ligne 3186: Ligne 3317:
 </code> </code>
  
-====5.7 - La commande semanage====+====6.7 - La commande semanage====
  
 Pour illustrer l'utilisation de cette commande, considérez le besoin de mettre le service apache à l'écoute du port **8090** au lieu du port standard. Pour illustrer l'utilisation de cette commande, considérez le besoin de mettre le service apache à l'écoute du port **8090** au lieu du port standard.
Ligne 3256: Ligne 3387:
 </code> </code>
  
-====5.8 - La commande audit2allow====+====6.8 - La commande audit2allow====
  
 La création d'un module de politique personnalisé se fait en utilisant la commande **audit2allow**. L'administrateur de sécurité à recours à la création de modules quand, et uniquement quand : La création d'un module de politique personnalisé se fait en utilisant la commande **audit2allow**. L'administrateur de sécurité à recours à la création de modules quand, et uniquement quand :
Menu