www.h-ein.de

YubiKey Login-Modul für OpenBSD

Achtung, öffnet in einem neuen Fenster. Drucken

Yubico YubikeyYubiKeys 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?

Und genau das soll das Programm 'login_yk'  leisten. Als Authentifizierungsmodul lässt es sich in den Login-Mechanismus von OpenBSD einhängen und ermöglicht somit, jedem Nutzer sich per SSH, am X-Desktop oder direkt an der Console mit einem YubiKey-Token anzumelden.

Vorraussetzung

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

Installation login_yk

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

Initialisieren der Schlüssel-Datenbank

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.

Weitere Informationen

Ausblick

OpenBSDlogin_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

Banner