Zum Hauptinhalt Zur Navigation

Systemverschlüsselung: Yubikeys Zwei-Faktor-Authentifizierung unter Linux nutzen

Mit Hilfe des Yubikeys lässt sich eine verschlüsselte Systempartition unter Linux zusätzlich per Zwei-Faktor-Authentifizierung absichern. In dieser Kombination kann auch ein bequemeres Kennwort genutzt werden.
/ Jörg Thoma
39 Kommentare News folgen (öffnet im neuen Fenster)
Per Zwei-Faktor-Authentifizierung mit dem Yubikey können auch verschlüsselte Linux-Partitionen abgesichert werden. (Bild: Screenshot: Golem.de)
Per Zwei-Faktor-Authentifizierung mit dem Yubikey können auch verschlüsselte Linux-Partitionen abgesichert werden. Bild: Screenshot: Golem.de

Wer seine Systempartition verschlüsselt, sollte ein möglichst langes und kompliziertes Passwort verwenden. Es bei jedem Neustart einzugeben, kann aber auf Dauer lästig werden. Eine Zwei-Faktor-Authentifizierung mit den Yubikeys Nano, Edge oder Neo erhöht nicht nur die Sicherheit, damit kann auch bedenkenlos ein weitaus kürzeres Passwort verwendet werden.

Ausprobiert haben wir die Anmeldung mit dem Yubikey Neo unter Ubuntu 14.04 LTS und der aktuellen Version 17.2 von Linux Mint, die ebenfalls auf Ubuntu 14.04 basiert. Die dafür benötigten Software-Pakete liegen in entsprechenden PPA-Quellen vor. Prinzipiell funktioniert diese Anleitung auch mit anderen Ubuntu-Versionen oder weiteren Linux-Distributionen. Allerdings muss unter Umständen das entscheidende Paket yubikey-luks selbst kompiliert werden. Cornelius Kölbels Quellcode lässt sich über Github beziehen(öffnet im neuen Fenster) .

Ubuntu oder Linux Mint verschlüsselt installieren

Zunächst richten wir unsere Ubuntu-Distribution bei der Installation so ein, dass das gesamte System verschlüsselt wird. Diese Option gibt es in der Festplattenkonfiguration des Installers. Das dort vergebene Kennwort sollte möglichst lang sein und viele Sonderzeichen enthalten. Es bleibt auch nach der Einrichtung der Zwei-Faktor-Authentifizierung mit dem Yubikey bestehen und dient als Backup, falls der Schlüssel mal verloren geht. Dieses Hauptkennwort müssen wir bei Einrichtung des Yubikeys noch einige Male eingeben. Danach sollte es notiert und an einem sicheren Ort verwahrt werden.

Nach einem Neustart des frischen Systems lassen wir uns mit dem Befehl sudo lsblk --fs sämtliche Partitionen anzeigen, die bei der Installation von Ubuntu eingerichtet worden sind. Wurde bei der Installation das gesamte System verschlüsselt, tauchen jetzt die Einträge ubuntu--vg-root und ubuntu--vg-swap auf. Beide Partitionen sind standardmäßig unter dem LVM2-Namen sda5_crypt eingerichtet und erhalten den gemeinsamen Gerätenamen sda5 . Die dort angezeigte Boot-Partition muss unverschlüsselt bleiben, denn dort liegt das temporäre Dateisystem Initrd mit der Startumgebung. Dort muss später ein Skript für den Yubikey eingebettet werden.

Software muss aus Fremdquellen geholt werden

Mit sudo cryptsetup luksDump /dev/sda5 lässt sich die Verschlüsselungsart feststellen. Dort sind auch die sogenannten Key-Slots zu sehen. Insgesamt gibt es davon sieben. Demnach können jedem verschlüsselten Volume bis zu sieben verschiedene Passwörter zugeordnet werden. In unserem Fall weisen wir später dem Yubikey den letzten Slot mit der Nummer 7 zu.

Zunächst installieren wir aber die dafür benötigte Software. Zwar gibt es bereits die wichtigsten Konfigurationswerkzeuge in den Standardpaketquellen, für die Konfiguration mit Luks müssen wir aber stattdessen zusätzlich zwei Fremdquellen einrichten. Mit

sudo add-apt-repository ppa:privacyidea/privacyidea-dev

und

sudo add-apt-repository ppa:yubico/stable

werden sie unseren Paketquellen hinzugefügt.

