题 密码过期时阻止RSA身份验证


我在CentOS 7上设置了一个FreeIPA服务器,我希望在密码过期时阻止通过SSH进行RSA身份验证。默认情况下,当我使用户密码到期并登录时,他们被迫更改密码。但是,如果同一用户也使用RSA身份验证,则服务器允许他们进入并且不强制他们更改密码。我搜索了与FreeIPA,PAM和SSH相关的主题,似乎无法找到我想要的答案。

当用户密码过期时,有没有办法阻止通过SSH进行RSA密钥身份验证?


5
2018-02-28 22:35






答案:


您可以使用chage或usermod来编写脚本,例如:usermod --expiredate ...如果我不得不使用类似于以下伪代码的shell脚本:

if `chage -l user_account_you_want_expired_etc | awk '/expires/{print "relevant fields}'` >= expiration
then
usermod -s /sbin/nologin USERNAME
fi

沿着这些方向做某事(注意你是不工作但是给你一个框架。)如果到期(来自awk的grep)大于或等于我想要/需要的那些,那么将shell更改为NOLOGIN“。


0
2018-02-29 00:51



我在想同样的事情,但我担心用户一旦过期就无法登录重置密码。如果我按照你的提法设置expiredate,那是否与ldap中的pwdExpire相同? - sKr0d


如果您使用PAM为您的用户创建会话(usePAM yes),它不允许用户使用过期密码登录。

它很好地描述了 Unix的 (好吧,这是相反的问题,但可能对你有所帮助)。


0
2018-02-29 08:40



CentOS 7配置为“usePAM yes”。问题可能是FreeIPA在ldap中使用“krpPassExpiration”而不是pwdExpire或Pam查看的任何内容来确定帐户是否应该强制更改密码。也许有一种方法让PAM看看那个领域? - sKr0d


如果您已将客户端注册到FreeIPA,则其PAM堆栈将配置为使用SSSD守护程序。有问题的PAM模块是pam_sss,它与SSSD守护进程通信以执行检查。 SSSD了解IPA属性,并应在用户被锁定时正确拒绝会话。

# ipa user-disable abbra
-----------------------------
Disabled user account "abbra"
-----------------------------
# grep UsePAM /etc/ssh/sshd_config
UsePAM yes
# journalctl -u sshd -f
 .....
Feb 29 17:21:23 a.example.com systemd[1]: Started OpenSSH server daemon.
Feb 29 17:21:33 a.example.com sshd[20209]: pam_sss(sshd:account): system info: [The user account is locked on the server]
Feb 29 17:21:33 a.example.com sshd[20209]: pam_sss(sshd:account): Access denied for user abbra: 6 (Permission denied)
Feb 29 17:21:33 a.example.com sshd[20209]: fatal: Access denied for user abbra by PAM account configuration [preauth]

对于启用的用户,您将拥有以下内容:

# ipa user-enable abbra
----------------------------
Enabled user account "abbra"
----------------------------
# journalctl -u sshd -f
 ....
Feb 29 18:03:27 a.example.com sshd[22302]: Accepted publickey for abbra from X.Y.Z.W port 54540 ssh2: KEY...

当密码被标记为过期时(通过由另一个用户设置,即管理员,或通过应用某个密码策略),SSSD忽略密码需要更改的事实,因为此时它只运行密码为'n'的帐户阶段检查。

过去曾经有过许多要求添加此类逻辑的请求,其中一个反对意见的事实是,如果您使用一种类型的身份验证(公钥),为什么帐户状态应该基于另一个身份验证的状态类型。其中有一个逻辑,但也许最好添加一个密码策略,允许逻辑将帐户状态与密码的状态联系起来。

如果您有兴趣拥有这样的密码策略,我建议您打开一张FreeIPA的机票来请求它,并说明您的用例。


0
2018-02-29 17:21