| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| utilisateurs:watts:brouillon_securite_grub [Le 17/03/2020, 14:54] – [Modification de 30_os-prober] Watts | utilisateurs:watts:brouillon_securite_grub [Le 03/06/2023, 08:39] (Version actuelle) – [Autres pages en rapport] geole |
|---|
| ====== Sécuriser Grub2 de manière avancée ====== | ====== Sécuriser Grub2 de manière avancée ====== |
| |
| Ce tutoriel s'adresse à des utilisateurs confirmés en utilisation de la ligne de commande et en dépannage de démarrage. Sinon, vous allez droit vers la réinstallation pure et simple ! | Ce tutoriel s'adresse à des utilisateurs confirmés en utilisation de la ligne de commande et en dépannage de démarrage. Sinon, vous allez droit vers la réinstallation pure et simple ! |
| |
| Ce tutoriel explique comment sécuriser le menu [[:grub-pc|Grub]] de manière avancée. Si protéger l'édition des entrées est déjà un point important, il ne faut pas oublier que n'importe qui peut démarrer un noyau en mode [[:recovery_mode|recovery]], et obtenir une console root par la suite! Il serait donc avantageux de ne permettre l'accès à un noyau recovery qu'en possession du mot de passe. | Ce tutoriel explique comment sécuriser le menu [[:grub-pc|Grub]] de manière avancée. Si protéger l'édition des entrées est déjà un point important, il ne faut pas oublier que n'importe qui peut démarrer un noyau en mode [[:recovery_mode|recovery]], et obtenir une console root par la suite! Il serait donc avantageux de ne permettre l'accès à un noyau recovery qu'en possession du mot de passe. |
| <note warning>Les manipulations qui suivent peuvent vous faire complétement perdre l'accès à votre système. Aussi, pensez à faire une sauvegarde du fichier grub.cfg grâce à cette ligne: | <note warning>Les manipulations qui suivent peuvent vous faire complétement perdre l'accès à votre système. Aussi, pensez à faire une sauvegarde du fichier grub.cfg grâce à cette ligne: |
| |
| <code bash>sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.old</code> | <code bash>sudo cp -p /boot/grub/grub.cfg /boot/grub/grub.cfg.$(date --rfc-3339=date)</code> |
| | |
| | La sauvegarde du fichier grub.cfg sera suffixé par la date de la sauvegarde, ce qui permettra de le retrouver plus facilement en cas de multiples sauvegardes. |
| |
| Voir également [[:tutoriel:comment_sauver_et_restaurer_un_fichier]]. | Voir également [[:tutoriel:comment_sauver_et_restaurer_un_fichier]]. |
| Munissez vous d'un support d'installation de Ubuntu (ou de toute autre distribution permettant d'avoir une [[:live_usb|session live]]), et vérifiez bien que vous pouvez démarrer dessus. Une fois en session live, il suffira d'exécuter | Munissez vous d'un support d'installation de Ubuntu (ou de toute autre distribution permettant d'avoir une [[:live_usb|session live]]), et vérifiez bien que vous pouvez démarrer dessus. Une fois en session live, il suffira d'exécuter |
| |
| <code bash>sudo mv mnt/boot/grub/grub.cfg.old mnt/boot/grub/grub.cfg</code> | <code bash>sudo cp -p mnt/boot/grub/grub.cfg.DATE mnt/boot/grub/grub.cfg</code> |
| |
| si la racine de votre système est montée sur mnt. | si la racine de votre système est montée sur mnt. |
| |
| Pour toutes ces raisons, ce tutoriel n'est pas adapté aux débutants en ligne de commande. | Pour toutes ces raisons, ce tutoriel n'est pas adapté aux débutants en ligne de commande. |
| |
| * Disposer des [[:sudo|droits d'administration]] | * Disposer des [[:sudo|droits d'administration]] |
| * Avoir [[:tutoriel:comment_sauver_et_restaurer_un_fichier|sauvegardé les fichiers]] importants: /boot/grub/grub.cfg, /etc/grub.d/00_security_header, /etc/grub.d/10_linux et /etc/grub.d/30_os_prober (si vous êtes en dual boot) | * Avoir [[:tutoriel:comment_sauver_et_restaurer_un_fichier|sauvegardé les fichiers]] importants: **/boot/grub/grub.cfg**, **/etc/grub.d/00_security_header**, **/etc/grub.d/10_linux** et **/etc/grub.d/30_os_prober** (si vous êtes en dual boot) |
| * Avoir en cas de besoin une clé live | * Avoir en cas de besoin d'un [[:live_usb|live USB]] ou d'un [[:live_cd|live CD]] permettant [[:live_cd#session_livequ_est-ce_que_c_est|d'essayer Ubuntu]] |
| |
| Normalement à ce stade vous devriez posséder un fichier 00_security_header ressemblant à celui ci: | Normalement à ce stade vous devriez posséder un fichier **00_security_header** ressemblant à celui ci: |
| |
| <code>#! /bin/sh | <code>#! /bin/sh |
| </code> | </code> |
| |
| Le mot de passe n'est pas identique, mais c'est normal. Ce qui compte, c'est que le script fasse son travail. En particulier, que le superusers toto soit créé et fonctionne. | Le mot de passe n'est pas identique, mais c'est normal. Ce qui compte, c'est que le script fasse son travail. En particulier, que le superusers toto soit créé et fonctionne. |
| |
| ===== Modifier le script 00_security_header ===== | ===== Modifier le script 00_security_header ===== |
| </code> | </code> |
| |
| Nous utilisons une variable pour déterminer les utilisateurs autorisés à faire quelque chose (nous définirons le quelque chose plus tard) Les commandes **export** permettent de changer la portée des variables afin qu'elles soient valables dans les autres fichiers de configuration de Grub. | Nous utilisons une variable pour déterminer les utilisateurs autorisés à faire quelque chose (nous définirons le quelque chose plus tard) Les commandes **export** permettent de changer la portée des variables afin qu'elles soient valables dans les autres fichiers de configuration de Grub. |
| |
| Voilà maintenant à quoi ressemble 00_security_header | Voilà maintenant à quoi ressemble **00_security_header** |
| |
| <code>#! /bin/sh | <code>#! /bin/sh |
| <note important>Attention, c'est une partie dangereuse</note> | <note important>Attention, c'est une partie dangereuse</note> |
| |
| Pour restreindre les parties de Grub que nous voulons, il va falloir "verrouiller" les entrées au niveau du script 10_linux qui les génèrent. | Pour restreindre les parties de Grub que nous voulons, il va falloir "verrouiller" les entrées au niveau du script **10_linux** qui les génèrent. |
| |
| * Avec votre éditeur favori, allez à la ligne 132. Vous voyez normalement cette ligne: | * Avec votre éditeur favori, allez à la ligne 132. Vous voyez normalement cette ligne: |
| </code> | </code> |
| |
| C'est la ligne qui définit toutes les entrées des noyaux dans le sous menu "Options avancées". | C'est la ligne qui définit toutes les entrées des noyaux dans le sous menu "Options avancées". |
| |
| * Nous allons écrire **\$restricted** afin d'inclure le contenu de la variable restricted dans la ligne d'entrée ci dessus et enlever la variable **\$menuentry_id_option**, qui annulerait ce qu'on vient d'écrire. Cela donne: | * Nous allons écrire **\$restricted** afin d'inclure le contenu de la variable restricted dans la ligne d'entrée ci dessus et enlever la variable **\$menuentry_id_option**, qui annulerait ce qu'on vient d'écrire. Cela donne: |
| ===== En cas de dual-boot avec un autre Système type Debian ===== | ===== En cas de dual-boot avec un autre Système type Debian ===== |
| |
| Si vous êtes en dual-boot avec un autre système fonctionnant de la même manière (avec un sous menu "Options Avancées"), les manipulations ci haut sont à faire sur le grub maître (celui qui se lance). | Si vous êtes en dual-boot avec un autre système fonctionnant de la même manière (avec un sous menu "Options Avancées"), les manipulations ci haut sont à faire sur le grub maître (celui qui se lance). |
| |
| De plus, de manière personnelle, pour limiter les entrées répétitives, je désactive le script **30_os-prober** pour tout les grub non maître. | De plus, de manière personnelle, pour limiter les entrées répétitives, je désactive le script **30_os-prober** pour tout les grub non maître: |
| |
| <code>sudo chmod -x /etc/grub.d/30_os-prober</code> | <code bash>sudo chmod -x /etc/grub.d/30_os-prober</code> |
| |
| Sinon, le problème est bien pire. Les entrées de l'OS maître se retrouvent dans le menu "Options avancées" des autres OS, et cela détruit tout nos efforts précédents. | Sinon, le problème est bien pire. Les entrées de l'OS maître se retrouvent dans le menu "Options avancées" des autres OS, et cela détruit tout nos efforts précédents. |
| ==== Modification de 30_os-prober ==== | ==== Modification de 30_os-prober ==== |
| |
| Le fichier **30_os-prober** génère le menu grub pour les autres systèmes détectés par os-prober. Il suffit de trouver la ligne concernant le menu "Options Avancées" et de faire la même manipulation que dans la partie précédente. | Le fichier **30_os-prober** génère le menu grub pour les autres systèmes détectés par os-prober. Il suffit de trouver la ligne concernant le menu "Options Avancées" et de faire la même manipulation que dans la partie précédente. |
| |
| * Ligne 292, vous avez: | * Ligne 292, vous avez: |
| Vous avez désormais un menu grub somme toute assez robuste, ce qui n'empêche pas des précautions élémentaires (ne pas laisser son ordinateur portable sans surveillance par exemple). | Vous avez désormais un menu grub somme toute assez robuste, ce qui n'empêche pas des précautions élémentaires (ne pas laisser son ordinateur portable sans surveillance par exemple). |
| |
| ===== Voir aussi ===== | ===== Autres pages en rapport ===== |
| |
| [[:securite]] | * [[:grub-pc]] |
| | * [[:securite]] |
| | ===== Discussions en rapport ===== |
| | * [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22682349#p22682349|Posei]] |
| |
| |
| //Contributeurs principaux : [[:utilisateurs:watts]] | //Contributeurs principaux : [[:utilisateurs:watts]] |