YubiKeys sind kleine »USB-Security-Token«, die Einmalpasswörter, sog. OTPs (One-Time-Password) basierend auf kryptographischen Funktionen generieren. Mit Hilfe dieser kleinen, digitalen Schlüssel kann man diverse Verfahren und Szenarien zur sicheren Anmeldung und Authentifizierung umsetzen. Das schöne an den YubiKeys: sie sind relativ günstig (etwa 25,- USD/Stück) und es gibt vom Hersteller neben einer fertigen Web-API auch jede Menge Code, um selbst Software dafür zu entwickeln. Was liegt also näher, die Vorteile eines solchen Hardware-Tokens zum Login an OpenBSD-Systemen einzusetzen?
Damit man das Modul übersetzen kann, muss vorher die Yubikey-Bibliothek heruntergeladen, übersetzt und installiert werden. Die in C geschriebene Bibliothek lässt sich problemlos unter OpenBSD einsetzen. Zu finden ist der Quelltext hier: yubico-c — Yubico C low-level library.
Nach dem Entpacken des Archivs reicht es, den Quellcode mit en folgenden Befehlen zu übersetzen und zu installieren:
$ ./configure
$ make
$ sudo make install
Nachdem die Yubico-Bibliotheken im vorherigen Schritt erfolgreich im System installiert wurden kann nun login_yk installiert werden. Den Quelltext gibt es hier:
Download: login_yk-0.2.tar.gz
Das Paket entpacken und mit den folgenden Befehlen übersetzen und installieren:
$ make
$ sudo make install
Damit das neue Modul auch zur Authentifizierung genutzt werden kann muss die Datei /etc/login.conf angepasst werden. Den Eintrag »auth-defaults:auth=passwd,skey:« erweitert man nun um »yk«.
# Default allowed authentication styles
auth-defaults:auth=passwd,skey,yk:
Nach Änderungen an /etc/login.conf müssen diese noch dem System bekannt gemacht werden:
# cap_mkdb /etc/login.conf
Mit dem Befehl
yubiauthinit -E
legt man das Schlüsselverzeichnis /etc/yubiauth an. Danach können einzelen YubiKeys dem System bekannt und Nutzern zugeordnet werden.
Ein Nutzer mit einem YubiKey kann nun mit dem Befehl
yubiauthinit
ein Token seinem Nutzerkonto zuweisen. Nach Angabe des AES-Schlüssels und eines frischen Tokens (z.B. durch betätigen des YubiKey Knopfes) ist ein Login mit diesem Token möglich.
Im folgenden Beispiel wird ein Login mit YubiKey über SSH durchgeführt. Das Suffix »:yk« gibt dem System den Hinweis, welches Authentifizierungssystem verwendet werden soll.
$ ssh andreas:yk@rhea
Press YubiKey Button:
Möchte man YubiKey zum Standard-Authentifizierungsmechanismus machen, dann kann man entweder die Reihenfolge in der /etc/login.conf für den Eintrag »auth-defaults« ändern oder die Login-Klassen entsprechend anpassen. Hier verweise ich aber auf die entsprechenden man-Pages.
login_yk ist noch ganz am Anfang und es fehlen noch ein paar Funktionen. So wird es zum Beispiel noch ein kleines Kommandozeilen-Programm geben, mit dessen Hilfe man OTPs einfach gegen eine lokale Yubikey-Datenbankprüfen kann. So ein Tool wäre dann z.B. im Zusammenhang mit OpenVPN sehr einfach als Authentifizierung nutzbar.
»Hacken ist, wenn man das Wasser für das Fertigkartoffelpüree mit der Kaffeemaschine erhitzen kann.« — Wau Holland