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

Vor ein paar Tagen habe ich mir einen Yubikey Neo zugelegt. Dabei handelt sich um eine Kombination aus One-Time-Passwort-Generator (OTP-Generator) und PGP-Smartcard. Außerdem können auch statische Passwörter hinterlegt werden. Der Yubikey unterstützt eine Fülle an Authentifizierungsmechanismen, egal ob online, über fremde oder eigene Server, oder offline.

In diesem Beitrag soll es um den Login an einem Arch Linux Rechner gehen – abgesichert mit dem Yubikey, oder Passwort + Yubikey (Two-Factor-Auth). Für eine PAM-basierende Authentifizierung, wie wir sie unter Linux und Mac OS haben, stellt Yubico ein Open Source PAM Modul zur Verwendung mit dem Yubikey bereit. Das Modul kann in zwei verschiedenen Betriebsmodi genutzt werden: Entweder in Kombination mit dem Yubico-OTPs über Yubico-eigene Server oder über ein HMAC-SHA1-basiertes Challenge-Response Verfahren, das auch offline (und damit unabhängig von Servern) funktioniert.  Ich ziehe die offline-Methode vor, denn der große Nachteil der online-Variante ist: Wenn die Server offline sind (oder mein Rechner) kann ich mich nicht mehr einloggen.

So, jetzt geht’s aber los. Yubico bietet zwar eine Anleitung für sein Modul pam-yubico an – die ist aber für Ubuntu geschrieben. Unter Arch Linux müssen Kleinigkeiten angepasst werden (deshalb schreibe ich diese Anleitung ;) )

In den Arch Repos ist das Yubico PAM Modul bereits vorhanden, sodass wir es nicht von Git herunterladen und selbst compilieren müssen:

sudo pacman -Sy yubico-pam

Nach der Installation des PAM-Moduls wird zunächst der Yubikey fit für das HMAC-SHA1-Challenge-Response-Verfahren gemacht. Steckt euren Yubikey dazu in einen freien USB-Slot und führt folgenden Befehl aus, um euren 2. Yubikey-Slot zu konfigurieren:

(Vorsicht! Überlegt vorher noch einmal, ob ihr den zweiten Slot noch für irgendeinen Login verwendet! Der 2. Slot wird durch das folgende Kommando überschrieben!)

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

(mit „y“ bestätigen)

Euer Yubikey muss jetzt noch dem System bekannt gemacht werden. Die Identifizierungsdaten eures Keys werden dabei in eine Konfigurationsdatei im Home-Verzeichnis geschrieben. Legt dieses Verzeichnis an:

mkdir ~/.yubico

… und macht euren Key dem System bekannt:

ykpamcfg -2 -v

Vorsicht! Falls euer Home-Verzeichnis z.B. via encfs verschlüsselt ist, müsst ihr euch einen anderen Ort für die Konfigurationsdatei außerhalb eures Home-Verzeichnisses suchen! Wenn ihr ausgeloggt seid, kann das Modul sonst nicht auf die Konfiguration zugreifen. Befolgt in diesem Fall die dazugehörigen Schritte in der offiziellen Anleitung: „If your /home/user folder is encrypted…“

Jetzt wird das PAM-Modul aktiviert. Öffnet euch vorsichtshalber ein neues Terminal-Fenster mit Root-Zugriff im Hintergrund. Falls das PAM-Modul Ärger macht, kann es sonst sein, dass ihr euch „aussperrt“. Ein bereits geöffnetes Terminal mit Root kann dann die Rettung sein ;)

Öffnet die Datei /etc/pam.d/system-auth und fügt vor der Zeile mit „pam_unix“ folgende neue Zeile ein:

auth    required    pam_yubico.so    mode=challenge-response

Speichert die Datei dann ab. Jetzt könnt ihr testen, ob die neue Konfiguration funktioniert: Öffnet nochmals ein neues Terminal und versucht, via „sudo -s“ Root-Rechte zu bekommen. Dabei sollten jetzt sowohl Passwort als auch der Yubikey abgefragt werden. Wenn der Yubikey nicht eingesteckt ist, sollte der Versuch fehlschlagen. Vor jedem Test muss dabei das Terminal geschlossen und wieder ein neues geöffnet werden, weil die Erlangung von Root-Rechten via sudo „gecached“ wird.

Wenn der Test mit „sudo -s“ funktioniert, könnt ihr den Test am Login für euren Desktop durchführen.

Aktuell ist PAM so konfiguriert, dass Passwort und Yubikey für einen Login vorhanden sein müssen. Es lässt sich aber auch ein anderer Modus einstellen: Wenn das „required“ in der Zeile oben durch ein „sufficient“ ausgetauscht wird, funktioniert der Login auch, wenn nur das Passwort oder der Yubikey vorhanden ist.

