Linux-Login mit Yubikey und eigenem Authentifizierungsserver

 

Yubico bietet einen freien Authentifizierungsdienst an, der allerdings eine  Internet-Verbindung voraussetzt. Mit einem eigenen Authentifizierungsserver sind wir davon unabhängig. Debian 8 bringt alle benötigten Pakete mit:

apt-get install libpam-yubico yubiserver

Yubikeys verfügen über zwei Slots,  mit denen verschiedene  Authentifizierungsmethoden verwendet werden  können. Slot 1 wird  ausgewählt, indem der Key ca. 1 Sekunde gedrückt  wird, Slot 2 durch  drücken für ca. 3-4 Sekunden.

Um den Key zu konfigurieren, kann die Konfigurationssoftware von https://www.yubico.com/products/services-software/personalization-tools/use/ oder das Debian-Paket yubikey-personalization-gui verwendet werden.

Nach Auswahl von Yubico OTP, Slot 2 kann eine neue Private Identity sowie ein Secret Key generiert werden. Mit Write Configuration  wird der Yubikey programmiert und eine Log-Datei erstellt, in der die  Parameter zu sehen sind. Diese Logdatei wird später benötigt, um den  Authentifizierungsserver zu konfigurieren.

Die ersten 12 Zeichen des Einmalkennwortes geben die ID des verwendeten  Tokens an. Ein Nutzer kann über mehrere Token verfügen; die Zuordnung  wird in die Datei /etc/yubikey_mappings eingetragen:

testuser:12-Zeichen-keyid

Das Paket yubiserver kann mit dem Kommando yubiserver-admin verwaltet werden.

Einzelne Benutzer werden mit yubiserver-admin hinzugefügt, siehe man yubiserver-admin. Die Parameter sind: Name Public-Token-ID Secret-ID AES-Key, die oben bei der Konfiguration des Keys programmiert wurden, beispielsweise:

yubiserver-admin -y -a testuser cccbcbbtnnkk c6963f285d78 108e504f37fef82s3b6gb3a45708405c

Mit dem Browser kann auf Port 8000 geprüft werden, ob der yubiserver richtig konfiguriert ist.

Es muss ein API-Nutzer konfiguriert werden, damit das PAM-Modul sich beim yubiserver anmelden kann:

yubiserver-admin -p -a apiuser `base64 --wrap=0 /dev/urandom | head -c 20` New API key for 'apiuser': eEVRdE54ckRST2psWUZJdEJUMko= You API key ID is: 1

 

Der API-Key und die Key-ID werden gebraucht, um das PAM-Modul in /etc/pam.d/common-auth zu konfigurieren.

auth required pam_yubico.so mode=client try_first_pass debug id=1 key=eEVRdE54ckRST2psWUZJdEJUMko= urllist=http://localhost:8000/wsapi/2.0/verifyauthfile=/etc/yubikey_mappings

 

Der Debug-Output des PAM-Moduls muss aktiviert werden:

touch /var/run/pam-debug.log && chmod go+w /var/run/pam-debug.log

 

Yubikey für Debian