## Diese Warnung ist Bestandteil jedes Howtos und darf nicht entfernt werden. {{{#!vorlage Warnung 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. }}} ## Bitte die Angaben zu dem letzten erfolgreichen Test dieser Anleitung eintragen: {{{#!vorlage Hinweis Diese Howto-Anleitung wurde zuletzt von [user:Saptah:] am 05.12.2020 unter '''Ubuntu 18.04''' mit einem '''Yubikey 5 NFC''' erfolgreich getestet. }}} = Problembeschreibung = ## Einleitender Text, der das Problem beschreibt, welches man mit Hilfe des HowTos beheben kann. 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 = ## Ausführliche Howto-Anleitung zum Lösen des Problems. Zunächst muss libpam-u2f installiert werden: {{{#!vorlage Paketinstallation 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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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. {{{#!vorlage 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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo -s }}} {{{#!vorlage Befehl cd /root/.config/Yubico/ }}} {{{#!vorlage Befehl cp u2f_keys u2f_keys_root }}} In der Datei u2f_keys_root den Benutzernamen durch „root“ ersetzen: {{{#!vorlage Befehl nano u2f_keys_root }}} == Konfiguration von pam == Nun können die einzelnen Module von PAM bearbeitet werden, die verschiedene Zugriffe erlauben. {{{#!vorlage Warnung '''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. {{{#!code bash 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. {{{#!code bash 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 }}} {{{#!vorlage 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. {{{#!code bash 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 }}} {{{#!vorlage 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: {{{#!code bash 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: {{{#!code bash auth sufficient pam_u2f.so authfile=/home/BENUTZER/.config/Yubico/u2f_keys userpresence=0 }}} {{{#!vorlage Hinweis WICHTIG: Bei der Bildschirmsperre auf den Speicherort der Schlüssel im Home-Verzeichnis des Nutzers verweisen}}} = Links = ## Weiterführende Linksammlung * 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] * [tag:Howto:Howto-Liste] {Übersicht} - Übersicht aller Howto-Artikel ## Nach der Fertigstellung des Howtos bitte die Aufnahme in die Howto-Sammlung über die Schaltfläche "Diskussion" mitteilen. Weitere [https://wiki.ubuntuusers.de/Wiki/Tag/ Tags] sind nicht gestattet! #tag: Howto