Yubikey Zwei-Faktor-Authentifizierung Vollständige Festplattenverschlüsselung über LUKS


27

Ich habe kürzlich einen Yubikey Neo gekauft - ein flottes kleines Gerät zur Authentifizierung mit zweitem Hardwarefaktor. Es ist in erster Linie für die Verwendung mit Einmalkennwörtern und dem aufkommenden U2F-Protokoll vorgesehen. Seit Yubikey Version 2 unterstützt es jedoch auch die HMAC-SHA1-Challenge-Response-Authentifizierung. HMAC-SHA1 kombiniert einen geheimen Schlüssel (der im Yubikey gespeichert ist) und kombiniert diesen mit einer Passphrase, um eine Antwort zu generieren.

Wie kann ich den Yubikey mit meinem Ubuntu FDE-Setup kombinieren, um 2FA mit meiner verschlüsselten Festplatte zu verwenden?

Antworten:


30

Eine Gruppe namens PrivacyIdea hat ein kleines Paket erstellt, um eine HMAC-SHA1- Challenge-Response-Routine zu den initramfs hinzuzufügen . Dies bedeutet, dass Ubuntu Sie nach einer Challenge fragen kann, die an Yubikey weitergeleitet werden soll, und die Antwort dann zum Entsperren des LUKS-Volumes verwendet. Zum größten Teil folge ich diesen Anweisungen mit einigen zusätzlichen Kommentaren. Der Prozess ist eigentlich sehr einfach zu machen.

Ich habe dies auf Ubuntu 14.04, 16.04 und 18.04 getestet; mit einem Yubikey Neo. Es sollte mit jedem neueren Yubikey, mit Firmware 2.0+ und mit jeder Version von Ubuntu nach 14.04 funktionieren. Ich habe Ubuntu 19.04 auch mit einem Yubikey 5C getestet, einige zusätzliche Arbeiten waren erforderlich, aber es kann zum Laufen gebracht werden. Es könnte auch andere Hardware-HMAC-SHA1-Challenge-Response-Geräte geben, mit denen dies funktioniert, mir sind jedoch keine bekannt. Stellen Sie wie immer sicher, dass Sie eine Sicherungskopie Ihrer Daten haben, bevor Sie fortfahren. Es sollte hier keine Probleme geben, aber es besteht immer die Möglichkeit, dass dies alles auf Ihrem Computer zerstört. Für diese Anweisungen wird keine Garantie übernommen.

Update: Seit Ubuntu 16.04 befinden sich die benötigten Pakete in den Haupt-Repositories und es wird kein PPA benötigt.

Schreibe einen Kommentar, wenn du Fragen hast!


0. Voraussetzungen

Damit dies funktioniert, muss bereits die LUKS-Festplattenverschlüsselung eingerichtet sein und funktionieren. Sie können dies tun, indem Sie bei der Installation von Ubuntu die entsprechende Option auswählen. Für maximale Sicherheit sollten Sie während der Installation eine sehr starke Passphrase wählen. Wenn Ihre Passphrase nicht auf dem neuesten Stand ist, sollten Sie sie ändern, bevor Sie fortfahren ( ausführlichere Anweisungen hier ).

Die folgende Methode ersetzt keine vorhandenen Passphrasen, sondern fügt stattdessen eine andere Passphrase zu einem der LUKS-Slots hinzu. Wenn Sie Ihren Yubikey verlieren, können Sie Ihren Computer dennoch mit einer vorhandenen Passphrase entsperren. Ich schlage vor, Sie machen sich eine Notiz und verstecken sie an einem sicheren Ort. Sie werden sie auch einige Male während dieses Vorgangs benötigen. Ihre neue Passphrase für die Yubikey-Herausforderung sollte immer noch einigermaßen sicher sein, muss aber nicht so lang sein wie die Passphrase, die Sie bei der Installation von Ubuntu verwendet haben.


1. Fügen Sie PrivacyIdea PPA hinzu und installieren Sie das Paket

Auf Ubuntu 14.04

Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:

sudo add-apt-repository ppa:privacyidea/privacyidea 

Drücken Sie die Eingabetaste, wenn Sie dazu aufgefordert werden, und führen Sie dann Folgendes aus:

sudo apt-get update

Dann installieren Sie das Paket mit:

sudo apt-get install yubikey-luks

Auf Ubuntu 16.04, 18.04

Es ist kein PPA erforderlich. Sie können das Paket mit den folgenden Schritten installieren:

sudo apt-get install yubikey-luks

Auf Ubuntu 19.04

In dieser Antwort erfahren Sie, wie Sie das yubikey-luksPaket aus dem Quellcode für Ubuntu 19.04 erstellen.


2. Installieren Sie die Yubikey-Software

