SSH 可处理过期的 Kerberos 密码

SSH 可处理过期的 Kerberos 密码

我已经设置了 SSH - 使用 kerberos V5 进行单点登录。当用户密码过期时,它会返回“警告:密码已过期。' 并允许用户登录!我甚至对上面的/etc/pam.d/password-auth内容进行了更改:pam_krb5.sopam_unix.so

认证堆栈:

auth        requisite     pam_krb5.so uid >= 500

#Google authentication configuration module
auth        [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth        requisite  pam_google_authenticator.so


auth        [success=1 default=ignore]  pam_unix.so nullok try_first_pass
auth        required      pam_deny.so
auth        requisite     pam_succeed_if.so uid >= 0 quiet

帐户堆栈:

account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_krb5.so uid >= 500
account required pam_permit.so

请建议任何更改以防止密码过期的用户登录。

日志 :

日志

Jun 03 11:34:29 <HOST-NAME> krb5kdc[1752](info): AS_REQ (4 etypes {18 17 16 23}) 192.168.181.40: CLIENT KEY EXPIRED: [email protected] for krbtgt/[email protected], Password has expired
Jun 03 11:34:47 <HOST-NAME> krb5kdc[1752](info): AS_REQ (4 etypes {18 17 16 23}) 192.168.181.40: ISSUE: authtime 1464933887, etypes {rep=18 tkt=18 ses=18}, [email protected] for kadmin/[email protected]

/var/log/auth.log

/var/log/auth.log : /var/log/auth.log : pam_krb5[24516]: authentication succeeds for 'testyoga' ([email protected]) –

答案1

编辑:

根据提供的account堆栈内容,如果成功,它似乎pam_krb5.so将被跳过pam_localuser.so。这是密码时效限制未应用的最可能原因。


以下是我们目前所知的信息:

  • 记录的消息确认用户的密码已过期。
  • pam_krb5尽管如此,仍能成功验证。

我怀疑您的问题在于您没有account正确配置堆栈。目前有几种不同的实现pam_krb5,但并非所有实现都在堆栈内部实现了密码时效检查auth

http://linux.die.net/man/8/pam_krb5

当用户登录时,模块的身份验证功能会执行简单的密码检查,并在可能的情况下获取 Kerberos 5 凭据,并将其缓存以供日后使用。当应用程序请求初始化凭据(或打开会话)时,会创建通常的票证文件。当应用程序随后请求删除凭据或关闭会话时,模块会删除票证文件。当应用程序请求帐户管理时,如果模块未参与用户身份验证,它将向 libpam 发出信号以忽略该模块。如果模块确实参与了用户身份验证,它将检查用户密码是否已过期并使用被认证用户的.k5login文件来验证用户的授权,该文件预计可以被模块访问。

堆栈的工作account是强制执行访问策略,无论身份验证是否成功。这很重要,因为auth使用基于密钥的身份验证时堆栈经常被绕过。在上下文中调用模块时,密码时效是否也会导致失败由各个开发人员决定auth

相反,pam_krb5由 Russ Allbery 维护的实现(我喜欢的)会在auth堆栈中捕获此问题。

https://www.eyrie.org/~eagle/software/pam-krb5/pam-krb5.html

帐户

提供 pam_acct_mgmt() 的实现。它所做的就是执行与上述 pam_authenticate() 实现相同的授权检查。

相关内容