Comment configurer les politiques SELinux

Configurer les politiques SELinux Configuration des politiques SELinux Guide des commandes SELinux

Configurer les politiques SELinux (Security-Enhanced Linux) est essentiel pour maintenir un environnement Linux sécurisé. SELinux ajoute une couche de sécurité au noyau Linux en appliquant des politiques de contrôle d’accès obligatoire (MAC). Bien que cela puisse sembler intimidant au début, maîtriser les politiques SELinux peut vous aider à sécuriser efficacement vos applications, services et tout le système d’exploitation.

Dans ce guide détaillé, nous explorerons comment configurer les politiques SELinux, découvrir les principales commandes SELinux, et obtenir des informations sur le dépannage et la maintenance de SELinux dans votre environnement.

Introduction à SELinux

SELinux est un module de sécurité pour le noyau Linux qui permet de faire respecter des politiques de contrôle d’accès pour les processus, fichiers et autres ressources système. Contrairement au contrôle d’accès discrétionnaire (DAC), qui repose sur les permissions des fichiers et des répertoires, SELinux fonctionne sous un contrôle d’accès obligatoire, ce qui signifie que les politiques sont appliquées indépendamment des privilèges de l’utilisateur ou du processus.

Il existe trois modes principaux pour SELinux :

  • Enforcing (Actif) : Les politiques SELinux sont appliquées.
  • Permissive (Permissif) : SELinux consigne les violations des politiques sans les appliquer.
  • Disabled (Désactivé) : SELinux est complètement désactivé.

Pourquoi configurer les Politiques SELinux ?

Configurer les politiques SELinux vous aide à :

  1. Contrôler comment les applications interagissent avec les fichiers et répertoires.
  2. Empêcher tout accès non autorisé aux données sensibles.
  3. Détecter et enregistrer les activités suspectes.
  4. Renforcer la sécurité du système contre les vulnérabilités et les exploits.

Passons maintenant à la procédure étape par étape pour configurer les politiques SELinux.

Vérification de l’État de SELinux

Avant de configurer SELinux, il est important de vérifier son état sur votre système.

Commande :

$ sestatus

Explication :

  • La commande sestatus montre l’état actuel de SELinux, y compris son mode, le type de politique et toute violation éventuelle.
  • Champs clés de la sortie :
    • Statut SELinux : Indique si SELinux est activé ou désactivé.
    • Mode actuel : Affiche si SELinux est en mode enforcingpermissive ou disabled.
    • Type de politique : Montre le type de politique utilisé (souvent targeted).

Changer les Modes de SELinux

Vous pouvez modifier les modes SELinux de manière temporaire ou permanente.

Modification temporaire du Mode

Commande pour passer SELinux en mode permissif :

$ sudo setenforce 0

Commande pour réactiver le mode actif :

$ sudo setenforce 1

Explication :

  • La commande setenforce modifie temporairement le mode SELinux jusqu’au redémarrage du système.
    • 0 = Mode permissif.
    • 1 = Mode actif.

Modification Permanente du Mode

Modifiez le fichier de configuration de SELinux pour changer le mode de façon permanente.

Commande :

$ sudo nano /etc/selinux/config

Trouvez la ligne suivante :

SELINUX=enforcing

Changez-la en :

SELINUX=permissive

ou

SELINUX=disabled

Enregistrez le fichier et redémarrez le système :

$ sudo reboot

Explication :

  • La modification du fichier /etc/selinux/config garantit que le mode persiste après un redémarrage.
  • Utilisez le mode disabled uniquement si cela est absolument nécessaire, car il désactive complètement SELinux.

Comprendre les contextes SELinux

SELinux utilise des contextes pour définir des règles de contrôle d’accès pour les fichiers, processus et autres ressources. Chaque contexte se compose des éléments suivants :

  • Utilisateur : L’utilisateur SELinux (par ex., system_u).
  • Rôle : Le rôle assigné à l’utilisateur ou au processus (par ex., object_r).
  • Type : Le type associé au fichier ou au processus (par ex., httpd_sys_content_t).

Afficher les Contextes des Fichiers

Commande :

$ ls -Z /chemin/vers/le/répertoire

Explication :

  • La commande ls -Z affiche le contexte SELinux des fichiers et répertoires.
  • Exemple de sortie :-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
    • system_u : Utilisateur SELinux.
    • object_r : Rôle.
    • httpd_sys_content_t : Type.
    • s0 : Niveau de sécurité.

Modifier les Contextes des Fichiers SELinux

Pour changer les contextes des fichiers, utilisez la commande chcon.

Changer temporairement un contexte

Commande :

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

Explication :

  • L’option -t spécifie le type que vous voulez attribuer (par ex., httpd_sys_content_t pour le contenu d’un serveur web).
  • Les changements temporaires ne persistent pas après un redémarrage ou un relabelling.

Restaurer les Contextes par Défaut

Commande :

$ sudo restorecon -v /var/www/html/index.html

Explication :

  • La commande restorecon restaure le contexte par défaut d’un fichier ou répertoire selon les règles de la politique.
  • L’option -v active une sortie détaillée, montrant les changements effectués.

Travailler avec les Booléens SELinux

Les booléens SELinux permettent d’activer ou de désactiver des politiques spécifiques sans réécrire la politique.

