如何防止用户延长有效登录窗口

bor*_*ula 14 security redhat pam hardening

一直在为 RedHat 盒研究一些安全强化程序,我想知道是否有可能阻止用户在密码过期后更改他的密码。

对于我们的一个客户,要求他们只能通过临时帐户访问服务器,这意味着一旦创建了用户凭据,密码必须在 4 小时内过期,一旦密码过期,只有 root 可以更改它.

对于第一个要求(密码在 4 小时后到期),我想可以通过设置passwordMaxAge = 144000来实现。但是我仍然找不到一种方法来防止用户更改过期密码,而无需关闭密码过期功能。

任何人都可以帮忙吗?

Jen*_*y D 24

如果您从 passwd 命令中删除 setuid 位,则只有 root 可以使用它。这也将禁止用户在密码到期之前更改密码- 否则,这可能是用户将帐户再延长四个小时的一种方式。

[jenny@finch ~] sudo chmod -s /usr/bin/passwd
[jenny@finch ~]$ passwd
Changing password for user jenny.
Changing password for jenny.
(current) UNIX password: 
New password: 
Retype new password: 
passwd: Authentication token manipulation error
Run Code Online (Sandbox Code Playgroud)

Root 仍然可以更改任何密码:

[jenny@finch ~]$ sudo passwd jenny
Changing password for user jenny.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
Run Code Online (Sandbox Code Playgroud)

  • 这_几乎_有效。它的问题在于,如果系统更新了 `passwd`,你对 setuid 位的删除将被撤销。 (6认同)
  • 优雅,非常 UNIX。来自我的 +1。@borntohula,如果您对此感到满意,请不要忘记通过单击“勾选”大纲来接受此答案。 (5认同)
  • @MichaelHampton 是的。修复这就是例如 puppet 的用途。另外,不是每个人在每次更新后都会检查他们的系统是否有新的 setuid/setgid 位? (3认同)
  • @warren - 这句话中可能有一丝讽刺。极小的痕迹。微小的。 (2认同)

Mic*_*ton 21

通常,密码过期用于强制用户更改密码。听起来您想要做的是锁定帐户,以防止所有登录。

我建议你做的是,当你创建帐户时,还设置一个 at 作业,它将在四小时后锁定帐户。

例如:

useradd temp8143
echo chage -E 0 temp8143 | at now + 4 hours
Run Code Online (Sandbox Code Playgroud)

chage -E期望以天为单位给出到期日期,因此我们通过 at 工作解决此问题。)

  • @NateEldredge 不完全是。例如,`passwd -l` 不会阻止 ssh 密钥登录或指纹登录,而 `chage -E 0` 会阻止。 (5认同)
  • 这是一个很好的解决方案。来自我的 +1。 (3认同)
  • 啊,太棒了——我也喜欢这个主意*;也+1。你甚至可以做一个 `at`ted `userdel`,这样做的好处是可以整理所有这些临时帐户,这样它们就不会永远闲逛了。 (2认同)
  • 实际上,我认为这比我的建议要好。 (2认同)