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