我正在尝试pam_tally2
在/etc/pam.d
银河系中使用
我把 sshd 改成如下内容
#%PAM-1.0
auth required pam_securetty.so
auth required pam_tally2.so deny=3 unlock_time=600
auth required pam_env.so
auth required pam_unix.so
auth required pam_nologin.so
account required pam_unix.so
password required pam_unix.so
session required pam_limits.so
session required pam_unix.so
session required pam_lastlog.so nowtmp
session optional pam_mail.so standard
我创建了一个测试帐户;在登录之前,我测试了失败的登录计数:
pam_tally2 -u tst3402
(empty)
现在我使用正确的密码登录(这是由expect
脚本完成的,密码就像aaa12BBB,
)
spawn ssh -l tst3402 172.9.2.1
Password:
No mail.
Last login: Tue Mar 20 14:25:17 2018 from 172.2.2.2
tst3402@hostname:~>
status OK
在哪里
- 状态 OK由发送
expect
我重新检查失败计数
pam_tally2 -u tst3402
Login Failures Latest failure From
tst3402 1 03/20/18 14:25:17 172.2.2.2
这意味着在 3 次成功登录后,该帐户被锁定。
问题
为什么在成功登录后会pam_tally2
看到 1 次失败?
通常的嫌疑人:
我知道我可以使用 ssh 密钥,但我受到 ISAE3420 的诅咒
使用 ssh -vvv -l ...我看到两个交换 ..我应该看到 2 个失败?
debug3: send packet: type 50 debug3: receive packet: type 51
没有 SELinux
我在 security.SE 中没有找到任何 pam_tally2 问题
问题
我在我的一台机器上看到了类似的行为:使用
sudo
正确的密码会在pam_tally2
's 的计数器中生成一个条目。语境
该
pam.d/sudo
条目是默认条目,非常简单:在
common-auth
中,我pam_tally2.so
在顶部的行之前添加了该pam_unix.so
行:解释
pam_tally2
手册页状态(强调我的):所以,到目前为止,我相信堆栈没有正确调用
pam_setcred
. 没有文件pam.d
可以调用pam_setcred
(它甚至没有安装在我的系统上)。解决方案
在示例中,手册页状态(强调我的):
因此,如果没有调用
pam_setcred
,则需要在account
阶段调用模块。我编辑了
pam.d/common-account
文件并在顶部添加:当用户设法进行身份验证时,这将重置计数器。
去做
如果用户取消身份验证(例如,在提示输入密码时按 Ctrl+C),那么这会增加计数器而不减少它,因此它与失败的尝试无法区分。