linux – 如何通过pam_krb5中的kerberos拒绝访问已禁用的AD帐户?

我有一个工作的AD / Linux / LDAP / KRB5目录和身份验证设置,有一个小问题.禁用帐户后,SSH公钥认证仍允许用户登录.

很明显,kerberos客户端可以识别已禁用的帐户,因为kinit和kpasswd返回“客户端凭据已被撤销”,没有进一步的密码/交互.

是否可以配置PAM(在sshd_config中使用“UsePAM yes”)以禁止已禁用帐户的登录,其中身份验证由publickey完成?这似乎不起作用:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

请不要在答案中介绍winbind – 我们不会使用它.

最佳答案
我在别处读过其他人要求SSH“修复”,以便锁定帐户无法通过SSH登录. (参见Debian bug 219377)
这个请求作为一个补丁被拒绝了“因为它打破了用户[曾经用过passwd -l只锁定passwd”的一些期望.“ (参见Debian bug 389183)
例如有些人希望能够从密码登录中锁定帐户,但仍允许SSH密钥访问.

PAM不会拒绝对刚刚被锁定的帐户进行SSH密钥身份验证(例如,由于密码尝试无效,因为SSH密钥身份验证的目的是不关注密码字段,这是帐户通常被锁定的地方.)

我知道密码哈希条目是在pam_authenicate()时隐式检查的,而不是在pam_acct_mgmt()时检查的. pam_unix.so pam_sm_acct_mgmt()根本不检查密码哈希,并且在公钥身份验证期间不调用pam_authenticate().

如果您的目的是能够集中禁用帐户登录,则还有其他可能的解决方法,包括:

更改登录shell.

(重新)移动他们的authorized_keys文件.

拒绝访问的另一个选项可能是在sshd_config中使用DenyGroups或AllowGroups.
(然后将用户添加到“sshdeny”组,或将其从“sshlogin”组中删除以禁止他们登录.)
(在这里阅读:https://help.ubuntu.com/8.04/serverguide/user-management.html)

http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL开始
我读到:“问题是pam_unix只检查影子条目的到期日期,而不是密码哈希字段内容.”
如果这是真的,会使帐户到期而不是锁定它做你需要的吗?

您的问题的答案可能是“是的,如果您在密码字段以外的地方禁用它们”

转载注明原文:linux – 如何通过pam_krb5中的kerberos拒绝访问已禁用的AD帐户? - 代码日志