我已经设置了 SSH - 使用 kerberos V5 单点登录。当用户密码已过期时,它返回'警告:密码已过期。'并允许用户登录!还送了我的变化/etc/pam.d/password-auth
,使得pam_krb5.so
来自上面pam_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
Run Code Online (Sandbox Code Playgroud)
账户栈:
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
Run Code Online (Sandbox Code Playgroud)
请提出任何更改建议,以防止密码过期的用户登录。
日志 :
krb5kdc.log
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: testyoga@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM, 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}, testyoga@EXAMPLE.COM for kadmin/changepw@EXAMPLE.COM –
Run Code Online (Sandbox Code Playgroud)
/var/log/auth.log
/var/log/auth.log : /var/log/auth.log : pam_krb5[24516]: authentication succeeds for 'testyoga' (testyoga@EXAMPLE.COM) –
Run Code Online (Sandbox Code Playgroud)
根据提供的堆栈内容,如果成功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() 实现相同的授权检查。
归档时间: |
|
查看次数: |
1172 次 |
最近记录: |