Wenn Sie die HMAC-SHA1-Funktionalität des Yubikey für etwas anderes verwenden, können Sie diesen Abschnitt überspringen. Die Konfiguration im zweiten Yubikey-Steckplatz wird gelöscht. Führen Sie diesen Schritt nicht aus , wenn Sie HMAC-SHA1 für andere Zwecke mit diesem Yubikey verwenden.

Sie müssen Ihr Yubikey so einrichten, dass es mit Ubuntu zusammenarbeitet, indem Sie die erforderliche Software entweder von Yubico PPA auf Ubuntu 14.04 oder vom Haupt-Ubuntu-Repository auf 16.04 und höher installieren .

Auf Ubuntu 14.04

Wenn Sie dies noch nicht getan haben, fügen Sie die PPA hinzu und installieren Sie das Paket mit:

sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization

Unter Ubuntu 16.04, 18.04 (und später)

sudo apt-get install yubikey-personalization

3. Initialisieren Sie den Yubikey-Steckplatz für HMAC-SHA1

Jetzt müssen wir den zweiten Steckplatz des Yubikey mit einer HMAC-SHA1-Konfiguration programmieren. Dadurch wird Ihre vorherige Steckplatzkonfiguration gelöscht, die standardmäßig leer ist. Wenn Sie HMAC-SHA1 für einen anderen Zweck verwenden, geben Sie diesen Befehl nicht ein. Dadurch wird Ihre Konfiguration gelöscht. Sie können für dieses LUKS-Setup sicher denselben geheimen Schlüssel im Yubikey verwenden wie für Ihre anderen Zwecke. (Zum Beispiel mit einem anderen Computer, der LUKS + Yubikey verwendet).

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Das Terminal zeigt einige Informationen zu den vorgenommenen Änderungen an. Sie müssen dies nicht notieren, aber es wird der geheime Schlüssel angezeigt, der vom Yubikey im HMAC-SHA1-Algorithmus verwendet wird, um die Antwort bei einer gegebenen Herausforderung zu berechnen.


4. Registrieren Sie Yubikey für den LUKS Slot

Jetzt werden wir die LUKS-Konfiguration bearbeiten, um die Antwort vom Yubikey als einen der Entschlüsselungsschlüssel anzuhängen.

Die Partition, die wir angeben müssen, hängt davon ab, ob Sie BIOS oder UEFI zum Booten Ihres Computers verwenden. Für das BIOS ist das verschlüsselte Volume /dev/sda5standardmäßig auf, für UEFI auf /dev/sda3. Sie können dies überprüfen, indem Sie das disksDienstprogramm öffnen und den Pfad der Partition bestätigen - dies sollte entweder sda3oder sein sda5. HINWEIS: Auf neueren Computern mit NVMe-Datenträgern lautet der Pfad ungefähr /dev/nvme0n1p3.

Führen Sie dies in einem Terminal aus:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

Dies wird in Steckplatz 7 der LUKS-Konfiguration geschrieben. Befolgen Sie die Anweisungen im Installationsprogramm (sie variieren geringfügig, je nachdem, welche Version Sie ausführen).

Dann sind Sie fertig! Sie sollten in der Lage sein, Ihren Computer neu zu starten. Wenn Ihr Yubikey eingefügt ist, können Sie Ihr Challenge-Passwort eingeben und den Yubikey als zweiten Faktor verwenden, um die LUKS-Partition zu entsperren und das System zu starten. Sobald Sie die Festplatte entschlüsselt haben, können Sie den Yubikey entfernen.

Wenn Sie Ihren Yubikey verlieren, können Sie immer noch Ihre ursprüngliche (hoffentlich sehr lange) Passphrase eingeben, um die Festplatte zu entschlüsseln. Anschließend können Sie diesen Vorgang erneut ausführen, um einen neuen Yubikey zu registrieren.


Ändern der Passphrase für die Verschlüsselungsaufforderung

Das Passwort zu einem späteren Zeitpunkt zu ändern ist ganz einfach. Verwenden Sie einfach diesen Befehl, um den geheimen Schlüssel zurückzusetzen. Es ist nicht unbedingt erforderlich, den geheimen Schlüssel zurückzusetzen, aber es tut nicht weh. Denken Sie daran, dass dies den vorherigen geheimen Schlüssel zerstört. Tun Sie dies nicht , wenn Sie HMAC-SHA1 für etwas anderes mit diesem Yubikey verwenden. (Zum Beispiel mit einem anderen Computer, der LUKS + Yubikey verwendet).

 ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Dann, ähnlich wie in Schritt 4 oben, um ein neues Passwort in den LUKS-Schlüssel-Slot einzutragen, außer, um Slot 7 mit diesem Befehl zu löschen:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

