Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Secure Boot unter Linux einrichten
Alpha Offline
Oskar

Beiträge: 15.830
Registriert seit: Jan 2009
Beitrag #1
Secure Boot unter Linux einrichten
Sofern es jemanden interessiert, hier ein kleines Howto, um Secure Boot einzurichten.
Ich gehe davon aus, dass euer System bereits mit UEFI lauffähig ist.

Vorbereitungen
Ihr müsst die efitools und efibootmgr installieren.
Im Regelfall sollte eure Distribution diese mitbringen oder als Paket anbieten.

Sicherung
Im ersten Schritt sollten die aktuellen Keys gesichert werden.

Code:
mkdir -p /etc/efi
chmod 700 /etc/efi
efi-readvar -v PK -o /etc/efi/old_PK.esl
efi-readvar -v KEK -o /etc/efi/old_KEK.esl
efi-readvar -v db -o /etc/efi/old_db.esl
efi-readvar -v dbx -o /etc/efi/old_dbx.esl
chmod 400 /etc/efi/*.key

Eigene Schlüssel erzeugen
Im nächsten Schritt erzeugen wir unsere eigenen Schlüssel. Der Text innerhalb subj für CN kann frei angepasst werden.

Code:
openssl req -new -x509 -newkey rsa:4096 -subj "/CN=My New Platform Key/" -keyout /etc/efi/PK.key -out /etc/efi/PK.crt -days 3650 -nodes -sha512
openssl req -new -x509 -newkey rsa:4096 -subj "/CN=My New Key-Exchange-Key/" -keyout /etc/efi/KEK.key -out /etc/efi/KEK.crt -days 3650 -nodes -sha512
openssl req -new -x509 -newkey rsa:4096 -subj "/CN=My New Kernel-Signing Key/" -keyout /etc/efi/db.key -out /etc/efi/db.crt -days 3650 -nodes -sha512

Secure Boot Schlüssel löschen
Jetzt müsst ihr den Rechner neustarten und im UEFI-Setup die Einstellungen für Secure Boot aufrufen.
Dort sollte es eine Option geben, mit welcher die vorhandenen Schlüssel gelöscht werden.
Bei mir hieß die Option Clear Secure Boot Keys, Secure Boot ist dannach automatisch deaktiviert und sollte sich im Setup-Mode befinden.

Eigene Secure Boot Schlüssel importieren
Startet wieder euere Linux-Distribution und beginnt mit dem Import der alten Schlüssel.
Code:
efi-updatevar -e -f /etc/efi/old_KEK.esl KEK
efi-updatevar -e -f /etc/efi/old_db.esl db
efi-updatevar -e -f /etc/efi/old_dbx.esl dbx

Danach kommen die eigenen Schlüssel:
Code:
cert-to-efi-sig-list -g "$(uuidgen)" /etc/efi/PK.crt /etc/efi/PK.esl
sign-efi-sig-list -k /etc/efi/PK.key -c /etc/efi/PK.crt PK /etc/efi/PK.esl /etc/efi/PK.auth
efi-updatevar -a -c /etc/efi/KEK.crt KEK
efi-updatevar -a -c /etc/efi/db.crt db
efi-updatevar -f /etc/efi/PK.auth PK

Wenn Ihr efi-readvar ohne weitere Argumente aufruft, solltet Ihr eine Auflistung aller Schlüssel bekommen. Dort muss jetzt auch der neue Schlüssel sichtbar sein.
Nach dem Einspielen der Schlüssel ist Secure Boot wieder im User-Modus und automatisch aktiv!

Kernel signieren
Im letzten Schritt wird jetzt der Kernel mit eurem Schlüssel signiert, damit dieser bei aktivierten Secure Boot validiert werden kann.
sbsign --key /etc/efi/db.key --cert /etc/efi/db.crt --output /Pfad/zum/signierten/bzImage.signed /Pfad/zum/aktuellen/nicht/siginierten/bzImage

Prüft mit efibootmgr -v, wo aktuell eurer Kernel-Eintrag liegt (Die *.efi-Datei). Die *.efi-Datei wird durch das neue bzImage.signed ersetzt.
Nach einem Reboot sollte mit aktivierten Secure Boot der Kernel starten.

Backup
Es wäre ratsam, wenn Ihr nach dem erfolgreichen Test ein Dump der neuen Schlüssel zieht, sollte im Falle eines Bios-Updates oder Mainboard-Schadens das Wiederherstellen dieser Schlüssel nötig sein.

Code:
efi-readvar -v PK -o /etc/efi/new_PK.esl
efi-readvar -v KEK -o /etc/efi/new_KEK.esl
efi-readvar -v db -o /etc/efi/new_db.esl
efi-readvar -v dbx -o /etc/efi/new_dbx.esl

RIP Oskar
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2016 14:28 von Alpha.)
11.02.2016 10:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #2
RE: Secure Boot unter Linux einrichten
Danke für die Anleitung, kann man eventuell mal gebrauchen.

Man sieht hier schön, wie kompliziert es Microsoft dem Nutzer systematisch macht, seinen PC mit Linux einzurichten. Zum Glück kann man das noch im BIOS abschalten, die Frage ist halt wie lange noch. Wenn es die Abschaltoption in Zukunft nicht mehr gibt, kann dieses Tutorial durchaus nützlich sein.
11.02.2016 10:48
Diese Nachricht in einer Antwort zitieren
Alpha Offline
Oskar

Beiträge: 15.830
Registriert seit: Jan 2009
Beitrag #3
RE: Secure Boot unter Linux einrichten
(11.02.2016 10:48)mrshadowtux schrieb:  Zum Glück kann man das noch im BIOS abschalten, die Frage ist halt wie lange noch. Wenn es die Abschaltoption in Zukunft nicht mehr gibt, kann dieses Tutorial durchaus nützlich sein.

Entscheidend ist, ob man Secure Boot in den Setup-Mode kriegt. Wenn das nicht geht und Secure Boot nicht abschaltbar ist, hat man verloren.
Worst Case Szenario wäre sonst, dass man sich den signierten GRUB von Ubuntu klaut, der ist mit einem Microsoft Key signiert.. aber das ist ziemlich unschön, finde ich..

RIP Oskar
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2016 10:57 von Alpha.)
11.02.2016 10:54
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #4
RE: Secure Boot unter Linux einrichten
Wir werden zeigen was die Zukunft bringt. Ich stehe dem eher kritisch gegenüber, PCs wie Smartphones zu verdongeln und Enduser faktisch komplett davon abzuhalten, Linux zu installieren.
11.02.2016 10:59
Diese Nachricht in einer Antwort zitieren
tk1908 Offline
Unixer

Beiträge: 7.130
Registriert seit: Apr 2009
Beitrag #5
RE: Secure Boot unter Linux einrichten
(11.02.2016 10:59)mrshadowtux schrieb:  Wir werden zeigen was die Zukunft bringt. Ich stehe dem eher kritisch gegenüber, PCs wie Smartphones zu verdongeln und Enduser faktisch komplett davon abzuhalten, Linux zu installieren.

Der Witz is halt, dass es 99% der Enduser sonst wo vorbeigeht. Es interessiert sie schlicht und ergreifend nicht. Ich geb dir allerdings Recht, dass wir warten müssen, was die Zukunft bringt. Harren wir der Dinge, die da kommen.

@Alpha

Danke für die Anleitung, kann man bestimmt mal gebrauchen.

BTW: Wir brauchen ne Kategorie "Tutorials"

[Bild: Rz3JNLI.gif]
Meine Beiträge stehen unter der MIT-Lizenz:D

(09.04.2016 14:26)tk1908 schrieb:  externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2016 11:06 von tk1908.)
11.02.2016 11:06
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #6
RE: Secure Boot unter Linux einrichten
(11.02.2016 11:06)tk1908 schrieb:  BTW: Wir brauchen ne Kategorie "Tutorials"
Definitiv
11.02.2016 11:07
Diese Nachricht in einer Antwort zitieren
gandro Online
Quälgeist

Beiträge: 8.815
Registriert seit: Jul 2008
Beitrag #7
RE: Secure Boot unter Linux einrichten
On-Topic: Wie machst du das mit der Initramdisk?

(11.02.2016 10:48)mrshadowtux schrieb:  Man sieht hier schön, wie kompliziert es Microsoft dem Nutzer systematisch macht, seinen PC mit Linux einzurichten. Zum Glück kann man das noch im BIOS abschalten, die Frage ist halt wie lange noch. Wenn es die Abschaltoption in Zukunft nicht mehr gibt, kann dieses Tutorial durchaus nützlich sein.
Off-Topic: Ich finde, Microsoft verdient hier eher Lob. Es ist Microsoft zu verdanken, dass man auf ausnahmsweise jedem UEFI die Microsoft-Schlüssel löschen und eigene einbauen kann. Damit man Geräte mit Windows-Aufkleber verkaufen darf, muss man dem User erlauben, seine eigenen Secureboot-Zertifikate zu installieren.

Jede Wette, dass wenn Microsoft diese Klausel nicht hätte, dass viele Hersteller solche Funktionen selber gar nicht einbauen würden. Und würde Microsoft Secureboot nicht erzwingen, glaube ich hätten wir das auch nicht.

Kurzum: Würde Microsoft die Secureboot-Regeln den Herstellern überlassen, wäre die Situation vermutlich noch viel schlimmer.
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2016 14:20 von gandro.)
11.02.2016 14:19
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alpha Offline
Oskar

Beiträge: 15.830
Registriert seit: Jan 2009
Beitrag #8
RE: Secure Boot unter Linux einrichten
(11.02.2016 14:19)gandro schrieb:  On-Topic: Wie machst du das mit der Initramdisk?

Wie genau meinst du das? Ich habe eine initramfs im Einsatz, weil LUKS. Gibt zwei Optionen. Entweder direkt in den Kernel miteinkompilieren oder im UEFI mitübergeben. Ich mache ersteres.. zweiteres sollte aber kein Problem sein. Mit efibootmgr einfach diese angeben:
Code:
efibootmgr --create --disk sda --part 1 --label "Gentoo Linux" --loader '\efi\gentoo\boot\kernel.efi' -u initrd='\efi\gentoo\boot\initramfs.img'
Oder worauf willst du hinaus?

(11.02.2016 14:19)gandro schrieb:  Off-Topic: Ich finde, Microsoft verdient hier eher Lob. Es ist Microsoft zu verdanken, dass man auf ausnahmsweise jedem UEFI die Microsoft-Schlüssel löschen und eigene einbauen kann. Damit man Geräte mit Windows-Aufkleber verkaufen darf, muss man dem User erlauben, seine eigenen Secureboot-Zertifikate zu installieren.

Jede Wette, dass wenn Microsoft diese Klausel nicht hätte, dass viele Hersteller solche Funktionen selber gar nicht einbauen würden. Und würde Microsoft Secureboot nicht erzwingen, glaube ich hätten wir das auch nicht.

Kurzum: Würde Microsoft die Secureboot-Regeln den Herstellern überlassen, wäre die Situation vermutlich noch viel schlimmer.

Leider (nicht mehr) so ganz richtig :( Bis Windows 8.1 stand das genauso drin, wie du es schreibst. Mit Windows 10 ist es nur noch optional seitens Microsoft und damit ist man vom Hersteller abhängig..

RIP Oskar
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2016 14:29 von Alpha.)
11.02.2016 14:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
είσαι καλαμάρι τώρα

Beiträge: 11.953
Registriert seit: Jul 2008
Beitrag #9
RE: Secure Boot unter Linux einrichten
(11.02.2016 10:54)Alpha schrieb:  Worst Case Szenario wäre sonst, dass man sich den signierten GRUB von Ubuntu klaut, der ist mit einem Microsoft Key signiert.. aber das ist ziemlich unschön, finde ich..

Aber in dem Falle wohl die einzige Lösung, wenn man sowohl Linux als auch Windows mit Secure Boot parallel booten möchte? Was natürlich kontraproduktiv ist, weil weder Kernel noch Initramfs mehr signiert sein müssen.

ты ребенок сейчас
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2016 14:34 von DosAmp.)
11.02.2016 14:31
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alpha Offline
Oskar

Beiträge: 15.830
Registriert seit: Jan 2009
Beitrag #10
RE: Secure Boot unter Linux einrichten
(11.02.2016 14:31)DosAmp schrieb:  
(11.02.2016 10:54)Alpha schrieb:  Worst Case Szenario wäre sonst, dass man sich den signierten GRUB von Ubuntu klaut, der ist mit einem Microsoft Key signiert.. aber das ist ziemlich unschön, finde ich..

Aber in dem Falle wohl die einzige Lösung, wenn man sowohl Linux als auch Windows mit Secure Boot parallel booten möchte?

Warum?
UEFI ist dein Boot Manager. Dort hinterlegst du den "Windows Boot Manager" (bzw. macht das Windows-Setup) und deinen "Linux Kernel" (mittels efibootmgr) als Booteinträge, welche gestartet werden.
So handhabe ich es hier. Mit F12 kann ich beim Starten vom PC mein Bootmenu vom UEFI aufrufen und Linux alternativ starten, da Windows als erstes eingetragen ist.

GRUB ist absolut nicht notwendig, bzw. braucht man im Prinzip mit UEFI überhaupt nicht mehr..

[EDIT]
Ubuntu ist ein Sonderfall. Deren siginierter GRUB2 ist gepatched! Wenn der GRUB2 keinen signierten Kernel von Canonical bekommt, kann er nichts booten! Damit wird Secure Boot sogesehen nicht ausgebelt.. Das könnte man sicher patchen, dass eigene Schlüssel siginiert werden.

RIP Oskar
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2016 14:36 von Alpha.)
11.02.2016 14:33
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste