Vérifier le propriétaire du fichier /boot/grub2/grub.cfg
Garantit que le fichier de configuration de démarrage GRUB2 /boot/grub2/grub.cfg appartient à root (uid 0).
Vérifié sur les métadonnées d’un chemin, mode, propriétaire, groupe, SUID/SGID.
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
Le fichier de configuration GRUB2 /boot/grub2/grub.cfg définit le noyau démarré, sa ligne de commande et un éventuel mot de passe de démarrage. Si un utilisateur non-root peut posséder (et donc réécrire) ce fichier, un attaquant peut ajouter des paramètres comme init=/bin/sh pour obtenir un shell root au démarrage, désactiver les protections du noyau ou supprimer le mot de passe GRUB, transformant un simple accès local en contrôle total de la machine, avant même le chargement du moindre contrôle d'accès. Restreindre la propriété à root (uid 0) garantit que seul le superutilisateur peut modifier les paramètres de démarrage.
Ce que vérifie Pavois
Pavois examine l'objet de fichier réel /boot/grub2/grub.cfg et vérifie que l'uid de son propriétaire est 0. Le contrôle est protégé par only_if, donc il est ignoré sur les systèmes (par ex. Debian/Ubuntu en UEFI) où ce chemin n'existe pas. Pavois lit le propriétaire effectif du fichier tel que le noyau le rapporte (stat), et non une valeur déclarée dans un manifeste de gestion de configuration, ainsi toute dérive introduite par un chown manuel, une restauration de sauvegarde ou un paquet défectueux est détectée immédiatement.
only_if { file('/boot/grub/grub.cfg').exist? }
describe file('/boot/grub/grub.cfg') do
its('uid') { should eq 0 }
endComment vérifier qu’elle est appliquée
Exécutez stat -c '%U %u' /boot/grub2/grub.cfg. Sortie attendue : root 0. Vous pouvez aussi utiliser ls -l /boot/grub2/grub.cfg et vérifier que la troisième colonne (propriétaire) affiche root.
Inspecter et investiguer
Il n'existe pas de journal continu pour la propriété d'un fichier ; interrogez l'état courant avec stat /boot/grub2/grub.cfg. Si auditd surveille /boot (auditctl -w /boot -p wa), les changements de propriété apparaissent dans /var/log/audit/audit.log, recherchez le chemin avec grep grub.cfg /var/log/audit/audit.log.
Remédiation
Aucun plan de durcissement automatisé n'est défini pour cette règle, elle doit donc être appliquée manuellement : exécutez chown root:root /boot/grub2/grub.cfg en tant que root. (Sur les systèmes utilisant update-grub/grub2-mkconfig, le fichier est normalement régénéré avec root comme propriétaire.)
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| owner | root |
|---|---|
| path | /boot/grub/grub.cfg |
| resource | file |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Si le fichier appartient à un utilisateur non-root, celui-ci peut réécrire le menu de démarrage et compromettre silencieusement le système au prochain redémarrage. Corriger la propriété présente peu de risques : un chown root:root ne modifie pas le contenu du fichier et n'empêchera pas le démarrage. Précaution : vérifiez que le chemin contient bien la configuration GRUB (et non un lien symbolique vers un autre emplacement) et évitez de changer le groupe/les permissions en même temps sauf intention contraire, afin de ne pas priver d'accès les outils qui le lisent légitimement.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R29 | direct | 2.0 | haute |
| CIS | 1.4.2, 2.2.6 | 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.