Protéger l'édition du GRUB avec un mot de passe
Je dois bien reconnaître que dans la vie de tous les jours et assez régulièrement je charrie sur la sécurité de Windows... mais bon, étant linuxien, on ne m'en tient pas trop rigueur. Et bien aujourd'hui je vais parler d'une "faille" linux que l'on trouve au niveau du logiciel d'amorçage GRUB (GRand Unified Bootloader). Ce n'est pas une faille à proprement parlé, mais plutôt une possibilité de contourner le fonctionnement normal du gestionnaire d'amorçage. Je vais vous présenter le problème et surtout expliquer comment y remédier. Allez hop, c'est parti !
La "faille" en question : la possibilité d'éditer le GRUB
La "faille" en question est due à la possibilité d'éditer le GRUB au démarrage de la machine, et ce, sans mot de passe. Il faut cependant avoir accès physiquement à celle-ci. Au démarrage, lorsque le menu apparaît, il suffit de taper 'e' pour l'éditer.
Ensuite, on identifie la ligne qui commence par "linux /boot/vmlinuz" et on remplace ro (Read Only) par rw (Read Write). Attention au qwerty !! Enfin, il convient de rajouter à la fin de la ligne :
"init=/bin/bash"
Un petit coup de F10 pour enregistrer, et hop, la machine démarre sur... un beau shell en root !!!
Il est possible de remédier à cette "faille" en définissant un mot de passe pour l'édition du menu. Attention cependant, la solution diffère selon la version du GRUB. Voyons donc d'abord comment identifier cette version.
Identifier la version du GRUB
Pour contrôler la version du GRUB, il y a plusieurs solutions. La première consiste à contrôler la version lors du boot. En effet, lorsque le menu apparaît, la version s'affiche en haut de la fenêtre (voir le premier screenshot plus haut). Attention, si vous voyez "GNU GRUB Version 1.98" ou plus, c'est que vous utilisez la version 2 de GRUB. Si vous utilisez GRUB-Legacy, vous verrez affiché "GNU GRUB Version 0.97".
L'autre solution consiste à utiliser dpkg :
dpkg -i | grep grub
Et vous apercevrez alors la version installée :
Je ne donnerai ici que la procédure pour la version 2 de GRUB, la version Legacy n'étant plus beaucoup utilisée.
Sécuriser l'édition de GRUB 2 avec un mot de passe
La première chose à faire va être de sauvegarder le fichier de configuration (/etc/grub/grub.cfg). On va en faire une copie au préalable, au cas où...
cp /boot/grub/grub.cfg /boot/grub/old.grub.cfg
Ensuite, pour mettre un login et un mot de passe, on va éditer ce fichier grub.cfg pour y ajouter :
#Password
set superusers = "justegeek"
password justegeek justegeek
Bon, là c'est bien de mettre un mot de passe, mais un mot de passe en clair... c'est plus que moyen. Alors hop, on va hasher le mot de passe. Pour cela, il faut entrer dans une console :
grub-mkpasswd-pbkdf2
La commande va alors demander de saisir le mot de passe (deux fois), puis va retourner le hash de celui-ci (en SHA1 sur 512bits).
Ensuite il convient d'éditer le fichier grub.cfg pour y coller le hash de votre mot de passe :
#Password
set superusers = "justegeek"
password_pbkdf2 justegeek grub.pbkdf2.sha512.10000.8A3D270280BD703A08E1AFCAF7EB5EA055069EE96286E2186CE6F6F6726C0EA91342473E1A3A093ED127F2993F86E46253AAE81DD3D1F0664B2E5FDCF9C7C7BE.64C244CF9B2EBCCF08B41211F263A7B2E245050BD072AFBED2E85E9207B794BD6E9E424898D3F4B1BCABDED24EA972581E820E6F196D69FD3547C45D738DB4D6
Il ne reste plus qu'à tester. Un petit reboot, et on appuie sur 'e' lorsque l'on est sur le menu boot et hop :
Conserver le paramétrage en cas de mise à jour
Modifier le fichier de configuration grub.cfg, OK ça fonctionne, mais pour combien de temps ? En effet, en cas de mise à jour du menu, votre paramétrage disparaîtra. Pour que la modification perdure après les mises à jour, il faut d'éditer le fichier /etc/grub.d/00_header pour y ajouter :
cat << EOF
#Password
set superusers = "justegeek"
password_pbkdf2 justegeek grub.pbkdf2.sha512.10000.8A3D270280BD703A08E1AFCAF7EB5EA055069EE96286E2186CE6F6F6726C0EA91342473E1A3A093ED127F2993F86E46253AAE81DD3D1F0664B2E5FDCF9C7C7BE.64C244CF9B2EBCCF08B41211F263A7B2E245050BD072AFBED2E85E9207B794BD6E9E424898D3F4B1BCABDED24EA972581E820E6F196D69FD3547C45D738DB4D6
EOF
Suite à cela, un petit update et ça roule !
update-grub
Vous retrouverez maintenant votre mot de passe lors des mises à jour du gestionnaire d'amorçage. Je vous recommande vraiment de faire cela, notamment si vous l'utiliser sur un PC Portable.
On dit merci JusteGeek !!! 🙂
Partager la publication "Protéger l'édition du GRUB avec un mot de passe"
Bonjour,
pour sauvegarder la conf de Grub vous indiquez:
cp /boot/grub/grub.cfg /boot/grub/old.grub.cfg
Mais pour la restaurer au cas où, quelle est la commande svp ?
Merci
Salut Damien,
pour rétablir l'ancienne configuration, tu peux entrer la commande inverse :
cp /boot/grub/old.grub.cfg /boot/grub/grub.cfg
++
bonjour,
cela exige également le mot de passe pour lancer la machine.
N'y a-t-il pas un moyen de ne sécuriser que l'édition de grub ?
Cdt
Julien
je viens de trouver la réponse :
sur chaque ligne du menu de chargement :
menuentry '...' ... {
il faut compléter ainsi :
menuentry '...' ... --unrestricted {
reste à voir comment le mettre en place en cas de mise à jour ...
Je cherche !
Je viens de trouver la solution :
Dans le fichier /etc/grub.d/00_header
------------------------------------------------------------------
cat << EOF
#Password
set superusers = "justegeek"
password_pbkdf2 justegeek grub.pbkdf2.sha512.10000.8A3D270280BD703A08E1AFCAF7EB5EA055069EE96286E2186CE6F6F6726C0EA91342473E1A3A093ED127F2993F86E46253AAE81DD3D1F0664B2E5FDCF9C7C7BE.64C244CF9B2EBCCF08B41211F263A7B2E245050BD072AFBED2E85E9207B794BD6E9E424898D3F4B1BCABDED24EA972581E820E6F196D69FD3547C45D738DB4D6
set menuentry_id_option="--unrestricted $menuentry_id_option"
EOF
-----------------------------------------------
J'ajouter également qu'il ne faut (suite à des tests) pas d'espaces autour du = dans les lignes de commande ici !
Maintenant, un mot de passe est défini pour l'édition de grub, mais pas pour son utilisation !
Salut Julien,
Merci pour tes précisions.
Ce tuto est vieux. Il fonctionnait bien à l'époque, mais ça évolue 🙂
Bonjour, je viens de suivre ce tuto à la lettre mais la j'ai un petit problème. Au démarrage, grub me demande le nom d'utilisateur et le mdp. Mais quand je rentres les deux, il revient sur le menu. Peut être vous pourrez m'aider. Merci d'avance.
Bon, finalement j'ai résolu mon problème en démarrant sur un live-usb et en modifiant directement le fichier grub.cfg. Je l'ai remplacé par la sauvegarde. Cela dit en suivant le tuto je ne crois pas m'être trompé dans ce que j'ai fait du coup jcomprends pas. Jvais réessayer en tout cas.
Merci pour ce tuto qui donne une bonne base, il manque juste l'export des variables :
La solution complète qui fonctionne même dans les submenus est la suivante
cat << EOF
#Password
set superusers="justegeek"
password_pbkdf2 justegeek grub.pbkdf2.sha512.10000.8A3D270280BD703A08E1AFCAF7EB5EA055069EE96286E2186CE6F6F6726C0EA91342473E1A3A093ED127F2993F86E46253AAE81DD3D1F0664B2E5FDCF9C7C7BE.64C244CF9B2EBCCF08B41211F263A7B2E245050BD072AFBED2E85E9207B794BD6E9E424898D3F4B1BCABDED24EA972581E820E6F196D69FD3547C45D738DB4D6
export superusers
set menuentry_id_option="--unrestricted $menuentry_id_option"
export menuentry_id_option
EOF
et le mieux pour ne pas se faire écraser la modif lors d'une mise à jour est de placer tout cela dans un fichier /etc/grub.d/01_pass
Salut meubeukeu, pourrait tu commenter le bas de ton code, que fait
export superusers
set menuentry_id_option="--unrestricted $menuentry_id_option"
export menuentry_id_option
Sinon, mon clavier est en qwerty au démarrage du Grub, comment faire pour avoir un clavier fr, pour saisir le mot de passe normalement, sans avoir à jongler avec le qwerty ?
Merci du tuto mais RIP à tout le temps que ce tuto a fait perdre depuis l'évolution des systèmes Unix, sans compter toutes les machines cassées parce que ce tuto n'indique pas le bon fichier à modifier.
Il faudrait penser à une MAJ, je demande un remboursement de mon temps !!
Les seules fois où je me dis vasy je laisse une chance à un tuto fr je me fais bz, voici pourquoi on est toujours en retard technologiquement
Hello !! L'article date de 2014, c'est clairement indiqué... Normal que ca ait évolué depuis... 🤣🤣
Bonjour,
Petite erreur en début du tuto pour connaître sa version de grub. L'option de dpkg n'est pas "-i" (comme irène) mais "-l" (comme Laurent).
dpkg -l | grep grub.
Sylvain
Bonjour,
Le fichier grub.cfg est généré par la commande update-grub grace aux différents fichier situés dans le répertoire grib.d . Il est préférable de faire la modification directement dans le fichier 40_custom qui est destiné aux modification personnalisé. Ainsi les modifications seront conservés en cas de mise à jours.