Phi*_*ilR 10 linux active-directory kerberos pam
我有一个有效的 AD/Linux/LDAP/KRB5 目录和身份验证设置,但有一个小问题。当账户被禁用时,SSH 公钥认证仍然允许用户登录。
很明显,kerberos 客户端可以识别禁用的帐户,因为 kinit 和 kpasswd 返回“客户端凭据已被撤销”,无需进一步的密码/交互。
是否可以配置 PAM(在 sshd_config 中使用“UsePAM yes”)以禁止禁用帐户登录,其中身份验证由公钥完成?这似乎不起作用:
account [default=bad success=ok user_unknown=ignore] pam_krb5.so
Run Code Online (Sandbox Code Playgroud)
请不要在您的回答中引入 winbind - 我们不使用它。
做了更多功课,并回答我自己的问题。
在 RedHat 的 pam_krb5 ( pam_krb5-2.3.14-1/src/acct.c) 中,除非模块参与身份验证阶段,否则 pam_sm_acct_mgmt() 函数将根据模块配置返回 PAM_IGNORE 或 PAM_USER_UNKNOWN。因此,需要更改 pam_krb5 代码才能执行我想要的操作。
JohnGH 的回答是一个很好的解决方法;使用“代理”属性来传达相同的含义,例如破坏 shell 或添加到“禁用用户”组。
另一种解决方法(部分测试)是设置过去的帐户到期日期,并使用 pam_unix 等模块来使帐户检查失败。它使用 LDAP,而不是 KRB5,但查询相同的集中管理的用户目录。