我正在尝试实现 3 次登录失败后锁定帐户的功能。Root 除外。
以下是我的/etc/pam.d/系统身份验证到目前为止的文件
auth required pam_tally2.so deny=3 onerr=fail magic_root
account required pam_tally2.so
在我的sshd 配置文件文件中,我添加了以下行
auth required pam_tally2.so deny=3 onerr=fail magic_root
但是这不管用。我尝试使用测试非 root 用户和错误密码通过 SSH 登录,但它并没有将我锁定。
但是,如果我调整sshd 配置文件文件并删除 magic_root 行,如下所示:
auth required pam_tally2.so deny=3 onerr=fail
测试帐户将被锁定。
我是否遗漏了什么?
另外,有人可以解释一下/etc/pam.d/系统身份验证和/etc/pam.d/密码验证?这些设置应该进入系统身份验证还是密码身份验证?谢谢
答案1
我没有亲身经历,但我认为你可能误读了手册页pam_tally2
。
我说
magic_root
如果模块由 uid=0 的用户调用,则计数器不会增加。系统管理员应该将此用于用户启动的服务,如 su,否则应省略此参数。
注意关于仅使用 的注释su
。为什么?因为大多数其他时候,此模块always
由 EUID 为 0 的用户调用,因为大多数使用此模块的系统服务(passwd
、sshd
等)都以 root 身份运行,事实上它们必须如此。
那么你需要设置什么标志来避免 root 被该模块锁定sshd
?手册页还指出:
通常,访问 root 的尝试失败不会导致 root 帐户被阻止,以防止拒绝服务:如果您的用户没有提供 shell 帐户并且 root 只能通过 su 或在机器控制台上登录(而不是 telnet/rsh 等),这是安全的。
换句话说,您想要的行为已经是默认行为。