!!! VORSICHT !!!

!!! VORSICHT !!!

Ich habe kürzlich systemd-homed ausprobiert und dabei mein Yubikey als FIDO2-Gerät registriert. Wenn ich versuche, mich über das erstellte Home zu authentifizieren, homectl authenticate <user>wird das Yubikey korrekt aktiviert, nach der PIN gefragt und dann auf eine Berührung gewartet, gefolgt von der üblichen Kennwortabfrage.

Wenn ich mich aber von einem TTY aus bei diesem Konto anmelde, werde ich nur nach dem Passwort gefragt, das U2F wird komplett weggelassen. Trotzdem wird das zuvor gesperrte Home entschlüsselt und geöffnet, auch wenn der Yubikey abgeklemmt ist.

Wie kann ich die Verwendung von U2F für jede Authentifizierung erzwingen? Ich bin mir dessen bewusst pam-u2f, aber wenn es hier relevant ist, weiß ich nicht, wie. Ich kann die Ressourcen zum Sichern der „herkömmlichen“ Benutzeranmeldung nicht mit pam-u2fdiesem Szenario vergleichen. Sie beginnen immer mit der Erstellung der Schlüssel, aber diese scheinen in diesem Fall von verwaltet zu werden systemd-homed(ich konnte keine definitiven Informationen dazu finden).

Antwort1

Ich habe es herausgefunden und möchte meine Erkenntnisse mit Ihnen teilen, nur für den Fall, dass jemand auf dasselbe Problem stößt.

Es hängt alles mit der Konfiguration von PAM zusammen. Wie ich aus verschiedenen Recherchen im Web entnehmen konnte, hängt dies stark von der verwendeten Linux-Distribution ab. In meinem Fall, unter Arch Linux, system-authsah die Standarddatei, die für die Benutzerauthentifizierung zuständig ist, wie folgt aus:

$ cat /etc/pam.d/system-auth

#%PAM-1.0

auth       required                    pam_faillock.so      preauth
auth       [success=2 default=ignore]  pam_unix.so          try_first_pass nullok
-auth      [success=1 default=ignore]  pam_systemd_home.so
auth       [default=die]               pam_faillock.so      authfail
auth       optional                    pam_permit.so
auth       required                    pam_env.so
auth       required                    pam_faillock.so      authsucc
# ...

Das bedeutet, dass das pam_unix.soModul (Authentifizierung per Passwort) zuerst ausgeführt wird und die folgenden beiden Module bei Erfolg überspringt. Wenn das Passwort also korrekt ist, pam_systemd_home.sowird es nie ausgeführt und fragt daher nicht die U2F ab. Da das Kontopasswort als LUKS-Schlüssel registriert ist, reicht es aus, den Home-Partition-Container zu entsperren.

!!! VORSICHT !!!

Wie immer sollten Sie beim Herumspielen mit der PAM-Konfiguration die ganze Zeit über eine Root-Shell geöffnet lassen, bis Sie Ihre Änderungen erfolgreich überprüft haben. Andernfalls könnten Sie sich aus Ihrem PC aussperren!

Ich wollte die Authentifizierung nur mit meinem FIDO2-Gerät durchführen, also habe ich Folgendes getan:

cat /etc/pam.d/system-auth
#%PAM-1.0

auth       required                    pam_faillock.so      preauth
-auth      [success=2 default=ignore]  pam_systemd_home.so
auth       [success=1 default=ignore]  pam_unix.so          try_first_pass nullok
auth       [default=die]               pam_faillock.so      authfail
auth       optional                    pam_permit.so
auth       required                    pam_env.so
auth       required                    pam_faillock.so      authsucc

Now pam_systemd_home.sowird zuerst ausgeführt und überspringt bei Erfolg die Standard-Passwortabfrage. Für LUKS ist dies auch ausreichend, da das FIDO2-Gerät dort als Token registriert ist.

Wenn Sie eine „echte“ 2FA haben möchten, müssen Sie lediglich die [success=2 default=ignore]und [success=1...-Konfigurationen in requiredEinsen ändern.

verwandte Informationen