Wenn Sie dazu aufgefordert werden Enter any remaining passphrase, verwenden Sie Ihre Sicherungs-Passphrase - nicht die Yubikey-Challenge-Passphrase. Geben Sie anschließend zweimal eine neue Yubikey-Challenge-Passphrase ein. Anschließend müssen Sie die Backup-Passphrase ein letztes Mal eingeben.

Jetzt wurde Ihre alte Yubikey-Challenge-Passphrase entfernt und nur Ihre neue entschlüsselt die Festplatte. Ihre vorherige Sicherungs-Passphrase bleibt unverändert. Sie können diese Passphrase ändern, indem Sie den Links in Schritt 0 folgen .


Hinweis zu Sicherheitsrisiken

Durch das Hinzufügen eines Yubikey wird Ihrem System ein gewisses Maß an Sicherheit verliehen - jemand muss sowohl die Challenge-Passphrase als auch Ihren Yubikey kennen, um Ihre Festplatte entsperren zu können (oder Ihre ursprüngliche Passphrase finden, die Sie jetzt als Backup verwenden). . Es ist jedoch technisch machbar, dass ein Angreifer die Festplatte entschlüsselt, wenn er Ihre Challenge-Passphrase kennt (z. B. indem er beim Eintippen auf der Schulter surft) und nur für kurze Zeit auf Ihren Yubikey zugreifen kann. Mithilfe der Challenge-Passphrase können sie die Antwort vom Yubikey abrufen und speichern und sie dann verwenden, um die Festplatte jederzeit ohne den Yubikey zu entschlüsseln. Wenn ein Angreifer oder ein Teil der Malware Ihre Passphrase kannte und Code auf einem Computer ausführen konnte, der mit Ihrem Yubikey verbunden ist, konnte er auch die Herausforderung auslösen und die Antwort speichern. Es ist daher nach wie vor äußerst wichtig, bei der Eingabe Ihrer Challenge-Passphrase wachsam zu sein und sicherzustellen, dass Sie den Yubikey immer an einem sicheren Ort aufbewahren. Sie sollten es auch immer nur an einen Computer anschließen, dem Sie vertrauen. Wenn Sie den Überblick über Ihren Yubikey verlieren und vermuten, dass jemand versucht hat, den Entschlüsselungsschlüssel zu erlernen, führen Sie die Schritte 2 und 3 erneut aus, um den geheimen Schlüssel im Yubikey zurückzusetzen und eine neue Passphrase für die Herausforderung auszuwählen. Beachten Sie, dass ein Angreifer, der es geschafft hat, eine Ihrer Passphrasen (entweder die HMAC-SHA1-Antwort vom Yubikey oder Ihre Sicherungskopie) zu lernen, eine Sicherungskopie des LUKS-Hauptschlüssels erstellen und diese dann verwenden kann, um Ihre Festplatte zu entschlüsseln, selbst wenn Sie ändern die Passphrase in der Zukunft. und um sicherzustellen, dass Sie den Yubikey immer an einem sicheren Ort haben. Sie sollten es auch immer nur an eine Maschine anschließen, der Sie vertrauen. Wenn Sie den Überblick über Ihren Yubikey verlieren und vermuten, dass jemand versucht hat, den Entschlüsselungsschlüssel zu erlernen, führen Sie die Schritte 2 und 3 erneut aus, um den geheimen Schlüssel im Yubikey zurückzusetzen und eine neue Passphrase für die Herausforderung auszuwählen. Beachten Sie, dass ein Angreifer, der es geschafft hat, eine Ihrer Passphrasen (entweder die HMAC-SHA1-Antwort vom Yubikey oder Ihre Sicherungskopie) zu lernen, eine Sicherungskopie des LUKS-Hauptschlüssels erstellen und diese dann verwenden kann, um Ihre Festplatte zu entschlüsseln, selbst wenn Sie ändern die Passphrase in der Zukunft. und um sicherzustellen, dass Sie den Yubikey immer an einem sicheren Ort haben. Sie sollten es auch immer nur an eine Maschine anschließen, der Sie vertrauen. Wenn Sie den Überblick über Ihren Yubikey verlieren und vermuten, dass jemand versucht hat, den Entschlüsselungsschlüssel zu erlernen, führen Sie die Schritte 2 und 3 erneut aus, um den geheimen Schlüssel im Yubikey zurückzusetzen und eine neue Passphrase für die Herausforderung auszuwählen. Beachten Sie, dass ein Angreifer, der es geschafft hat, eine Ihrer Passphrasen (entweder die HMAC-SHA1-Antwort vom Yubikey oder Ihre Sicherungskopie) zu lernen, eine Sicherungskopie des LUKS-Hauptschlüssels erstellen und diese dann verwenden kann, um Ihre Festplatte zu entschlüsseln, selbst wenn Sie ändern die Passphrase in der Zukunft. Führen Sie die Schritte 2 und 3 erneut aus, um den geheimen Schlüssel im Yubikey zurückzusetzen und eine neue Passphrase für die Herausforderung auszuwählen. Beachten Sie, dass ein Angreifer, der es geschafft hat, eine Ihrer Passphrasen (entweder die HMAC-SHA1-Antwort vom Yubikey oder Ihre Sicherungskopie) zu lernen, eine Sicherungskopie des LUKS-Hauptschlüssels erstellen und diese dann verwenden kann, um Ihre Festplatte zu entschlüsseln, selbst wenn Sie ändern die Passphrase in der Zukunft. Führen Sie die Schritte 2 und 3 erneut aus, um den geheimen Schlüssel im Yubikey zurückzusetzen und eine neue Passphrase für die Herausforderung auszuwählen. Beachten Sie, dass ein Angreifer, der es geschafft hat, eine Ihrer Passphrasen (entweder die HMAC-SHA1-Antwort vom Yubikey oder Ihre Sicherungskopie) zu lernen, eine Sicherungskopie des LUKS-Hauptschlüssels erstellen und diese dann verwenden kann, um Ihre Festplatte zu entschlüsseln, selbst wenn Sie ändern die Passphrase in der Zukunft.Die Manpage für cryptsetup erklärt dies im Abschnitt luksHeaderBackup . Wenn Sie den Verdacht haben, dass dies geschehen ist, müssen Sie ein völlig neues LUKS-Volume erstellen, um Ihre Daten zu schützen.