Voir les Booléens Disponibles

Commande :

$ getsebool -a

Explication :

  • La commande getsebool répertorie tous les booléens disponibles et leur état actuel (on ou off).

Modifier Temporairement un Booléen

Commande :

$ sudo setsebool httpd_enable_cgi on

Explication :

  • La commande setsebool modifie temporairement l’état d’un booléen. Dans cet exemple, elle active les scripts CGI pour le serveur Apache HTTP.

Modifier un Booléen de Manière Permanente

Commande :

$ sudo setsebool -P httpd_enable_cgi on

Explication :

  • L’option -P rend le changement persistant après les redémarrages.

Création et Compilation de Politiques SELinux

Dans certains cas, vous devrez créer des politiques personnalisées pour permettre à des applications ou services spécifiques de fonctionner correctement sous SELinux.

Générer un Journal d’Audit

Commande :

$ sudo ausearch -m avc -ts recent

Explication :

  • La commande ausearch recherche dans le journal d’audit les violations liées à SELinux (AVC). L’option -m avc filtre les messages du cache vecteur d’accès.

Générer un Module de Politique

Commande :

$ sudo audit2allow -a -M ma_politique_personnalisée

Explication :

  • L’outil audit2allow convertit les journaux d’audit en module de politique SELinux personnalisée.
  • L’option -M spécifie le nom du module.

Installer le module de politique

Commande :

$ sudo semodule -i ma_politique_personnalisée.pp

Explication :

  • La commande semodule installe ou gère les modules de politique SELinux.
  • L’option -i installe le module compilé (.pp).

Dépannage des Problèmes SELinux

SELinux peut parfois bloquer des comportements légitimes d’application. Utilisez les commandes suivantes pour diagnostiquer et résoudre ces problèmes.

Afficher les Journaux d’Audit

Commande :

$ sudo cat /var/log/audit/audit.log | grep denied

Explication :

  • Cette commande filtre le journal d’audit pour afficher uniquement les opérations refusées par les politiques SELinux.

Vérifier les Alertes SELinux

Commande :

$ sudo sealert -a /var/log/audit/audit.log

Explication :

  • L’outil sealert analyse les journaux d’audit et fournit des recommandations détaillées pour résoudre les problèmes liés à SELinux.

Désactiver SELinux pour des Tests

Bien qu’il ne soit pas recommandé de désactiver SELinux de manière permanente, vous pouvez le désactiver temporairement pour effectuer des tests.

Commande :

$ sudo setenforce 0

Explication :

  • Cette commande bascule SELinux en mode permissif, désactivant ainsi l’application des politiques tout en continuant à enregistrer les violations.

Pour réactiver SELinux :

$ sudo setenforce 1

Bonnes Pratiques pour Configurer les Politiques SELinux

  1. Comprendre les Politiques : Familiarisez-vous avec les politiques SELinux par défaut avant d’apporter des modifications.
  2. Utiliser les Booléens : Exploitez les booléens SELinux pour activer ou désactiver certaines fonctionnalités au lieu d’écrire de nouvelles politiques.
  3. Tester en Mode Permissif : Utilisez le mode permissif pour identifier les problèmes sans bloquer la fonctionnalité.
  4. Auditer les Journaux : Examinez régulièrement les journaux d’audit pour détecter les violations liées à SELinux.
  5. Sauvegarder les Politiques : Effectuez toujours une sauvegarde de vos politiques et configurations personnalisées.

FAQ

  • Qu’est-ce que SELinux et pourquoi est-il important ?
    • SELinux est un module de sécurité pour Linux qui applique des politiques de contrôle d’accès pour renforcer la sécurité du système en restreignant les accès non autorisés.
  • Comment puis-je vérifier si SELinux est activé ?
    • Utilisez la commande sestatus pour vérifier si SELinux est activé et afficher son mode actuel.
  • Quelle est la différence entre les modes permissif et actif (enforcing) ?
    • En mode permissif, SELinux enregistre les violations des politiques sans les appliquer. En mode actif (enforcing), SELinux bloque activement les actions non autorisées.
  • Comment puis-je restaurer le contexte SELinux par défaut d’un fichier ?
    • Utilisez la commande restorecon command: $ sudo restorecon -v /chemin/vers/fichier
  • SELinux peut-il être désactivé de manière permanente ?
    • Oui, en modifiant le fichier /etc/selinux/config et en définissant SELINUX=disabled. Cependant, cela n’est pas recommandé pour des raisons de sécurité.
  • Quels outils puis-je utiliser pour résoudre les problèmes liés à SELinux ?
    • Utilisez des outils comme ausearchaudit2allow, et sealert pour diagnostiquer et résoudre les problèmes liés à SELinux.

Conclusion

Configurer les politiques SELinux peut sembler complexe, mais avec une approche structurée et une bonne compréhension des outils et commandes SELinux, cela devient réalisable. Qu’il s’agisse de changer les modes, de modifier les contextes des fichiers, de créer des politiques personnalisées ou de résoudre des problèmes, chaque étape joue un rôle essentiel dans la sécurisation et l’efficacité d’un environnement Linux. En suivant les meilleures pratiques et en auditant régulièrement votre système, vous pourrez tirer pleinement parti de SELinux pour protéger votre infrastructure contre les accès non autorisés.

Laisser un commentaire