black USB flash drive

Mit dem Yubikey anmelden

Linux ist schon ein wunderbares System mit vielen Dingen, die sich unendlich anpassen lassen – zumindest fühlt es sich immer jedesmal aufs Neue so an, wenn ich an meinem System ein neues Feature einbaue, das mir das Leben leichter macht. Heute: Login mit dem Yubikey

Unter Linux ist es dank PAM sehr einfach, sich am System „irgendwie“ zu authentifizieren und auch diese Methoden zu kombinieren. In meinem Fall war ich es leid, beim Befehl ’su‘ oder ’sudo‘ immer wieder mein Passwort eingeben zu müssen und habe mir das U2F Modul namens pam_u2f.so geholt. Für Debian und Gentoo habe ich das Glück, dass das Modul als Paket verfügbar ist.

Die Konfiguration ist erschreckend einfach:

In /etc/pam.d/ finden sich diverse Services mit deren Modul-Konfigurationen – Manche davon sind Symlinks, aber das macht ja nichts. Man bekommt relativ schnell eine Idee, welche Config für welchen Dienst zuständig ist. Ich für meinen Teil habe mich für ’su‘ entschieden, da ich das am lokalen System – wie oben beschrieben – doch sehr häufig brauche.

Der Inhalt der Datei ist in meinem Fall sehr einfach gestrickt

auth            sufficient      pam_rootok.so 
auth            required        pam_wheel.so use_uid 
auth            include         system-auth 
account         include         system-auth 
password        include         system-auth 
session         include         system-auth 
session         required        pam_env.so 
session         optional        pam_xauth.so

Zugegeben, es ist der Standard-Inhalt der Datei unter Gentoo, den ich bislang nicht wirklich angefasst habe.  Hier finden sich die einzelnen Module mit ’sufficient‘ bis ‚required‘, was die Regeln der PAM Module in der letzten Spalte festlegt. Für meine Zwecke reicht es mir aus, dass ich eine Zeile in der auth-Sektion einfüge:

auth            sufficient      pam_u2f.so cue

Durch diese Zeile gebe ich an. dass es ‚ausreichend‘ ist, wenn ich mich mit dem Yubikey anmelde, und den zugehörigen PIN eingebe. Durch die Verwendung von ‚required‘ anstelle von ’sufficient‘ kann man natürlich auch die Authentifizierung zusätzlich zum Passwort verlangen, um das System noch sicherer zu gestalten, wovon ich bei der ersten Einrichtung tunlichst abrate um sich nicht aus dem System zu sperren!

Der Parameter ‚cue‘ sagt dem PAM Modul, dass es eine Nachricht ausgeben soll, wenn der Key gedrückt werden sollte. Alle weiteren Parameter finden sich unter https://developers.yubico.com/pam-u2f/

Nun haben wir zwar PAM gesagt dass es den Yubikey verwenden soll, aber das Ganze ist noch nicht fertig. Das System benötigt noch eine Registrierung der einzelnen Schlüssel und die Zuordnung zu den Benutzern: Dies passiert entweder in der Datei /etc/u2f_mappings oder für jeden User in ~/.ssh/u2f_keys

Die Dateien sind ähnlich und wie folgt aufgebaut:

<username1>:<KeyHandle1>,<UserKey1>,<Options1>:<KeyHandle2>,<UserKey2>,<Options2>:...
<username2>:<KeyHandle1>,<UserKey1>,<Options1>:<KeyHandle2>,<UserKey2>,<Options2>:...

Die Key-Handles bekommen wir durch

pamu2fcfg -uusername -opam://myorigin -ipam://myappid

Damit bekommen wir die eindeutige ID des Schlüssels und können sie so dem Benutzer zuordnen.

Um das Ganze zu testen ist es nicht nötig zu rebooten oder irgendetwas neu zu laden, da PAM seine Konfigurationen bei jedem Login liest.

Author:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.