当用户没有密码时,有没有办法防止密码过期?

当用户没有密码时,有没有办法防止密码过期?

好吧,我们都关心安全,所以用户应该定期更改密码(谁说密码就像内衣?)。

在 redhat 和 centos (5.x 和 6.x) 上,可以让每个真实用户密码在 45 天后过期,并在 7 天前发出警告。

/etc/shadow 条目如下所示:

testuser:$6$m8VQ7BWU$b3UBovxC5b9p2UxLxyT0QKKgG1RoOHoap2CV7HviDJ03AUvcFTqB.yiV4Dn7Rj6LgCBsJ1.obQpaLVCx5.Sx90:15588:1:45:7:::

它运行良好,大多数用户经常更改密码。

有些用户发现不使用任何密码而使用 ssh 公钥很方便(而且我鼓励他们这样做)。

45 天后,他们无法登录,因为忘记了密码并被要求更改密码。

当且仅当密码被禁用时,有没有办法防止密码过期?

/etc/shadow 中的设置testuser:!!:15588:1:45:7:::不起作用:要求 testuser 在 45 天后更改密码。

当然,将密码有效期设置为 99999 天是可行的,但是:

  • 这需要额外的工作。
  • 安全审计员可能不会高兴。

是否存在一个系统范围的参数,只有当用户确实有密码时才会提示用户更改过期密码?

答案1

如果用户不记得密码,那肯定是因为他们不需要使用密码。我建议使用 LDAP 等集中式身份验证系统,这样每个用户只有一个密码,就可以访问一切

这解决了几个问题:

  • 您不必担心管理每个主机上的单独密码
  • 用户实际上会记住他们的密码,因为他们需要它们
  • 您可以在一个中心位置(LDAP 目录)管理密码策略,并让用户在需要时在那里更改密码(想想在几天前警告他们密码到期的电子邮件等......)
  • 您拥有集中的用户管理,在需要创建新帐户或禁用旧帐户时可以节省每个人的时间(谁从未听说过“尽快在所有系统上禁用该用户的帐户”?)

答案2

根据SU 上的这个答案即使密码已过期,用户仍然应该能够使用其私钥登录。

我认为“关键”是用户确实有一个密码会过期。私钥只是他们登录的另一种方式。我相信,除非您禁用基于密码的登录(设置PasswordAuthentication在 sshd_config 中),否则用户仍然可以使用他们的密码登录。

sshd_config 中还有另一个设置PermitEmptyPasswords,其默认值为“否”。如果您删除用户的密码,则登录的唯一方法应该是使用其私钥。由于此时没有密码,因此密码可能不会过期。

不过这只是基于 ssh。还有其他区域需要查看,例如控制台和 su。我不确定它们如何处理空密码。

作为最后的手段,您可以始终在 cron 上放置一个 bash 脚本来检查哪些用户有密钥并相应地设置其到期日期。我也会做相反的事情:如果用户没有密钥,请确保他们的到期日期不会太远。

就我个人而言,我会让每个人都拥有公钥/私钥对。

答案3

因此您可以通过以下方式查询信息

chage -l username

您可以使用以下命令覆盖系统范围的默认值

chage -I -1 -m 0 -M 99999 -E -1 username

我认为您无法设置任何内容表明..用户没有密码,因此请忽略它。

答案4

您是否在使用传统的 unix passwd/shadow 文件?如果是,您是否尝试过UsePAM在 sshd 配置中禁用它?

UsePAM在 OpenSSH 5.8_p1 上测试了禁用功能,如果用户的帐户已过期,则通过 PasswordAuthentication 的用户会被正确拒绝,并会被正确要求更改密码;使用密钥登录时不会询问任何内容(UsePAM启用后我可以确认,使用密钥时,系统仍会要求更改密码。)

相关内容