Passwortlose Authentifizierung (sudo/gdm)
Wer seinen Rechner vor Unbefugten schützen möchte, sollte ein »vernünftiges« Benutzerpasswort wählen. Dieses jedes Mal einzutippen, bei jedem Anmelden und bei jedem sudo-Befehl, ist jedoch kein Spaß und nervt schnell. Anstatt am Passwort zu sparen, kann man sich auch auf andere Weise authentifizieren: Ohne Passwort.
Die Rede ist natürlich vom passwortlosen Login per U2F/FIDO2 Stick. Am Beispiel von Arch Linux und einem Nitrokey (z. B. FIDO2 oder Nitrokey 3) möchte ich hier kurz beschreiben, wie man das System so konfiguriert, dass man optional den Stick verwenden kann um sich a) am GNOME Session Manager (gdm) und b) für einen sudo-Befehl zu authentifizieren. Optional heißt: Ist der Stick am Rechner eingesteckt, genügt es, in zu berühren. Ist er nicht eingesteckt, kann man wie bisher das Passwort eintippen.
Vorbereitung
Als Erstes muss, falls noch nicht geschehen, das Paket pam-u2f installiert werden. Dann brauchen wir ein Verzeichnis, das die Schlüsseldatei enthalten soll. Ich wähle ~/.config/Nitrokey
. Schlüssel können mittels pamu2fcfg
hinzugefügt werden:
$ mkdir ~/.config/Nitrokey
$ pamu2fcfg -o pam://myhostname -i pam://myhostname > ~/.config/Nitrokey/u2f_keys
Ein Antippen des Buttons/Sensors auf dem Stick befördert den Schlüssel in die angegebene Datei u2f_keys
. myhostname muss natürlich durch den Hostnamen des Rechners ersetzt werden. Es empfiehlt sich, den Schlüssel eines weiteren U2F/FIDO2-Sticks hinzuzufügen. Schließlich kann so ein Stick auch mal kaputt gehen und der Teufel ist bekanntlich ein Eichhörnchen. Weitere Schlüssel kann man folgendermaßen anhängen:
$ pamu2fcfg -o pam://myhostname -i pam://myhostname -n >> ~/.config/Nitrokey/u2f_keys
Passwortloses sudo
Hinweis: Hier muss man wissen was man tut! Man sollte sich unbedingt noch ein weiteres Konsolenfenster öffnen, in dem man root-Rechte hat. Sollte man sich dennoch ausgeschlossen haben, kann man mit dem Arch Linux Liveimage booten und den Fehler reparieren.
In der Datei /etc/pam.d/sudo
fügt man folgende Zeile an erster Stelle ein:
auth sufficient pam_u2f.so cue [cue_prompt=Bitte Nitrokey berühren] origin=pam://myhostname appid=pam://myhostname authfile=.config/Nitrokey/u2f_keys
Nach dem Speichern werden die Änderungen sofort wirksam. Zum Test kann man ein weiteres Terminalfenster öffnen und sudo ls
eingeben.
Passwortloser GDM Login
In der Datei /etc/pam.d/gdm-password
fügt man die schon aus dem vorigen Abschnitt bekannte Zeile an erster Stelle ein:
auth sufficient pam_u2f.so cue [cue_prompt=Bitte Nitrokey berühren] origin=pam://myhostname appid=pam://myhostname authfile=.config/Nitrokey/u2f_keys
Ein kleiner Nachteil ist jedoch, dass GNOME nun den Anmeldeschlüsselbund nicht mehr automatisch entsperrt, da GNOME hierfür ein Passwort benötigt, das jedoch durch die Authentifizierung per Stick nicht übermittelt wird.
Das Passwort muss jedoch pro Sitzung nur einmal eingetippt werden. Nach einer Bildschirmsperre etwa genügt das Entsperren per Nitrokey.
Zweifaktorauthentifizierung
Wen die Passworteingabe nicht stört und den GDM-Login per Zweifaktorauthentifizierung noch sicherer machen will, kann stattdessen auch folgende Zeile nach den anderen auth-Einträgen in /etc/pam.d/gdm-password
eintragen:
auth required pam_u2f.so nouserok origin=pam://myhostname appid=pam://myhostname authfile=.config/Nitrokey/u2f_keys
Dann wird zusätzlich zum Passwort auch noch der U2F-Stick abgefragt. Nun gibt es auch kein Problem mit dem GNOME Anmeldeschlüsselbund; er wird automatisch entsperrt, da ja das Passwort eingegeben wurde. nouserok
bewirkt, dass sich (andere) Benutzer, die keinen U2F-Stick eingerichtet haben, dennoch anmelden können.
(Quellen: Arch Wiki, Nitrokey Docs)