Desktop-Anmeldung und Linux-Benutzerauthentifizierung

Einführung

This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and Nitrokey FIDO2.

Wenn Sie sich mit Nitrokey Pro 2 an Ihrem Computer anmelden möchten, Nitrokey Storage 2 und Nitrokey Start können Sie die Anleitungen besuchen, die hier verfügbar sind.

Anforderungen

  • Ubuntu 20.04 mit Gnome Display Manager.

  • Nitrokey FIDO2 konfiguriert nach diese Anweisungen.

Anweisungen

GUI-Methode

  1. Klicken Sie in der unteren linken Ecke auf Show Applications und geben Sie in der Suchleiste folgende Einstellungen ein:

    img1
  2. Runterblättern in der rechten Leiste bis Users

    img2
  3. In der linken Ecke klicken Sie auf Unlock und werden dann zur Eingabe Ihres Passworts aufgefordert

    img3
  4. Wählen Sie Administrator und geben Sie den Benutzernamen und das Passwort Ihrer Wahl

    img4
  5. Sobald Sie Schritt 4 beendet haben, sollten Sie fertig sein

    img5

CLI-Methode

  1. Erstellen Sie einen Backup-Benutzer und geben Sie ihm Root-Rechte

    Sie können dies mit den folgenden Befehlen tun:

    $ sudo adduser <backup_user>
    $ sudo usermod -aG sudo <backup_user>
    

    Falls Sie es vorziehen, U2F für einen einzelnen Benutzer einzurichten, und aus Ihrer Benutzersitzung ausgesperrt werden, können Sie sich trotzdem mit dem <backup_user> anmelden und mit der Wartung fortfahren.

    Warnung

    Die folgende Anleitung kann Sie möglicherweise von Ihrem Computer aussperren. Sie sollten sich dieser Risiken bewusst sein, denn es wird empfohlen, die folgenden Anweisungen zuerst auf einem zweiten Computer oder nach einer vollständigen Sicherung anzuwenden.

    Nach der Konfiguration der PAM-Module verlieren Sie möglicherweise den Zugriff auf Ihre Daten.

  2. Einstellen des rules zur Erkennung des Nitrokey FIDO2

    Unter /etc/udev/rules.d laden Sie 41-nitrokey.rules herunter

    $ cd /etc/udev/rules.d/
    $ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
    

    Und starten Sie den udev-Dienst neu

    $ sudo systemctl restart udev
    
  3. Install libpam-u2f

    Unter Ubuntu 20.04 ist es möglich, direkt libpam-u2f aus den offiziellen Repos herunterzuladen

    $ sudo apt install libpam-u2f
    

    Bemerkung

    Klicken Sie für weitere Optionen

    • Alternativ können Sie libpam-u2f aus Git erstellen.

    • Um zu überprüfen, ob die Bibliothek richtig installiert ist, geben Sie den folgenden Befehl ein:

    $ file /lib/x86_64-linux-gnu/security/pam_u2f.so
    

    Die Ausgabe sollte in etwa wie folgt aussehen:

    /lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
    
  4. Vorbereiten des Verzeichnisses

    Erstellen Sie .config/Nitrokey/ unter Ihrem Home-Verzeichnis

    $ mkdir ~/.config/Nitrokey
    

    Und schließen Sie Ihren Nitrokey FIDO2 an.

    Sobald wir mit den Vorbereitungen fertig sind, können wir damit beginnen, den Computer so zu konfigurieren, dass er Nitrokey FIDO2 für die 2nd-Factor-Authentifizierung beim Login und sudo verwendet.

  5. Generieren Sie die U2F-Konfigurationsdatei

    Um die Konfigurationsdatei zu erzeugen, verwenden wir das pamu2fcfg-Dienstprogramm, das mit der libpam-u2f mitgeliefert wird. Der Einfachheit halber werden wir die Ausgabe des Dienstprogramms direkt in die Datei u2f_keys unter .config/Nitrokey schreiben. Schließen Sie zunächst Ihren Nitrokey FIDO2 an (falls noch nicht geschehen), und geben Sie den folgenden Befehl ein:

    $ pamu2fcfg > ~/.config/Nitrokey/u2f_keys
    

    Sobald Sie den obigen Befehl ausführen, müssen Sie die Taste berühren, während sie blinkt. Sobald dies geschehen ist, wird pamu2fcfg seine Ausgabe an die u2f_keys im folgenden Format anhängen:

    <username>:Zx...mw,04...0a
    

    Beachten Sie, dass die Ausgabe viel länger sein wird, aber sensible Teile wurden hier entfernt. Zur besseren Sicherheit und nachdem die Konfigurationsdatei erzeugt wurde, verschieben wir mit diesem Befehl das Verzeichnis .config/Nitrokey unter das Verzeichnis etc/:

    $ sudo mv ~/.config/Nitrokey /etc
    

    Tipp

    • Die Datei unter .config/Nitrokey muß den Namen u2f_keys tragen

    • Es wird empfohlen, die Anweisungen zunächst mit einem einzelnen Benutzer zu testen. Zu diesem Zweck nimmt der vorherige Befehl die Option -u, um einen Benutzer anzugeben, wie im folgenden Beispiel:

      $ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
      
    • Für eine individuelle Benutzerkonfiguration sollten Sie im nächsten Schritt auf das Home-Verzeichnis verweisen, oder die Option authfile nicht in die PAM-Konfiguration aufnehmen.

  6. Backup

    Dieser Schritt ist optional, es wird jedoch empfohlen, einen Backup-Nitrokey für den Fall des Verlusts, Diebstahls oder der Zerstörung Ihres Nitrokey FIDO zu haben.

    Um einen Backup-Schlüssel einzurichten, wiederholen Sie die obige Prozedur und verwenden pamu2fcfg -n. Dadurch wird das Feld <Benutzername> weggelassen, und die Ausgabe kann wie folgt an die Zeile mit Ihrem <Benutzername> angehängt werden:

    <username>:Zx...mw,04...0a:xB...fw,04...3f
    
  7. Modifizieren Sie das steckbare Authentifizierungsmodul PAM

    Der letzte Schritt ist die Konfiguration der PAM-Modul-Dateien unter /etc/pam.d/. In dieser Anleitung werden wir die Datei common-auth modifizieren, da sie die Authentifizierungseinstellungen verwaltet, die für alle Dienste gleich sind, aber andere Optionen sind möglich. Sie können die Datei mit dem folgenden Befehl ändern:

    $ cd /etc/pam.d
    $ sudo $editor common-auth
    

    Fügen Sie die folgenden Zeilen am Anfang der Datei ein:

    #Nitrokey FIDO2 config
    auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt nouserok
    

    Tipp

    • Da wir das Central Authentication Mapping verwenden, müssen wir pam_u2f den Ort der zu verwendenden Datei mit der Option authfile mitteilen.

    • Wenn Sie oft vergessen, den Schlüssel einzulegen, können Sie mit der Option prompt den Ausdruck Insert your U2F device, then press ENTER verwenden, um Ihnen die Möglichkeit zu geben, den Nitrokey einzulegen.

    • If you would like to be prompted to touch the Nitrokey, cue option will make pam_u2f print Please touch the device. message. You can change the message in [cue_prompt=Please touch the device.].

    • nouserok“ stellt sicher, dass Sie sich weiterhin mit dem Benutzernamen und dem Passwort anmelden können. Vielleicht möchten Sie diese Option irgendwann entfernen, wenn die Einrichtung funktioniert und Sie sich nicht mehr regelmäßig mit Benutzernamen und Passwort anmelden möchten.

    Nachdem wir die common-auth modifiziert haben, können wir die Datei speichern und beenden.

    Sie können die Konfiguration testen, indem Sie sudo ls im Terminal eingeben. Sie sollten die Meldung Bitte berühren Sie das Gerät. erhalten und eine ähnliche Ausgabe im Terminal haben:

    nitrouser@nitrouser:~$ sudo ls
    [sudo] password for nitrouser:  Please touch the device.
    

    Sie können Ihre Konfiguration auch testen, indem Sie sich von der Benutzersitzung abmelden und wieder anmelden. Ein ähnlicher Bildschirm sollte angezeigt werden, wenn Sie Ihren Nitrokey FIDO2 aus- und wieder einstecken und Ihr Passwort eingeben:

    img6

