Ich verwende den Standard-Ubuntu-Ansatz mit shim und grub2, kombiniert mit meinem eigenen Plattformschlüssel (selbstsignierendes Shim mit sbsign) und einer verschlüsselten Root-Partition, um den Start meiner Ubuntu-Installation zu sichern. Dadurch werden jedoch nur die Dateien grubx64.efi und der Kernel überprüft, die Dateien initrd.img und grub.cfg auf der unverschlüsselten Startpartition werden jedoch nicht vor böswilligen Änderungen geschützt.
Wie kann ich die initrd- und die grub-Konfiguration überprüfen, möglicherweise mithilfe eines sha256-Hash, bevor ich sie zum Booten verwende? Diese Überprüfung kann in Shim, in Grub oder in einem anderen Werkzeug erfolgen, das ich zusätzlich zu oder anstelle von Shim und / oder Grub verwenden kann.
Mit dieser Frage soll verhindert werden, dass der Kernel in einer geänderten Umgebung (Kernel-Befehlszeile und initrd) ausgeführt wird, um zu verhindern, dass das Verschlüsselungskennwort für die Root-Partition an eine beliebige Stelle verloren geht.
Ich habe keine Methoden gefunden, um die Startkonfiguration zu überprüfen , obwohl ich mehrere Tage lang Web-Tutorials / Blogs über sicheres Starten gelesen habe, einschließlich Ubuntu und PreLoader.efi der Linux Foundation, die alle erklären, wie die Überprüfung von ausführbaren Dateien einschließlich Kernelmodulen funktioniert, aber keine Hier werden die Dateien grub.cfg und (Shell-Skripte und Konfigurationsdateien in der) initrd erwähnt. Es sieht also so aus, als wäre ich der erste, der im Boot-Prozess nach einer Überprüfung von Nicht-Binärdateien fragt . Die besten Quellen, die ich je gefunden habe, sind die von Rod Smith .
Was ich noch nicht versucht habe, ist, den Quellcode von Shim oder Grub zu ändern, eine Gabel zu erstellen oder direkt dazu beizutragen. Wäre das der einzige Weg?
quelle
Antworten:
Ich habe einen großartigen Artikel gefunden, der ein solches Setup beschreibt: https://ruderich.org/simon/notes/secure-boot-with-grub-and-signed-linux-and-initrd
tl; dr: Signieren Sie grub config und initrd mit GPG, generieren Sie eine grub-Binärdatei, die Überprüfungen erzwingt, und signieren Sie sie mit Secureboot-Schlüsseln.
Paket für Ubuntu, das eine ähnliche Idee umsetzt: https://github.com/JohnstonJ/ubuntu-secure-boot
quelle
Grub scheint die Signaturüberprüfung mit getrennten Signaturen zu unterstützen. Ich vermute, das ist deine Antwort.
quelle