首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pam_tally2添加了一个额外的失败登录

pam_tally2添加了一个额外的失败登录
EN

Unix & Linux用户
提问于 2018-03-20 14:34:10
回答 1查看 1.2K关注 0票数 3

我正试图在pam_tally2星系中使用/etc/pam.d

我将sshd更改为以下内容

代码语言:javascript
复制
#%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

我创建了一个测试帐户;在登录之前,我测试了失败的登录计数:

代码语言:javascript
复制
pam_tally2 -u tst3402
(empty)

现在我使用正确的密码登录(这是由一个expect脚本完成的,密码类似于aaa12BBB, )

代码语言:javascript
复制
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发送

我重新检查故障计数

代码语言:javascript
复制
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键,但是我被I 3420‘S诅咒了
  • 使用ssh -vvv -l ..。我看到两个交换..。我应该看到两次失败?debug3:发送数据包:类型50 debug3:接收数据包:类型51
  • 没有SELinux
  • 我在security.SE里没有发现任何security.SE问题
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-09-02 14:29:51

问题

我在我的一台机器上看到了类似的行为:使用带有正确密码的sudopam_tally2的S计数器中生成一个条目。

上下文

pam.d/sudo条目是默认的,非常简单:

代码语言:javascript
复制
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行:

代码语言:javascript
复制
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.so

解释

pam_tally2手册页声明(强调我的):

身份验证阶段首先递增尝试登录计数器,并检查用户是否应被拒绝访问。如果对用户进行了身份验证,并且登录过程在调用pam_setcred(3)时继续进行,则会重置尝试计数器。

因此,到目前为止,我认为堆栈没有正确地调用pam_setcredpam.d中没有任何文件调用pam_setcred (它甚至没有安装在我的系统上)。

溶液

在示例中,手册说明(强调我的):

不需要在帐户阶段调用该模块,因为登录正确地调用了pam_setcred(3)。

因此,如果不调用pam_setcred,则需要在account阶段调用模块。

我编辑了pam.d/common-account文件并添加到顶部:

代码语言:javascript
复制
account required                        pam_tally2.so

这将在用户设法进行身份验证时重置计数器。

TODO

如果用户取消身份验证(例如,当提示输入密码时按Ctrl+C ),那么这就增加了计数器而没有减少它,因此它与失败的尝试是无法区分的。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/432339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档