Update: Ich habe es auch mit 15.04 versucht. Es sieht so aus, als ob die PPA nicht das erforderliche Paket erstellt. Daher muss ich die DEB-Zeile in den Software-Quellen ändern, um das "vertrauenswürdige" Repository anstelle von "lebendig" zu verwenden ". Nach dieser Änderung funktioniert mein LUKS + Yubikey-Setup nun am 15.04.
Seanlano

4
Benutzen Sie das privacyidea repo nicht mehr! Das Paket ist jetzt in Debian enthalten!
cornelinux

1
Es gibt eine Möglichkeit, die Anmeldung ohne yubikey zu vermeiden: Ändern Sie die luks-Passphrase jedes Mal, wenn sich der Benutzer anmeldet. Eine Implementierung für Gentoo finden Sie hier: github.com/flowolf/initramfs_ykfde Sie kann innerhalb kurzer Zeit für Ubuntu angepasst werden.
Unbenannt_1

1
Ich vermute, dass das gleiche Verfahren für die neue LTS-Version 18.04 funktioniert.
Mark Veenstra

2
Ich habe es mit Ubuntu 18.04 versucht und es funktioniert gut.
Jetole

0

Update für Ubuntu 19.04:

Es sieht so aus, als ob Ubuntu 19.04 (und vielleicht 18.10, ich habe dieses Release nicht ausprobiert) cryptsetupgerade genug geändert hat, um die Funktionsweise zu ändern yubikey-luks. Dies verpflichten von der Upstream - Repository scheint eine Lösung zu implementieren, aber die Original - Repository scheint nicht seit 2018. Oktober aktualisiert worden sein ich diese Gabel des Repo gefunden , die das Update hat, sowie ein paar anderen Bits von tidying- und schaffte es, ein Paket zu erstellen, das am 19.04.

Da ich kein vorhandenes Build des aktualisierten Fork gefunden habe, müssen Sie den yubikey-luksQuellcode abrufen und das DEB-Paket lokal erstellen und dann installieren.

Befolgen Sie die Schritte in meiner vorherigen Antwort , außer dass Sie Schritt 1 durch die folgenden ersetzen:


1. Holen Sie sich die Quelle von yubikey-luks, bauen Sie das Paket auf und installieren Sie es

Installieren Sie Build-Abhängigkeiten mit:

sudo apt install dh-exec devscripts expect yubikey-personalization

Laden Sie dann das Quellarchiv herunter und extrahieren Sie es:

mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*

Bauen Sie das Paket mit:

make builddeb NO_SIGN=1

Dann installiere es:

sudo dpkg -i DEBUILD/yubikey-luks_*.deb

Folgen Sie dann den weiteren Schritten in meiner ersten Antwort.

Hoffentlich kann bis 19.10 die Version von yubikey-luksim Ubuntu-Hauptarchiv aktualisiert werden, so dass kein manuelles Erstellen erforderlich ist.

Als Bonus hat die neuere Version eine Konfigurationsdatei, die unter zu finden ist /etc/ykluks.cfg. Die beim Booten angezeigte Meldung kann in dieser Datei konfiguriert werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.