Sécuriser l’édition du GRUB

I. Présentation

Le GRUB est le système qui va s’occuper du menu de démarrage de notre système quand nous installons un OS Linux. Le GRUB est un outil qui permet de détecter les différents systèmes d’exploitation présents sur la machine et de les lister au démarrage de celle-ci pour nous orienter vers quel OS démarrer.

C’est un outil que l’on peut optimiser afin de mettre en place une meilleure protection de notre machine.

II. Détecter la version du GRUB

La méthode de sécurisation d’une application dépend de sa version. C’est notamment vrai pour le GRUB. Nous devons donc dans un premier temps détecter la version du GRUB que nous avons sur notre machine.

La version du GRUB s’affiche au démarrage de la machine comme suivant :

Version du GRUB

Pour connaitre la manière de faire sur une machine déjà démarrée, nous allons utiliser le paquet « dpkg » qui sert à donner des informations sur les paquets installés. On utilisera donc la commande suivante :

dpkg –l |grep grub

« -l » : permet de lister les paquets installés et leur version.

« |grep grub » : permet de n’affiche que les lignes contenant le mot « grub ».

Nous avons donc ces résultats :

dpkg linux

Les « ii » indiquent que ces paquets sont installés et nous avons également la version des paquets qui est « 1.98 ».

III. Mise en place d'un mot de passe sur l'édition du GRUB 1.98

Nous allons donc mettre en place un mot de passe sur la version 1.98 du GRUB. Avant toute modification, nous allons sauvegarder les fichiers de configuration du GRUB dans un dossier sécurisé afin de pouvoir les remettre en place au cas où il y aurait un problème :

mkdir /root/grub.save/;
cp /boot/grub/grub.cfg /root/grub.save/

Afin de mieux protéger notre GRUB, nous mettrons un mot de passe sur l’édition du GRUB (« e ») :

Saisie identifiant

A. Mot de passe en clair :

Nous allons aller dans le fichier « /boot/grub/grub.cfg » et ajouter le paramétrage de notre utilisateur et de notre mot de passe dès le début du fichier :

set superusers= « neaj »
password neaj neaj

On définit ici un utilisateur « neaj » ainsi que son mot de passe. Nous pouvons alors rebooter pour voir si une demande de mot de passe est effectuée lors de l’édition du GRUB avec la touche « e ».

On voit effectivement que l’édition du GRUB est protégée par un mot de passe que nous avons déterminé.

B. Mot de passe chiffré :

Le problème est que le mot de passe est en clair dans le fichier de configuration « /boot/grub/grub.cfg ». Cela peut poser un problème de sécurité si quelqu’un arrive à lire ou récupérer ce fichier. Nous allons maintenant mettre un hash du mot de passe à la place pour que même à la lecture du fichier de configuration, le mot de passe ne puisse pas être récupéré (ou du moins ne puisse pas le comprendre).

Nous utilisons ensuite la commande « grub_mkpassd_pbkdf2 » pour la génération d’un hash de mot de passe que le GRUB pourra retrouver :

grub_mkdpassd_pbkdf2

La commande va donc généré un hash de notre mot de passe en SHA-1 basé sur 512 bit après que nous ayons rentré le mot de passe voulu :

Enter password

Le module "grub_mkpasswd_pbkdf2" se base sur l’entropie pour la construction du hash. L’entropie est la récupération d’évènements aléatoires du système pour construire un ensemble de données qui sera alors impossible à retrouver. On peut par exemple imaginer une construction du hash à partir de l’heure système où il serait alors possible de retrouver la construction du hash.

Il est par exemple possible pour cette commande de générer de l’entropie en entrant plusieurs commandes sur un autre terminal pour que la génération du hash se fasse.

Une fois le hash récupéré, il faut mettre le hash dans le fichier de configuration « /boot/grub/grub.cfg » :

mdpgrub5

En seconde ligne, on utilise le "password_pbkdf2" suivi de l'utilisateur ("neaj"), puis du mot de passe hashé. Le mot de passe sera donc hashé et illisible lors de la lecture du fichier de configuration mais GRUB pourra le retrouver car il utilise le même système de hash.

Nous pouvons utiliser les mots de passes GRUB de manière différente afin de sécuriser notre serveur. On peut imaginer demander le mot de passe d’un utilisateur lorsqu’il voudra accéder à un système d’exploitation en particulier et même mettre des mots de passe différents.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 526.Voir tous les posts

4 thoughts on “Sécuriser l’édition du GRUB

Répondre à Mickael Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.