Das war’s auch schon.

Übrigens: Für so eine Zwei-Faktor-Authentifizierung beim PAM Login braucht man nicht zwingend einen Yubikey. Dafür reicht im Grunde auch schon ein USB-Stick aus – Auch, wenn der im Gegensatz zum Yubikey natürlich nicht fälschungssicher ist … ;)

 


Post published on 16. Juli 2015 | Last updated on 19. Juli 2015
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.

9 thoughts on “Mit Yubikey unter Arch Linux einloggen (Challenge-Response, offline)

  • Hi,

    danke für die Anleitung. Werde das die Tage bei meinen Rechnern auch mal in Angriff nehmen :-)

    Gruss,
    Jannik

  • Vielen Dank.

    Ich überlege mir das auch einzurichten, habe aber Bedenken. Was passiert, wenn ich meinen Yubikey verliere, bzw. wenn er kaputtgeht.
    Gibt es irgendein Masterpasswort, oder wie löst du dieses Problem?

    • Hi,

      wenn du die PAM-Authentifizierung so einstellst, dass man zwingend beide Faktoren (Passwort und Yubikey) benötigt, kommst du nicht mehr in den Account, wenn eins von beiden fehlt – genau. Im Falle eines Defekts oder Verlusts des Yubikeys könnte man theoretisch sich von außen mit einem Live Linux USB Stick aufschalten (Festplatte des Systems mounten) und die PAM-Konfiguration wieder so ändern, dass kein Yubikey mehr nötig ist. Dann einfach neu starten und man kann sich wie vorher nur mit dem Passwort einloggen.

      Diese Möglichkeit (Zugriff und Konfigurationsänderung via Live Linux) hätte natürlich auch ein Angreifer, der genug Zeit mitbringt. Deshalb kann ich nur dazu raten, die Festplatte zu verschlüsseln. Denn: Ein Angreifer kann daraufhin nicht mehr die Konfiguration auf der Festplatte ändern (er kann sie ja nicht entschlüsseln) – aber ich kann das sehr wohl, da ich ja das Passwort kenne.

      Eine andere Möglichkeit wäre, sich einen zweiten Yubikey zu besorgen und diesen Ebenfalls zu registrieren (wenn ich das richtig in Erinnerung habe, unterstützt yubikey_pam mehrere Keys).

      Eine dritte Möglichkeit bestünde z.B. darin, noch eine dritte Art der Authentifizierung zuzulassen. Beispielsweise die Authentifizierung via normalem USB-Stick (im Beitrag ganz unten verlinkt). Das könnte man einrichten, und dort den Modus auf „sufficient“ stellen, sodass man außer diesem Stick zum einloggen nichts weiter braucht. Kein Passwort, keinen Yubikey. Selbstverständlich sollte man diesen „Generalschlüssel“ nicht mit sich herumtragen und sicher aufbewahren. Denn wer den Stick hat, hat vollen Zugriff. Aber als Backup bzw Notfall-Absicherungsmaßnahme taugt das ganz gut.

      LG Thomas

  • Hallo,

    danke für das tolle tutorial. Gibt es auch eine Anleitung mit der man verschlüsselte lvm Partitionen mit einem yubikey sichern kann? Für ubuntu habe ich schon eine Anleitung gefunden. Nur für arch Linux noch keine brauchbare.

  • Moin.

    Ich schlag mal zwei Fliegen mit einer Klappe …

    wenn (auf einem Debian, das sollte aber passend portierbar sein) in der /etc/pam.d/common-auth folgendes steht …

    auth required pam_unix.so nullok_secure try_first_pass
    auth sufficient pam_succeed_if.so uid < 1000
    auth sufficient pam_yubico.so mode=challenge-response

    Dann geht der Login für User mit einer UID unter 1000 ohne Yubikey, für alle andern nur mit. Damit kann man dann ein entsprechend komplexes Rootpasswort immernoch zum Login benutzen.

    Zum zweiten: https://github.com/cornelinux/yubikey-luks funktioniert genau so wie man sich das wünschen würde und lässt auch entweder eine beliebig komplexe Master-Passphrase oder eine Passphrase und passend Challenge-Response aus dem Key zu.

  • Geht das auch unter Ubuntu? Kann man den 2ten Slot auch wieder leeren? Denn was ist wenn man Ubuntu/Arch Linux mal neuinstallieren muss?

  • Danke, klappt bestens.

  • Danke für den Artikel. Ich habe ihren Blog neulich erst entdeckt. Gerade für jemanden wie mich, der in Teilen einen Umstieg auf Linux plant, ist jeder Artikel hier interessant und aufschlussreich.

Schreibe einen Kommentar

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