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-u2f
diesem 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-auth
sah 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.so
Modul (Authentifizierung per Passwort) zuerst ausgeführt wird und die folgenden beiden Module bei Erfolg überspringt. Wenn das Passwort also korrekt ist, pam_systemd_home.so
wird 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.so
wird 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 required
Einsen ändern.