그래서 제가 원하는 것은 Yubikey를 두 번째 요소 또는 유일한 요소로 사용하여 시스템에 로그인하는 것입니다.
저는 Linux Mint 21.3을 사용하고 있으며 Yubikey는 5C NFC입니다.
나의 /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
내가 추가한 유일한 줄은 세 번째이고, 나머지는 나보다 먼저 존재했습니다.
Q1:
내가 올바르게 이해하고 있습니까? 라인 순서가 중요합니까?
oathtool
HEX 비밀을 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
(1.2.5 AppImage) 에서는 Base32 비밀을 붙여넣고 6자리를 선택하도록 yubikey-manager
슬롯 중 하나를 구성합니다 .OATH-HOTP
그런 다음 다음을 만듭니다 /etc/users.oath
. (600개 권한, 소유자 - 루트)
HOTP kein - 46362175108032033577
지금: 첫 번째 시도가 성공했습니다.
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
그러나 두 번째 시도(다른 터미널)는 실패합니다.
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:
결국 다음이 /etc/users.oath
포함됩니다.HOTP kein - 46362175108032033577 0 801904 2024-03-24T18:24:03L
2Q
: 두 번째(및 다음) 시도가 실패하는 이유는 무엇입니까? 뭐가 잘못 되었 니?
3Q
: 왜 OATH_INVALID_DIGITS: Unsupported number of OTP digits
?