Verwendung

Nach der Änderung des PAM-Moduls können Sie Ihre Konfiguration sofort testen, es wird jedoch empfohlen, den Computer neu zu starten und den Nitrokey FIDO2 auszustecken/anzustecken.

Wenn Sie die Anweisungen in dieser Anleitung ordnungsgemäß getestet (und ein Backup eingerichtet) haben, wird empfohlen, entweder das Steuerflag required oder das Steuerflag requisite anstelle von sufficient zu verwenden.

Die Flags required und requisite sorgen für eine strengere Zugriffskontrolle und machen den Nitrokey FIDO2 notwendig, um sich anzumelden und/oder den konfigurierten Dienst zu nutzen.

Wenn Sie weitere Informationen über Kontrol-Flags in der PAM-Konfigurationszeile benötigen, können Sie den letzten Abschnitt dieses Leitfadens lesen, um den Unterschied und die Auswirkungen der Verwendung der einzelnen Flags zu verstehen.

PAM-Module

Es gibt mehrere PAM-Modul-Dateien, die Sie nach Ihren Bedürfnissen anpassen können:

  • Wenn Sie die Datei /etc/pam.d/common-auth modifizieren, können Sie Ihren Nitrokey FIDO für die Authentifizierung mit dem zweiten Faktor für die grafische Anmeldung und sudo verwenden. Anmerkung: common-auth sollte modifiziert werden, indem die zusätzliche Konfigurationszeile am Ende der Datei hinzugefügt wird.

  • If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the/etc/pam.d/gdm-password

  • Alternativ können Sie auch einfach die Datei /etc/pam.d/sudo modifizieren, wenn Sie FIDO U2F bei der Verwendung des sudo-Befehls verwenden möchten.

