我正试图在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哪里
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次失败?
通常的嫌疑犯:
发布于 2020-09-02 14:29:51
我在我的一台机器上看到了类似的行为:使用带有正确密码的sudo在pam_tally2的S计数器中生成一个条目。
pam.d/sudo条目是默认的,非常简单:
session required pam_env.so readenv=1 user_readenv=0
session required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive在common-auth中,我在pam_unix.so行之前在顶部添加了pam_tally2.so行:
auth required pam_tally2.so onerr=fail audit deny=5 unlock_time=900
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth optional pam_cap.sopam_tally2手册页声明(强调我的):
身份验证阶段首先递增尝试登录计数器,并检查用户是否应被拒绝访问。如果对用户进行了身份验证,并且登录过程在调用pam_setcred(3)时继续进行,则会重置尝试计数器。
因此,到目前为止,我认为堆栈没有正确地调用pam_setcred。pam.d中没有任何文件调用pam_setcred (它甚至没有安装在我的系统上)。
在示例中,手册说明(强调我的):
不需要在帐户阶段调用该模块,因为登录正确地调用了pam_setcred(3)。
因此,如果不调用pam_setcred,则需要在account阶段调用模块。
我编辑了pam.d/common-account文件并添加到顶部:
account required pam_tally2.so这将在用户设法进行身份验证时重置计数器。
如果用户取消身份验证(例如,当提示输入密码时按Ctrl+C ),那么这就增加了计数器而没有减少它,因此它与失败的尝试是无法区分的。
https://unix.stackexchange.com/questions/432339
复制相似问题