Yubikey anstelle von Passwörtern verwenden
Achtung!
Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
Hinweis:
Diese Howto-Anleitung wurde zuletzt von Saptah am 05.12.2020 unter Ubuntu 18.04 mit einem Yubikey 5 NFC erfolgreich getestet.
Problembeschreibung¶
Mit Hilfe eines Yubikey ist es möglich sich ohne Passwort oder zusätzlich zum eigenen Passwort dem System zu authentifizieren. Der Yubikey wird wie ein USB-Stick angeschlossen und nach Gebrauch wie ein echter Schlüssel durch den Anwender verwahrt. Das eintippen eines Passwortes entfällt also. Diese Anleitung soll die Verwendung des Yubikey unter Ubuntu demonstrieren.
Anleitung¶
Zunächst muss libpam-u2f installiert werden:
libpam-u2f
Befehl zum Installieren der Pakete:
sudo apt-get install libpam-u2f
Oder mit apturl installieren, Link: apt://libpam-u2f
Yubikey dem System bekannt machen¶
Für jeden Yubikey müssen die entsprechenden Schlüssel im System angelegt werden. Hierzu ist ein Ordner "Yubico" im Homeverzeichnis des Benutzers im Ordner .config zu erstellen.
Die Schlüssel werden mit dem Befehl pamu2fcfg
exportiert.
Im Folgenden ist "BENUTZER" durch den eigenen Benutzernamen zu ersetzen.
pamu2fcfg -P > /home/BENUTZER/.config/Yubico/u2f_keys
Der Yubikey blinkt nun und muss an der goldenen Fläche berührt werden.
Für weitere Yubikeys werden weitere Schlüssel angelegt und automatisch an die Datei u2f_keys angehängt mit:
pamu2fcfg -P >> /home/BENUTZER/.config/Yubico/u2f_keys
Das Argument -P
ist optional. Durch dieses Argument kann (nicht muss) der Yubikey später ohne Berührung verwendet werden.
Hinweis:
Unter /lib/x86_64-linux-gnu/security ist das Modul "pam_u2f.so" hinterlegt, welches gleich Verwendung findet.
Um die Schlüssel systemweit verfügbar zu machen, werden diese in das Verzeichnis /root/.config/Yubico kopiert.
sudo cp /home/BENUTZER/.config/Yubico/u2f_keys /root/.config/Yubico/
Dort werden die Schlüssel wieder kopiert und auch für den Benutzer root angelegt. Dazu als root anmelden mit:
sudo -s
cd /root/.config/Yubico/
cp u2f_keys u2f_keys_root
In der Datei u2f_keys_root den Benutzernamen durch „root“ ersetzen:
nano u2f_keys_root
Konfiguration von pam¶
Nun können die einzelnen Module von PAM bearbeitet werden, die verschiedene Zugriffe erlauben.
Achtung!
UNBEDINGT ein zweites Terminal öffnen und als root-User anmelden. Im Falle einer Fehlkonfiguration kann es möglich sein, dass der Benutzer sich nicht mehr am System anmelden oder bestimmte Dateien bearbeiten kann um die Konfiguration rückgängig zu machen. Erst nach erfolgreichem Test, d.h. Authentifizierung mit Passwort und/oder Yubikey sollte das zweite Terminal erst wieder geschlossen werden!
Die einzelnen Zugriffe auf bestimmte Systemfunktionen werden durch Konfigurationsdateien im Ordner "/etc/pam.d" definiert. In den Konfigurationsdateien wird eine Zeile eingefügt, welche den Yubikey abfragt. Der Aufbau der Abfrage ist wie folgt (Beispiel):
auth sufficient pam_u2f.so authfile=/root/.config/Yubico/u2f_keys userpresence=0
"auth" bedeutet Authentifizierung des Nutzer "sufficient" erlaubt den Yubikey anstelle eines Passwortes OPTIONAL zu verwenden, d.h. falls der Yubikey nicht verfügbar ist und nicht erkannt werden kann, kann notfalls durch den Nutzer immer noch das Passwort verwendet werden. Möchte man diese Option nicht, kann auch eine echte 2-Faktor-Authentifizierung mittels "required" statt "sufficient" verwendet werden. "pam_u2f.so" ist das verwendete Modul, welches installiert wurde und den Yubikey abfragt. Durch das Argument "authfile=" wird der Pfad der Schlüssel angegeben, dieser Pfad kann sich je nach Modul ändern (s.u.). Mit userpresence=0 wird festgelegt, dass der Nutzer den Yubikey nicht bei jeder Abfrage berühren muss. Auf Wunsch kann dieser Wert auf "1" gesetzt werden, wenn eine Berührung erforderlich sein soll.
sudo¶
Die Datei /etc/pam.d/sudo regelt die Authentifizierung des Nutzers wenn ein Befehl mit vorangestelltem "sudo" ausgeführt wird. Um den Yubikey hierzu zu nutzen muss die Datei wie folgt modifiziert werden. Zur Änderung der Datei sind root-Rechte erforderlich.
1 2 3 4 5 6 | session required pam_env.so readenv=1 user_readenv=0 session required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0 @include common-auth auth sufficient pam_u2f.so authfile=/root/.config/Yubico/u2f_keys userpresence=0 @include common-account @include common-session-noninteractive |
su¶
Die Datei /etc/pam.d/su regelt die Authentifizierung des Nutzers wenn man sich als root-user anmelden will. Um den Yubikey hierzu zu nutzen muss die Datei wie folgt modifiziert werden. Zur Änderung der Datei sind root-Rechte erforderlich.
1 2 3 4 5 6 7 8 9 10 11 | auth sufficient pam_rootok.so auth sufficient pam_u2f.so authfile=/root/.config/Yubico/u2f_keys_root userpresence=0 session required pam_env.so readenv=1 session required pam_env.so readenv=1 envfile=/etc/default/locale session required pam_env.so readenv=1 session required pam_env.so readenv=1 envfile=/etc/default/locale session optional pam_mail.so nopen session required pam_limits.so @include common-auth @include common-account @include common-session |
Hinweis:
Vorhandene Kommentare in der Datei können stehen bleiben.
login¶
Die Datei /etc/pam.d/login regelt die Authentifizierung des Nutzers wenn man sich am System anmelden will (in der Regel beim Start des Systems). Um den Yubikey hierzu zu nutzen muss die Datei wie folgt modifiziert werden. Zur Änderung der Datei sind root-Rechte erforderlich.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so auth requisite pam_nologin.so session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close session required pam_loginuid.so session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open session required pam_env.so readenv=1 session required pam_env.so readenv=1 envfile=/etc/default/locale @include common-auth auth sufficient pam_u2f.so authfile=/root/.config/Yubico/u2f_keys userpresence=0 auth optional pam_group.so session required pam_limits.so session optional pam_lastlog.so session optional pam_motd.so motd=/run/motd.dynamic session optional pam_motd.so noupdate session required pam_limits.so session optional pam_lastlog.so session optional pam_motd.so motd=/run/motd.dynamic session optional pam_motd.so noupdate session optional pam_mail.so standard session optional pam_keyinit.so force revoke @include common-account @include common-session @include common-password |
Hinweis:
Vorhandene Kommentare in der Datei können stehen bleiben.
Login-Manager¶
Die Datei /etc/pam.d/gdm-password regelt die Authentifizierung des Nutzers an der grafischen Oberfläche des Login-Managers (in der Regel beim Start des Systems). Um den Yubikey hierzu zu nutzen muss die Datei wie folgt modifiziert werden. Zur Änderung der Datei sind root-Rechte erforderlich. Vor der ersten Zeile wird folgende Zeile eingefügt:
1 | auth sufficient pam_u2f.so authfile=/root/.config/Yubico/u2f_keys userpresence=0 |
Bildschirmsperre¶
Sollte eine Bildschirmsperre aktiv werden, kann durch anstecken den Yubikeys und Bewegen der Maus der Rechner wieder entsperrt werden. Hierzu muss die Datei des entsprechenden Bildschirmschoners bearbeitet werden. Hier gezeigt am Beispiel des "cinnamon-screensaver". Vor der ersten Zeile wird folgende Zeile eingefügt:
1 | auth sufficient pam_u2f.so authfile=/home/BENUTZER/.config/Yubico/u2f_keys userpresence=0 |
Hinweis:
WICHTIG: Bei der Bildschirmsperre auf den Speicherort der Schlüssel im Homeverzeichnis des Nutzers verweisen.
Links¶
Yubico Website: https://www.yubico.com/fur-privatbenutzer/?lang=de
Anleitung von Yubico für U2F in Ubuntu: https://support.yubico.com/hc/en-us/articles/360016649099-Ubuntu-Linux-Login-Guide-U2F
Erklärung im englischsprachigen Forum: https://askubuntu.com/questions/1071027/how-to-configure-a-u2f-keysuch-as-a-yubikey-for-system-wide-2-factor-authentic
Howto-Liste - Übersicht aller Howto-Artikel