Vérifier que SELinux n'est pas désactivé dans /etc/default/grub
Garantit que SELinux n'est pas désactivé via la ligne de commande noyau (pas de selinux=0), afin que son contrôle d'accès obligatoire confine les services dès le démarrage.
Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.
Pavois vérifie la configuration effective, l’état résolu et réellement appliqué, pas un fichier. Les scanners basés fichier (OVAL/SCAP, Lynis) ratent les Include, drop-ins et défauts runtime ; ce check voit ce qui est réellement en vigueur.
Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.
Pourquoi cette règle
SELinux est une couche principale de contrôle d'accès obligatoire (MAC) qui confine les services afin qu'un processus compromis ne puisse pas accéder librement au reste du système. Le désactiver au démarrage avec selinux=0 sur la ligne de commande noyau empêche SELinux de confiner les services dès le départ, et une fois désactivé au boot, il a de fortes chances de rester désactivé en fonctionnement normal, laissant l'hôte sans son principal mécanisme de confinement. SELinux ne doit donc pas être désactivé via le bootloader.
Ce que vérifie Pavois
Pavois lit la ligne de commande noyau active depuis /proc/cmdline, la ligne de boot réellement analysée par le noyau, plutôt que /etc/default/grub. Un scan basé fichier de GRUB peut être trompé par une modification jamais régénérée, ou rater un selinux=0 ajouté par un drop-in antérieur ; /proc/cmdline montre le paramètre réellement en vigueur pour ce démarrage. Recoupez le mode obtenu avec getenforce / sestatus.
describe file('/proc/cmdline') do
its('content') { should_not match(/\bselinux=0\b/) }
its('content') { should_not match(/\benforcing=0\b/) }
endComment vérifier qu’elle est appliquée
Lancez cat /proc/cmdline et confirmez l'absence du jeton selinux=0 sur la ligne de boot. Confirmez que SELinux est actif avec :
getenforce
La sortie attendue est Enforcing (ou au moins Permissive, jamais Disabled). sestatus donne le tableau complet.
Inspecter et investiguer
Les décisions et refus SELinux sont journalisés via le sous-système d'audit, inspectez /var/log/audit/audit.log pour les lignes type=AVC, ou utilisez journalctl -t setroubleshoot. L'état SELinux au démarrage est aussi affiché dans dmesg | grep -i selinux.
Remédiation
Cette règle n'a aucun plan de durcissement automatisé : elle doit être appliquée manuellement, retirez tout selinux=0 (et enforcing=0) du bootloader (/etc/default/grub, puis grub2-mkconfig -o /boot/grub2/grub.cfg), définissez SELINUX=enforcing dans /etc/selinux/config, puis redémarrez. Pavois ne bascule pas SELinux automatiquement car activer le mode enforcing sur un système qui a tourné sans peut casser des services non étiquetés jusqu'à un relabel.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| command | grubby --update-kernel=ALL --remove-args="selinux=0 enforcing=0" 2>/dev/null || true |
|---|---|
| name | selinux-cmdline-clean |
| not_if | ! grep -Eqs "selinux=0|enforcing=0" /proc/cmdline |
| reboot_required | true |
| resource | exec |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Activer l'enforcement SELinux sur un hôte démarré sans peut bloquer des services dépourvus d'étiquettes ou de politique adéquates. Précautions :
- Planifiez un relabel complet du système de fichiers (
fixfiles -F onbootpuis redémarrage, outouch /.autorelabel) lors de la réactivation. - Passez d'abord en Permissive pour collecter les refus AVC, corriger politique/booléens, puis basculez en Enforcing.
- Surveillez
/var/log/audit/audit.logpour les évènementsdeniedet résolvez-les avant de passer en Enforcing en production. - Le retrait de
selinux=0s'applique après redémarrage, planifiez une fenêtre de maintenance.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 1.3.1.2 | direct | per OS, see the benchmark table | haute |
| NIST | 3.1.2 | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| PCI DSS | 1.2.6 | support | 4.0.1 | moyenne |
Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.