← Toutes les règles
SOCLE-CLD-KRN-013// Kernel command linemoyenneruntime effectif

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.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0
Un seul check, mappé sur 3 normes

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/) }
end

Comment 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 :

commandgrubby --update-kernel=ALL --remove-args="selinux=0 enforcing=0" 2>/dev/null || true
nameselinux-cmdline-clean
not_if! grep -Eqs "selinux=0|enforcing=0" /proc/cmdline
reboot_requiredtrue
resourceexec
pavois harden plan local

où 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 onboot puis redémarrage, ou touch /.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.log pour les évènements denied et résolvez-les avant de passer en Enforcing en production.
  • Le retrait de selinux=0 s'applique après redémarrage, planifiez une fenêtre de maintenance.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS1.3.1.2directper OS, see the benchmark tablehaute
NIST3.1.2support800-53 Rev 5 · 800-171 Rev 2 (pinned)moyenne
PCI DSS1.2.6support4.0.1moyenne

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.

Sources & références