Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

VirtualBox nutze ich wegen der relativ guten Grafikperformance gerne für meine Windows-VM unter Fedora 24. Bei ersten Start schlug mir eine Fehlermeldung entgegen: Das notwendige „vboxdrv“-Kernelmodul sei noch nicht geladen, daher könne die VM nicht gestartet werden. Gut – das lässt sich ja lösen:

sudo modprobe vbxdrv

… doch damit war es nicht getan: Das Modul ließ sich nicht in den Kernel einbinden, weil es für das aktive SecureBoot nicht mit einem passenden MOK (Machine Owner Key) signiert worden war. Andere geladene Kernelmodule sind bereits von Fedora signiert – bei den VirtualBox Modulen war das nicht der Fall. Warum das so ist, konnte ich noch nicht herausfinden. (=>siehe Notiz unten)

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Es gibt drei Möglichkeiten, das Problem zu beheben:

1) Secure Boot Deaktivieren

Die einfachste Möglichkeit, das SecureBoot-Problem zu umgehen, ist, die Funktion im UEFI des PCs abzuschalten.

2) Boot-Checks deaktivieren

Wer SecureBoot nicht im UEFI deaktivieren will oder kann, kann alternativ auch die Boot-Checks durch Shim deaktivieren. SecureBoot bleibt dabei aktiviert, allerdings werden Bootloader (GRUB), Kernel und Kernelmodule nicht mehr durch Shim überprüft:

sudo mokutil --disable-verification

Passwort vergeben => Neu starten => „Change secure boot state“ => Passwort bei der Deaktivierung angeben

Quelle: http://www.heise.de/open/meldung/Einschraenkungen-durch-Secure-Boot-bei-Fedora-deaktivierbar-1805100.html

3) Module einen eigenen Machine Owner Key signieren

SecureBoot bleibt hierbei aktiviert und bleibt voll funktionsfähig.

Eigenen MOK generieren und registrieren

Da wir den offiziellen Fedora-Key natürlich nicht zum signieren nutzen können, muss ein eigener MOK erstellt werden, sodass wir die VirtualBox-Module einfach selbst signieren können. Ein neuer Key wird so generiert:

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Custom MOK/"

Dabei werden zwei neue Keyfiles im aktuellen Verzeichnis erzeugt: MOK.priv (der private key) und MOK.der (der public key). Beide Dateien solltet ihr unbedingt gut gesichert ablegen. Das gerade erzeugte Schlüsselpaar wird nun im SecureBoot-System registriert:

sudo mokutil --import MOK.der

An dieser Stelle muss ein Passwort für die Registrierung vergeben werden. Dieses wird im nächsten Schritt nur einmalig verwendet. Sobald das Passwort festgelegt ist, wird der Rechner neu gestartet. Ihr bekommt dann einen blauen Bildschirm agezeigt, auf dem ihr gebeten werdet, eine beliebige Taste zu drücken. Wählt dann den zweiten Menüpunkt „Enroll MOK“. Mit „View Key“ könnt ihr den Schlüssel nocheinmal überprüfen und via „Continue“ den Key importieren. Für den Import ist das vorher gewählte Passwort notwendig. Denkt daran, dass das Tastaturlayout an dieser Stelle auf „US“ umgestellt ist, sodass beispielsweise „z“ und „y“ auf der Tastatur vertauscht sind. Der Rechner startet nach dem Import neu.

Nach dem Neustart könnt ihr im Terminal prüfen, ob der neue Key korrekt installiert wurde. Dazu wird eine Liste der registrierten Keys ausgegeben:

mokutil --list-enrolled

Oben sollte euer eigener Key mit dem CN „Custom MOK“ erscheinen. Der Key ist nun im System registriert und kann verwendet werden, um Kernelmodule zu signieren

Kernelmodule mit MOK signieren

Die Signierung der VirtualBox-Module (bzw. beliebiger anderer Kernelmodule) erfolgt nun über diesen Befehl:

sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)

… wobei der markierte Modulname natürlich an das zu signierende Modul angepasst werden muss. Danach kann ein Modul ganz normal via modprobe eingebunden werden:

sudo modprobe vboxdrv

In meinem Fall habe ich die Module „vboxdrv„, „vboxnetflt„, „vboxnetadp“ und „vboxpci“ signiert und geladen. VirtualBox funktionierte dann wieder einwandfrei. Nach VirtualBox-Updates müssen die Module ggf. neu signiert werden.

MOK entfernen

Wer – aus welchen Gründen auch immer – einen MOK aus dem System entfernen will, kann das via

sudo mokutil --delete MOK.der

tun. Alle mit diesem Key signierten Kernelmodule verlieren damit ihre Gültigkeit und müssen erneut signiert werden. Auch für das Entfernen von MOKs muss eine Passphrase festgelegt werden. Nach einem Reboot startet die Schlüsselverwaltung, wo im Menüpunkt „Delete MOK“ der jeweilige Schlüssel mithilfe das vorher festgelegten Passworts entfernt werden kann.

 

Nachtrag: Die VirtualBox Kernelmodule sind nicht mit dem offiziellen Fedora-Key signiert, weil das VB-Paket nicht von Fedora stammt, sondern aus dem von mir hinzugefügten RPM Fusion-Repository. Dort unterstützt man SecureBoot bislang nicht: http://rpmfusion.org/Howto/Secure%20Boot


Post published on 11. August 2016 | Last updated on 11. August 2016
Tags:               

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

2 thoughts on “VirtualBox unter Fedora 24: Kernelmodule für SecureBoot signieren

  • Wer baut denn die Virtualbox Kernell-Module? Werden die als compilierte Module ausgeliefert, oder nur als Sourcen die dann beim Installieren von Virtualbox auf Deiner Kiste gebaut werden? Oder gar über Mechanismen wie DKMS wann immer es nach einem Kernel-Update notwendig ist?

    Dann hast Du nämlich genau das Problem, dass auf Deinem Rechner der private Schlüssel mit dem die Fedora-Module signiert sind nicht rumliegt. Was ja auch genau so beabsichtigt ist, denn wenn der private key der zum Signieren notwendig ist und dessen öffentliches Gegenstück per Default in den BIOS-Settings der Rechner steckt quasi „öffentlich“ wäre könntest Du Secure-Boot auch gleich absschalten, weil ja dann jeder seine Mailware damit signieren könnte.

    So hast Du halt die Hürde, dass Du einen „Machine Owner Key“ selbst erstellen und installieren musst. Aber damit ist eben wieder der Schutz vor bösartigen Modulen gewährleistet, denn der Malware-Bastler hat ja hoffentlich keinen Zugriff auf Deinen private key.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.