
저는 수년간 소규모 네트워크에서 Kerberos/LDAP 인증을 실행했습니다. Kerberos는 LDAP에 보관되며, 이는 다시 다른 사이트로 복제됩니다. 두 번째 사이트의 컴퓨터는 복제본에 인증되고, 이전 사이트는 원본 서버에 인증됩니다. 최근에 몇 가지 새로운 사용자 계정을 추가했습니다.
원본 사이트에서는 모든 것이 원활하게 실행됩니다. 새로운 사용자는 문제 없이 시스템에 로그인할 수 있습니다.
복제본을 사용하는 두 번째 사이트에서도 kinit user
문제 없이 작동합니다. 그러나 login user
비밀번호가 만료되었으므로 즉시 변경해야 한다고 주장합니다. 비밀번호를 변경하면 사용자가 정상적으로 로그인됩니다.
복제본 KDC의 설정을 확인하면 kadmin.local
모든 것이 좋아 보입니다.
kadmin.local: getprinc user
Principal: [email protected]
Expiration date: [never]
Last password change: Di Nov 22 21:06:35 CET 2022
Password expiration date: [never]
Maximum ticket life: 0 days 10:00:00
Maximum renewable life: 7 days 00:00:00
Last modified: Di Nov 22 21:06:35 CET 2022 ([email protected])
Last successful authentication: Di Nov 22 21:19:27 CET 2022
Last failed authentication: So Nov 13 09:05:17 CET 2022
Failed password attempts: 0
Number of keys: 8
[ ... ]
Attributes: REQUIRES_PRE_AUTH
Policy: [none]
따라서 비밀번호나 주체 모두 만료되지 않습니다. 따라서 kinit
예상대로 작동합니다.
root@client:~# kinit user
Password for [email protected]:
root@client:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
22.11.2022 21:25:17 23.11.2022 07:25:17 krbtgt/[email protected]
renew until 23.11.2022 21:25:11
그러나 login
비밀번호가 만료되었으므로 변경해야 한다고 주장합니다.
root@ganesha:~# login user
Password:
Sie müssen Ihr Passwort sofort ändern (Passwortablauf).
Current Kerberos password:
Enter new Kerberos password:
Retype new Kerberos password:
Linux client 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 (2022-10-21) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Letzte Anmeldung: Dienstag, den 22. November 2022, 20:59:02 CET auf pts/5
user@client:~$
이 로그인 후에 주체의 Last password change
및가 Last modified
업데이트됩니다. Last successful authentication
변하지 않는다. 성공 후에도 변하지 않습니다 kinit
. 그러나 성공적인 클라이언트 login
나 kinit
원래 클라이언트에서는 변경됩니다 . 이것은 또 다른 문제일 수 있지만 두 사이트 모두에서 완벽하게 작동하는 이전 사용자에게도 동일하게 발생합니다. 사용해보니 getprinc
기존 사용자와 신규 사용자 사이에 어떤 차이도 발견할 수 없습니다.
login
다음 PAM 설정 은 Debian 설치의 기본값 에 적용되어야 auth
합니다 :account
auth optional pam_faildelay.so delay=3000000
auth requisite pam_nologin.so
auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000
auth [success=1 default=ignore] pam_unix.so nullok try_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_group.so
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
account requisite pam_deny.so
account required pam_permit.so
account required pam_krb5.so minimum_uid=1000
VPN을 통해 원래 Kerberos와 LDAP를 사용하는 새로운 Bullseye 클라이언트를 설정했습니다. 같은 행동을 보여줍니다. PAM 디버깅을 수행했습니다.
Jan 23 21:32:44 psyche login[2861]: pam_krb5(login:auth): user user authenticated as [email protected]
Jan 23 21:32:44 psyche login[2861]: pam_unix(login:account): expired password for user user (password aged)
Jan 23 21:32:53 psyche login[2861]: pam_krb5(login:chauthtok): user user changed Kerberos password
Jan 23 21:32:53 psyche login[2861]: pam_unix(login:session): session opened for user user(uid=10##) by admin(uid=0)
(login:account)
모든 시스템에서 잘 작동하는 이전 사용자 는 물론 비밀번호 변경에 대한 항목이 없으므로 비밀번호 변경도 없습니다. 따라서 복제와 관련이 없는 것 같습니다. 더 이상하게도 login
해당 사용자에게 잘 작동하는 시스템이 있습니다 . 확인해 보니 /etc/pam.d/common-account
두 시스템 모두 동일합니다.
무엇을 확인해야 할지에 대한 아이디어를 주시면 감사하겠습니다.
당신의 도움을 주셔서 감사합니다.
답변1
실제 이유는 Kerberos와 관련이 없습니다. 실패한 계정이 shadowMax
LDAP에 설정되었습니다. 처음에 이 설정을 몰랐지만 shadowLastChange
더하기 날짜가 shadowMax
현재 날짜보다 늦어도 자격 증명은 만료된 것으로 보고됩니다. -1로 설정 shadowMax
하거나 값을 모두 삭제하면 문제가 해결됩니다.
이것은 다른 사이트의 설정이 분명히 값을 완전히 무시하는 이유를 잘 설명하지 못하지만 이것은 또 다른 이야기입니다.