staging.inyokaproject.org

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 Home-Verzeichnis 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/Yubikey" kopiert.

sudo cp /home/BENUTZER/.config/Yubikey/u2f_keys /root/.config/Yubikey/ 

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/Yubikey/ 
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 Home-Verzeichnis des Nutzers verweisen

Diese Revision wurde am 22. Mai 2022 20:36 von Dimanche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Howto