Ceci est une ancienne révision du document !


Watts

Ubuntueros investi depuis peu de temps (découverte 18.04).

KDE fan, command line addict

Nous allons maintenant effacer la ligne "EOF" rajouter au script les lignes suivantes:

set restricted="--users toto"
export superusers
export menuentry_id_option
export restricted
EOF

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

#! /bin/sh

cat <<EOF

set superusers="toto"

password_pbkdf2 toto grub.pbkdf2.sha512.10000.891DC34A2C0492FD76FA0E2D01B37F13FB3B3FD5A57D0838C4894D895CFAE206F9A2EA5ED3C1286AF7C44A1BBF4C9D4E2AD4AE4EBD376F4674FC8ACCEF65D92D.49656B11F58E309EC930E7B0CD76F63E67840E65E50F1F23FED0EA9D668291DFB0D10608BEEEC3C9F33AB68895C2EFDD7F7CDEE1CB58FD96CF12B9A507EACCCC
set menuentry_id_option="--unrestricted \$menuentry_id_option"
set restricted="--users toto"
export superusers
export menuentry_id_option
export restricted
EOF
Attention, c'est une partie dangereuse

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:

echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" |sed "s/^/$submenu_indentation/"

C'est la ligne de tout les 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:

echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$restricted 'gnulinux-$version-$type-$boot_device_id' {" |sed "s/^/$submenu_indentation/"

Faites maintenant:

sudo update-grub

Puis redémarrez votre ordinateur afin de vous assurer de la prise en compte correcte des options. Normalement, en allant dans le menu "Options Avancées", il est désormais impossible de démarrer un noyau sans entrer le mot de passe renseigné dans 00_security_header. Néanmoins, depuis le menu principal, il est possible de démarrer le dernier noyau.

Pour sortir du menu sans avoir entré le mot de passe auparavant, il faut saisir le mot de passe!

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, pour limiter les entrées répétitives, je désactive le script "30_os-prober" pour tout les grub non maître.

sudo chmod -x /etc/grub.d/30_os-prober

Néanmoins il reste à sécuriser le menu "Options Avancées" de l'autre OS. Il faut le faire depuis le grub maître.

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 précédemment.

Ligne 292, vous avez:

echo "submenu '$gettext_printf "Advanced options for %s" "${OS} $onstr" | grub_quote)' \$menuentry_id_option 'osprober-gnulinux-advanced-$boot_device_id' {"

Il faut remplacer \$menuentry_id_option par \$restricted, ce qui donne:

echo "submenu '$gettext_printf "Advanced options for %s" "${OS} $onstr" | grub_quote)' \$restricted 'osprober-gnulinux-advanced-$boot_device_id' {"

Puis

sudo update-grub

Puis redémarrer pour vérifier. Cette fois, dès l'appui sur le menu "Options Avancées" de l'autre OS, le mot de passe est demandé.

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).

  • utilisateurs/watts.1584187557.txt.gz
  • Dernière modification: Le 14/03/2020, 13:05
  • par Watts