Introduction à SELinux : vérifier le statut, activer, commandes de base
1. Qu'est-ce que SELinux et pourquoi c'est utile ?
SELinux (Security-Enhanced Linux) — c'est un module de sécurité qui renforce le modèle traditionnel de gestion des droits d'accès en ajoutant le concept de contrôle obligatoire. Il permet à un administrateur de configurer des restrictions plus strictes pour les utilisateurs et même les processus, afin de minimiser les dégâts potentiels en cas d'attaques.
Qu'est-ce qui le rend unique ?
Imagine que ton système est une maison. Les droits d'accès traditionnels (rwx pour l'utilisateur, le groupe et les autres) sont comme les clés des serrures des portes. Mais que se passe-t-il si quelqu'un force une porte ? SELinux devient ta deuxième ligne de défense, en renforçant la protection avec des règles de comportement : "Eh, même si tu es à l'intérieur, tu n'as pas le droit d'entrer dans la salle de bain !"
Les principales missions de SELinux :
- Protection contre les accès non autorisés pour les processus et fichiers.
- Réduction des dégâts en cas d'attaque, même si un processus est compromis.
- Les principes de "protection par défaut" (tout est interdit sauf ce qui est autorisé).
Modes de fonctionnement de SELinux
SELinux peut fonctionner dans trois modes :
- Enforcing — actif, applique la politique de sécurité et bloque les processus qui ne respectent pas les règles.
- Permissive — ne fait qu'enregistrer les violations dans les logs, mais ne bloque pas les actions.
- Disabled — complètement désactivé
SELinux en mode enforcing ressemble à un grand frère strict pour ton système. Permissive, c'est comme le petit frère qui se plaint mais ne fait rien.
2. Vérifier le statut de SELinux
Pour commencer, voyons si SELinux est actif et en quel mode il fonctionne. Pour cela, il existe plusieurs commandes pratiques.
Commande getenforce
Cette commande vous dira simplement quel mode est actuellement utilisé : Enforcing, Permissive, ou Disabled.
$ getenforce
Enforcing
Si la sortie est Disabled, cela signifie que SELinux est désactivé — et cela veut dire que pour l'activer, il faudra faire un peu de travail, mais on en parlera plus tard.
Commande sestatus
Vous pouvez obtenir un rapport plus détaillé sur le statut de SELinux avec cette commande. Elle montrera l'état actuel, le mode actif et la politique utilisée.
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Voici ce que vous pouvez voir :
- enabled/disabled — si SELinux est activé ou non.
- current mode — le mode actif (enforcing, permissive).
- loaded policy name — quelle politique est chargée. Par exemple, "targeted" signifie que SELinux applique le contrôle uniquement aux processus clés.
3. Changer les modes de SELinux
Pour modifier le mode actuel de fonctionnement de SELinux, on utilise la commande setenforce
.
Passer en mode permissive
Si tu veux temporairement "relâcher la bride" de SELinux, tu peux activer le mode permissive.
$ sudo setenforce 0
Maintenant, SELinux va juste enregistrer les violations, mais ne les bloquera pas. Tu peux vérifier la nouvelle configuration avec la commande getenforce
:
$ getenforce
Permissive
Revenir en mode enforcing
Quand tu voudras réactiver un contrôle strict, exécute :
$ sudo setenforce 1
Et bien sûr, vérifie le résultat :
$ getenforce
Enforcing
Ce changement est appliqué à chaud, mais uniquement jusqu’au prochain redémarrage du système.
4. Activer SELinux
Si SELinux était désactivé, il faut modifier le fichier de configuration. SELinux est géré via le fichier /etc/selinux/config
.
Vérifier le fichier de configuration actuel
Regardons ce qui est configuré. Utilisez n'importe quel éditeur de texte, par exemple nano
:
$ sudo nano /etc/selinux/config
Vous verrez quelque chose comme ceci :
# Ce fichier contrôle l'état de SELinux sur le système.
SELINUX=disabled
SELINUXTYPE=targeted
Basculer SELinux en mode actif
Pour activer SELinux, modifiez la ligne SELINUX=disabled
en SELINUX=enforcing
ou SELINUX=permissive
.
Voici un exemple de fichier après modifications :
# Ce fichier contrôle l'état de SELinux sur le système.
SELINUX=enforcing
SELINUXTYPE=targeted
Après l'édition, sauvegardez le fichier et redémarrez le système :
$ sudo reboot
Après le redémarrage, vous pouvez vérifier le statut avec sestatus
pour vous assurer que SELinux est actif.
5. Analyse des contextes SELinux
Qu'est-ce que les contextes ?
Les contextes — ce sont des étiquettes que SELinux utilise pour gérer l'accès. Chaque fichier, processus et utilisateur possède son propre contexte.
Tu peux vérifier les contextes des fichiers avec la commande ls -Z
. Voici un exemple :
$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
Qu'est-ce que ça signifie ?
- unconfinedu — utilisateur SELinux.
- objectr — type d'objet.
- httpdsyscontent_t — type d'accès (dans ce cas, lié au serveur web).
- s0 — niveau de sécurité.
Modifier un contexte
Si SELinux empêche ton application de fonctionner, il est possible que tu doives changer le contexte d'un fichier. Utilise la commande chcon
:
$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html
Cette commande modifie temporairement le type de contexte du fichier. Cependant, après un redémarrage, les modifications peuvent disparaître, donc pour des réglages permanents, il vaut mieux modifier la politique SELinux (plus d'informations à ce sujet plus tard).
6. Exemple de travail avec SELinux
Voyons un exemple. Tu es l'admin d'un serveur qui veut déployer un serveur web, mais SELinux bloque l'accès aux fichiers dans le répertoire /var/www/html
.
Étapes :
Vérifie le statut de SELinux :
$ sestatus
Assure-toi que SELinux est activé et fonctionne en mode enforcing.
Regarde les contextes de fichiers :
$ ls -Z /var/www/html
Si le contexte est incorrect, change-le :
$ sudo chcon -t httpd_sys_content_t /var/www/html/*
Vérifie le fonctionnement du serveur web.
7. Erreurs et problèmes typiques
SELinux est désactivé et tu ne t'en rends pas compte. Vérifie toujours le statut avec
sestatus
. Beaucoup d'administrateurs oublient d'activer SELinux après l'installation du système."Pourquoi mon service ne fonctionne pas ?" SELinux bloque l'accès. Utilise
audit.log
pour analyser :$ sudo cat /var/log/audit/audit.log | grep denied
Les changements de contexte ne sont pas sauvegardés. N'utilise pas
chcon
, mais des commandes pour des changements permanents, commesemanage
.
Apprendre SELinux, c'est comme se préparer à un marathon : au début, ça peut être dur, mais avec le temps, tu comprendras comment cet outil peut considérablement améliorer la sécurité du système. Utilise ces connaissances pour devenir cet admin qu'aucun hacker, même très avancé, ne pourra vaincre.
GO TO FULL VERSION