Secure boot
Secure Boot permet d'autoriser le démarrage d'images seulement quand elles sont signées par un jeu de clefs définies par la politique en vigueur.
Nous utilisons Secure Boot pour empêcher le démarrage sur une image non reconnue : par exemple, si quelqu'un ayant un accès physique au serveur branche une clef USB.
Ainsi, nous utilisons nos propres clefs Platform Keys (PKs) qui signent le
chargeur d'amorçage systemd-boot et pour chaque génération NixOS, une image
contenant :
- un chemin vers le noyau à démarrer et son haché pour vérifier son authenticité,
- un chemin vers l'initrd à démarrer et son haché, et
- les paramètres du noyau.
Il existe plusieurs modes Secure Boot, et seuls certains modes permettent d'enregistrer (« enroll ») des nouvelles clefs. Il faut une procédure particulière pour configurer Secure Boot et enroll les clefs : il faut transitionner dans le mode Secure Boot correspondant à l'opération souhaitée.
Pour comprendre les modes Secure Boot et les transitions entre ces modes plus en détail, vous pouvez vous référer à la spécification d'UEFI.
Créer la clef de signature de l'image
Lors de l'installation, il est nécessaire de créer la clef qui signera l'image.
sudo sbctl create-keys
mv /var/lib/sbctl /mnt/persistent/var/lib/
sudo mount --bind -m -o X-fstrim.notrim /mnt/persistent/var/lib/sbctl /mnt/var/lib/sbctl
Désactiver Secure boot
Il faut désactiver Secure Boot en allant dans le BIOS en suivant la documention d'iDRAC (Figure 9, page 15).
Enfin, il est possible de redémarrer en utilisant "Reset System (warn boot)", depuis le bouton "Power".
Activer Secure boot
Dans les paramètres de l'iDRAC (« BIOS Settings » > « System Security »), activez Secure Boot. La policy doit être « Custom » pour permettre l'utilisation de clefs et certificats customisés et le mode doit être « Audit Mode » pour permettre l'installation des clefs. Pour atteindre ce mode, la figure 3 de la documentation de l'iDRAC relative à Secure Boot peut être utile. Redémarrez ensuite.
Les clefs pour Secure Boot peuvent alors être renseignées :
sudo sbctl enroll-keys --microsoft --ignore-immutable
Redémarrez le système. Normalement, le mode de Secure Boot est passé en «
Deployed Mode » dans les paramètres de l'iDRAC. Activez ensuite Secure Boot et
redémarrez. Vérifiez que le système démarre bien et que Secure Boot est bien
activé en exécutant sudo sbctl status.