Anschließend wird zunächst die Konfigurationssoftware für den Yubikey installiert. Dafür geben wir den Befehl

sudo apt-get install yubikey-personalization

ein. Wer will, kann zusätzlich die grafische Version mit

sudo apt-get install yubikey-personalization-gui

installieren. Anschließend muss noch das Paket yubikey-luks installiert werden.

Konfiguration des Yubikeys und Einrichtung des Systems

Jetzt wird zunächst der Yubikey mit der Befehlszeile

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

präpariert. Der erste Parameter weist die Anwendung ykpersonalize an, den zweiten Slot des Yubikeys zu verwenden. Jeder Schlüssel hat zwei Slots, die nach Bedarf eingerichtet werden. Der verbleibende kann beispielsweise für die Verwendung mit OpenPGP oder für One-Time-Password-Tokens verwendet werden.

Für die Authentifizierung bei unserer verschlüsselten Partition verwenden wir das Challenge-Response-Verfahren. Dafür sorgt die Option -ochal-resp . Betriebssystem und Yubikey verifizieren sich dabei gegenseitig per HMAC-SHA1, das mit der Option -ochal-hmac festgelegt wird. Die Länge des HMAC-Hashs wird mit der Option -ohmac-lt64 auf 64 Bytes festgelegt, was völlig ausreichend ist. Schließlich erlauben wir mit dem Parameter -oserial-api-visible dem Betriebssystem, die Seriennummer des Yubikeys auszulesen. Die Ausgabe des Befehls muss nicht notiert werden, dort wird etwa einmalig der geheime Schlüssel angezeigt, mit dem der Yubikey seine Antwort auf Anforderungen des Betriebssystems kalkuliert.

Yubikey am System anmelden

Jetzt müssen wir noch Luks (Linux Unified Key Setup) mit dem Yubikey bekannt machen. Zunächst müssen wir einen weiteren Kennwort-Slot für unsere verschlüsselte Partition freigeben. Dazu verwenden wir die Befehlszeile

sudo cryptsetup luksAddKey --key-slot 7 /dev/sda5

Jetzt werden wir zunächst aufgefordert, das Hauptkennwort einzugeben, dass wir bei der Installation vergeben haben. Anschließend müssen wir noch ein weiteres beliebiges Passwort vergeben. Merken müssen wir es uns nicht, denn es wird später überschrieben. Mit sudo cryptsetup luksDump /dev/sda5 können wir nochmals überprüfen, ob Slot 7 aktiviert ist, anderenfalls funktioniert die Einrichtung des Yubikeys nicht.

Mit

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

machen wir dann Luks mit dem Yubikey bekannt. Dabei wird ein Skript zur Authentifizierung in die Startumgebung Initrd eingefügt. Jetzt folgt nochmals die mehrfache Eingabe diverser Passwörter. Zunächst muss abermals das Hauptkennwort eingeben werden. Erst jetzt erfolgt die Aufforderung, unser kürzeres Kennwort zu setzen, dass wir später zusammen mit dem Yubikey benötigen, um den Zugriff auf das verschlüsselte System freizuschalten. Es muss einmal verifiziert werden. Schließlich wird ein letztes Mal die Eingabe des Hauptkennworts benötigt.

Und Neustart!

Jetzt kann das System mit eingestecktem Yubikey neu gestartet werden. Dort wo zuvor das komplizierte Hauptkennwort eingegeben werden musste, reicht jetzt die Eingabe des neuen kürzeren Passworts. Die Schaltfläche auf dem Yubikey muss nicht gedrückt werden. Nach der gegenseitigen Authentifizierung wird das neue Kennwort vom Yubikey um einen geheimen Schlüssel ergänzt. Diese Kombination sorgt dann dafür, dass unsere verschlüsselte Partition geöffnet wird und das Betriebssystem startet. Wenn das System läuft, kann der Yubikey bis zum nächsten Neustart entfernt werden.

Falls der Yubikey einmal verloren geht, bleibt immer noch das Hauptkennwort, um sich am System anzumelden. Allerdings sollte dann vorsichtshalber mit sudo cryptsetup luksRemoveKey --key-slot 7 /dev/sda5 das Yubikey-Kenwort wieder entfernt werden. Das bestehende Kennwort kann bei eingestecktem Yubikey mit den Befehlen sudo cryptsetup luksAddKey --key-slot 7 /dev/sda5 und sudo yubikey-luks-enroll -d /dev/sda5 -s 7 -c neu gesetzt werden.


Relevante Themen