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 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 }
endComment 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 :
| mode | 0600 |
|---|---|
| path | /boot/grub/user.cfg |
| resource | file |
pavois harden plan localoù 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
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R29 | direct | 2.0 | haute |
| CIS | 2.2.6, 1.4.2 | direct | per OS, see the benchmark table | haute |
| NIST | 3.4.5, AC-6(1), CM-6(a) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| PCI DSS | 2.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.