Kontrollflaggen

In Schritt 7 haben wir das Steuerflag sufficient verwendet, um das Verhalten des PAM-Moduls zu bestimmen, wenn der Nitrokey eingesteckt ist oder nicht. Es ist jedoch möglich, dieses Verhalten durch Verwendung der folgenden Kontrollflags zu ändern:

  • required: Dies ist das kritischste Flag. Das Modulergebnis muss erfolgreich sein, damit die Authentifizierung fortgesetzt werden kann. Dieses Flag kann Sie von Ihrem Computer aussperren, wenn Sie keinen Zugriff auf den Nitrokey haben.

  • requisite: Ähnlich wie required, jedoch wird in dem Fall, dass ein bestimmtes Modul einen Fehler zurückgibt, die Kontrolle direkt an die Anwendung oder an den übergeordneten PAM-Stack zurückgegeben. Dieses Flag kann Sie auch aus Ihrem Computer aussperren, wenn Sie keinen Zugriff auf den Nitrokey haben.

  • sufficient: Das Modulergebnis wird ignoriert, wenn es fehlschlägt. Das sufficient-Flag gilt als sicher für Testzwecke.

  • optional: Der Erfolg oder Misserfolg dieses Moduls ist nur dann wichtig, wenn es das einzige Modul im Stack ist, das mit diesem Service+Typ verbunden ist. Das optional-Flag wird als sicher für Testzwecke angesehen.

Warnung

  • Wenn required oder requisite gesetzt ist, führt das Scheitern der U2F-Authentifizierung zu einem Scheitern der gesamten Authentifizierung. Der Fehler tritt auf, wenn der konfigurierte Nitrokey FIDO nicht eingesteckt, verloren oder zerstört ist.

  • Sie werden den Zugriff auf Ihren Computer verlieren, wenn Sie das PAM-Modul falsch konfiguriert und die Flags required oder requisite verwendet haben.

  • Sie werden auch die Möglichkeit verlieren, sudo zu benutzen, wenn Sie das Central Authentication Mapping einrichten und die Flags required oder requisite benutzen.