Pam_oath kann mit Yubikey nicht eingerichtet werden: OTP ist nicht zur Anmeldung als Benutzer berechtigt

Pam_oath kann mit Yubikey nicht eingerichtet werden: OTP ist nicht zur Anmeldung als Benutzer berechtigt

Ich möchte mich also mit Yubikey als zweitem oder einzigem Faktor beim System anmelden.

Ich verwende Linux Mint 21.3, mein Yubikey ist 5C NFC.

Mein /etc/pam.d/common-auth:

auth    [success=1 default=ignore]      pam_unix.so nullok
auth    requisite                       pam_deny.so
auth    required pam_oath.so debug usersfile=/etc/users.oath digits=6 window=0
auth    required                        pam_permit.so
auth    required                        pam_ecryptfs.so unwrap
auth    optional                        pam_cap.so

Die einzige Zeile, die ich hinzugefügt habe, ist die dritte, der Rest war schon vor mir da.

Q1:Verstehe ich das richtig, dass die Zeilenreihenfolge wichtig ist?

Mit oathtooldieser Funktion erzeuge/konvertiere ich HEX-Geheimnisse zu Base32:

kein@leaf:~$ oathtool -v --hotp -d 6 46362175108032033577
Hex secret: 46362175108032033577
Base32 secret: IY3CC5IQQAZAGNLX
Digits: 6
Window size: 0
Start counter: 0x0 (0)

801904

Mit yubikey-manager(1.2.5 AppImage) konfiguriere ich einen der Slots so, dass OATH-HOTPein Base32-Geheimnis eingefügt und 6 Ziffern ausgewählt werden.

Dann erstelle ich /etc/users.oath: (600 Berechtigungen, Eigentümer – Root)

HOTP    kein    -   46362175108032033577

JETZT: Der erste Versuch ist erfolgreich:

kein@leaf:~$ sudo echo "YAPPY"
[sudo] password for kein:            
[../../pam_oath/pam_oath.c:parse_cfg(123)] called.
[../../pam_oath/pam_oath.c:parse_cfg(124)] flags 32768 argc 4
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[0]=debug
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[1]=usersfile=/etc/users.oath
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[2]=digits=6
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[3]=window=0
[../../pam_oath/pam_oath.c:parse_cfg(127)] debug=1
[../../pam_oath/pam_oath.c:parse_cfg(128)] alwaysok=0
[../../pam_oath/pam_oath.c:parse_cfg(129)] try_first_pass=0
[../../pam_oath/pam_oath.c:parse_cfg(130)] use_first_pass=0
[../../pam_oath/pam_oath.c:parse_cfg(131)] usersfile=/etc/users.oath
[../../pam_oath/pam_oath.c:parse_cfg(132)] digits=6
[../../pam_oath/pam_oath.c:parse_cfg(133)] window=0
[../../pam_oath/pam_oath.c:pam_sm_authenticate(275)] get user returned: kein
[../../pam_oath/pam_oath.c:pam_sm_authenticate(283)] usersfile is /etc/users.oath
[../../pam_oath/pam_oath.c:pam_sm_authenticate(293)] authenticate first pass rc -2 (OATH_INVALID_DIGITS: Unsupported number of OTP digits) last otp Sun Jun 30 07:11:28 3357022

One-time password (OATH) for `kein':       
[../../pam_oath/pam_oath.c:pam_sm_authenticate(376)] conv returned: 801904
[../../pam_oath/pam_oath.c:pam_sm_authenticate(440)] OTP: 801904
[../../pam_oath/pam_oath.c:pam_sm_authenticate(448)] authenticate rc 0 (OATH_OK: Successful return) last otp Tue Nov  8 02:59:37 4368416

[../../pam_oath/pam_oath.c:pam_sm_authenticate(472)] done. [Success]
YAPPY

ABER der zweite Versuch (ein anderes Terminal) schlägt fehl:

kein@leaf:~$ sudo echo "YAPPY"
[sudo] password for kein:            
[../../pam_oath/pam_oath.c:parse_cfg(123)] called.
[../../pam_oath/pam_oath.c:parse_cfg(124)] flags 32768 argc 4
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[0]=debug
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[1]=usersfile=/etc/users.oath
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[2]=digits=6
[../../pam_oath/pam_oath.c:parse_cfg(126)] argv[3]=window=0
[../../pam_oath/pam_oath.c:parse_cfg(127)] debug=1
[../../pam_oath/pam_oath.c:parse_cfg(128)] alwaysok=0
[../../pam_oath/pam_oath.c:parse_cfg(129)] try_first_pass=0
[../../pam_oath/pam_oath.c:parse_cfg(130)] use_first_pass=0
[../../pam_oath/pam_oath.c:parse_cfg(131)] usersfile=/etc/users.oath
[../../pam_oath/pam_oath.c:parse_cfg(132)] digits=6
[../../pam_oath/pam_oath.c:parse_cfg(133)] window=0
[../../pam_oath/pam_oath.c:pam_sm_authenticate(275)] get user returned: kein
[../../pam_oath/pam_oath.c:pam_sm_authenticate(283)] usersfile is /etc/users.oath
[../../pam_oath/pam_oath.c:pam_sm_authenticate(293)] authenticate first pass rc -2 (OATH_INVALID_DIGITS: Unsupported number of OTP digits) last otp Sun Mar 24 18:24:03 2024

One-time password (OATH) for `kein':       
[../../pam_oath/pam_oath.c:pam_sm_authenticate(376)] conv returned: 118838
[../../pam_oath/pam_oath.c:pam_sm_authenticate(440)] OTP: 118838
[../../pam_oath/pam_oath.c:pam_sm_authenticate(448)] authenticate rc -6 (OATH_INVALID_OTP: The OTP is not valid) last otp Sun Mar 24 18:24:03 2024

[../../pam_oath/pam_oath.c:pam_sm_authenticate(455)] One-time password not authorized to login as user 'kein'
[../../pam_oath/pam_oath.c:pam_sm_authenticate(472)] done. [Authentication failure]
Sorry, try again.
[sudo] password for kein: 

Schließlich /etc/users.oathenthält es:HOTP kein - 46362175108032033577 0 801904 2024-03-24T18:24:03L

2Q: Warum schlägt der zweite (und alle weiteren) Versuch fehl? Was ist falsch?

3Q: Warum OATH_INVALID_DIGITS: Unsupported number of OTP digits?

verwandte Informationen