
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 à :
- Contrôler comment les applications interagissent avec les fichiers et répertoires.
- Empêcher tout accès non autorisé aux données sensibles.
- Détecter et enregistrer les activités suspectes.
- 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
enforcing
,permissive
oudisabled
. - 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
ouoff
).
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
- Comprendre les Politiques : Familiarisez-vous avec les politiques SELinux par défaut avant d’apporter des modifications.
- Utiliser les Booléens : Exploitez les booléens SELinux pour activer ou désactiver certaines fonctionnalités au lieu d’écrire de nouvelles politiques.
- Tester en Mode Permissif : Utilisez le mode permissif pour identifier les problèmes sans bloquer la fonctionnalité.
- Auditer les Journaux : Examinez régulièrement les journaux d’audit pour détecter les violations liées à SELinux.
- 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.
- Utilisez la commande
- 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
- Utilisez la commande
- SELinux peut-il être désactivé de manière permanente ?
- Oui, en modifiant le fichier
/etc/selinux/config
et en définissantSELINUX=disabled
. Cependant, cela n’est pas recommandé pour des raisons de sécurité.
- Oui, en modifiant le fichier
- Quels outils puis-je utiliser pour résoudre les problèmes liés à SELinux ?
- Utilisez des outils comme
ausearch
,audit2allow
, etsealert
pour diagnostiquer et résoudre les problèmes liés à SELinux.
- Utilisez des outils comme
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.