← Toutes les règles
SOCLE-CLD-FSP-164// File permissionsmoyenneconfig persistante

Vérifier les permissions de /boot/grub2/user.cfg

Garantit que /boot/grub2/user.cfg (le fichier de mot de passe superuser GRUB) n'est lisible et modifiable que par root, sans bits d'exécution/setuid/setgid/sticky.

Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.

Un PASS prouve? actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 4 normes

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

/boot/grub2/user.cfg stocke le hash du mot de passe superuser du chargeur GRUB (PBKDF2). Si le groupe ou les autres peuvent le lire, un attaquant peut casser le hash hors ligne et obtenir le mot de passe superuser GRUB, ce qui lui permet d'éditer les entrées de démarrage, d'obtenir un shell root via init=/bin/bash ou de désactiver la sécurité au démarrage, un contournement complet des contrôles d'accès du système d'exploitation. Si le fichier est modifiable par un utilisateur non-root, celui-ci peut remplacer ou supprimer entièrement la protection par mot de passe. Seul root devrait pouvoir le lire ou le modifier.

Ce que vérifie Pavois

Pavois lit le mode effectif de l'inode de /boot/grub2/user.cfg et vérifie l'absence de lecture/écriture pour le groupe ou les autres et l'absence de bits spéciaux. Vérifier le fichier réel (plutôt que de supposer que le générateur l'a écrit correctement) détecte les cas où le fichier a été régénéré, copié ou chmod-é après création et est devenu silencieusement lisible par le groupe/tous.

only_if { file('/boot/grub/user.cfg').exist? }
describe file('/boot/grub/user.cfg') do
  it { should_not be_executable.by('owner') }
  it { should_not be_setuid }
  it { should_not be_executable.by('group') }
  it { should_not be_writable.by('group') }
  it { should_not be_readable.by('group') }
  it { should_not be_setgid }
  it { should_not be_executable.by('other') }
  it { should_not be_writable.by('other') }
  it { should_not be_readable.by('other') }
  it { should_not be_sticky }
end

Comment vérifier qu’elle est appliquée

Exécutez stat -c '%U %G %a' /boot/grub2/user.cfg. Attendu : propriétaire/groupe root avec le mode 600 (ou 0600), lisible/modifiable par root uniquement, aucun bit pour le groupe/les autres.

Inspecter et investiguer

Il n'existe pas de journal d'exécution pour ce fichier. La dérive d'intégrité peut être détectée avec rpm -Vf /boot/grub2/user.cfg (RHEL/Alma/Fedora). La régénération de GRUB qui peut le réécrire est déclenchée par grub2-mkconfig ; examinez sa sortie et revérifiez le mode ensuite.

Remédiation

Aucune remédiation automatique n'est fournie pour cette règle. Restreignez le fichier manuellement : chown root:root /boot/grub2/user.cfg && chmod 600 /boot/grub2/user.cfg.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

mode0600
path/boot/grub/user.cfg
resourcefile
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Un user.cfg lisible divulgue le hash superuser GRUB (cassable hors ligne, menant à un accès root au démarrage) ; un fichier modifiable permet à un attaquant de désactiver la protection par mot de passe au démarrage. Le passer à 0600 root:root est sans danger et correspond à la valeur par défaut de GRUB. Précaution : ne supprimez pas et ne videz pas le fichier, cela retirerait la protection par mot de passe GRUB. Ne relancez grub2-mkconfig que si nécessaire, car la régénération peut réinitialiser le mode.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R29direct2.0haute
CIS2.2.6, 1.4.2directper OS, see the benchmark tablehaute
NIST3.4.5, AC-6(1), CM-6(a)support800-53 Rev 5 · 800-171 Rev 2 (pinned)moyenne
PCI DSS2.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