← Toutes les règles
SOCLE-CLD-BOOT-001// Bootloader (grub)élevéeconfig persistante

Définir un mot de passe pour le chargeur d'amorçage grub2

Protège le chargeur d'amorçage grub2 par un superutilisateur et un mot de passe PBKDF2 afin que les paramètres de démarrage ne puissent pas être modifiés à la console sans authentification.

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 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 3 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

La protection par mot de passe du chargeur d'amorçage empêche un attaquant disposant d'un accès physique ou console de modifier trivialement des réglages critiques du bootloader. Sans elle, n'importe qui à la console peut éditer la ligne de commande du noyau, démarrer en mode mono-utilisateur ou passer init=/bin/bash, obtenant ainsi un shell root non authentifié et contournant tous les contrôles du système d'exploitation.

Ce que vérifie Pavois

Pavois recherche dans le grub.cfg généré (et /etc/grub.d/) une directive set superusers ainsi qu'un password_pbkdf2/password. Il inspecte la configuration effective générée pour les agencements BIOS (/boot/grub, /boot/grub2) et EFI (/boot/efi/EFI/*/grub.cfg), détectant ainsi un mot de passe réellement présent après régénération par grub-mkconfig/grub2-mkconfig, et pas seulement un fragment de modèle.

describe command('grep -rqsE \'^[[:space:]]*(set[[:space:]]+superusers|password_pbkdf2|password)\' /boot/grub/grub.cfg /boot/grub2/grub.cfg /boot/efi/EFI/*/grub.cfg /etc/grub.d/ 2>/dev/null && echo ok || echo ko') do
  its('stdout.strip') { should eq 'ok' }
end

Comment vérifier qu’elle est appliquée

Exécutez grep -E '^(set superusers|password_pbkdf2|password)' /boot/grub/grub.cfg /boot/grub2/grub.cfg (adaptez le chemin à votre agencement). Attendu : au moins une ligne set superusers="..." et une ligne password_pbkdf2 <user> grub.pbkdf2.sha512....

Inspecter et investiguer

Il n'existe pas de journal d'exécution pour ce contrôle ; la preuve est la configuration générée. Vérifiez avec grep -E 'superusers|password_pbkdf2' /boot/grub2/grub.cfg et examinez la source dans /etc/grub.d/ et /etc/grub.d/40_custom. La régénération est déclenchée par grub2-mkconfig / update-grub.

Remédiation

pavois harden apply exécute la ressource grub_password : elle définit un superutilisateur grub, hache le mot de passe fourni en PBKDF2, l'écrit dans le snippet grub.d et régénère la configuration de démarrage. Le changement est reboot_required: true. Important : Pavois ajoute --unrestricted aux entrées de démarrage standard afin que le mot de passe ne soit exigé que pour éditer les entrées ou atteindre le shell grub, et non à chaque démarrage normal.

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

command_aptH=$(printf "%s\n%s\n" "$(cat %{pwfile})" "$(cat %{pwfile})" | grub-mkpasswd-pbkdf2 2>/dev/null | grep -oE "grub\.pbkdf2\.[^ ]+"); [ -n "$H" ] && { printf "%s\n" "$H" > /etc/grub.d/.pavois-grub-hash; chmod 0600 /etc/grub.d/.pavois-grub-hash; grep -q -- "--unrestricted" /etc/grub.d/10_linux || sed -ri "/^CLASS=/ s/\"$/ --unrestricted\"/" /etc/grub.d/10_linux; sed -ri "/^GRUB_DISABLE_SUBMENU=/d" /etc/default/grub; echo "GRUB_DISABLE_SUBMENU=y" >> /etc/default/grub; /usr/sbin/update-grub; }
command_rhelH=$(printf "%s\n%s\n" "$(cat %{pwfile})" "$(cat %{pwfile})" | grub2-mkpasswd-pbkdf2 2>/dev/null | grep -oE "grub\.pbkdf2\.[^ ]+"); [ -n "$H" ] && { echo "GRUB2_PASSWORD=$H" > /boot/grub2/user.cfg; chmod 0600 /boot/grub2/user.cfg; }
reboot_requiredtrue
resourcegrub_password
superuserroot
pavois harden plan local

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

Impact & précautions

Mal configuré, c'est un vecteur de compromission complet par accès physique : un attaquant à la console démarre en root, lit ou réécrit le disque et exfiltre des secrets. Précautions avant application : un mot de passe superutilisateur grub sans --unrestricted bloque chaque démarrage et fige une machine sans écran à l'invite grub, assurez-vous que --unrestricted est posé sur les entrées normales (Pavois le fait). Conservez le mot de passe en clair dans votre gestionnaire de mots de passe ; s'il est perdu, vous devrez démarrer sur un support de secours pour le réinitialiser.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R5direct2.0haute
CIS1.4.1directper OS, see the benchmark tablehaute
NIST3.4.5, CM-6(a)support800-53 Rev 5 · 800-171 Rev 2 (pinned)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.

Sources & références