PAM은 Kerberos 비밀번호가 만료된 것으로 간주합니다.

PAM은 Kerberos 비밀번호가 만료된 것으로 간주합니다.

저는 수년간 소규모 네트워크에서 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. 그러나 성공적인 클라이언트 loginkinit원래 클라이언트에서는 변경됩니다 . 이것은 또 다른 문제일 수 있지만 두 사이트 모두에서 완벽하게 작동하는 이전 사용자에게도 동일하게 발생합니다. 사용해보니 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와 관련이 없습니다. 실패한 계정이 shadowMaxLDAP에 설정되었습니다. 처음에 이 설정을 몰랐지만 shadowLastChange더하기 날짜가 shadowMax현재 날짜보다 늦어도 자격 증명은 만료된 것으로 보고됩니다. -1로 설정 shadowMax하거나 값을 모두 삭제하면 문제가 해결됩니다.

이것은 다른 사이트의 설정이 분명히 값을 완전히 무시하는 이유를 잘 설명하지 못하지만 이것은 또 다른 이야기입니다.

관련 정보