5次尝试登录失败后如何锁定用户?


12

5次尝试登录失败后如何锁定用户?

我收集了一些发行版/版本说明,但是无法测试。

RHEL4:通过添加:

auth        required      /lib/security/$ISA/pam_tally.so no_magic_root
account     required      /lib/security/$ISA/pam_tally.so deny=5 reset no_magic_root

至:

/etc/pam.d/system-auth
/etc/pam.d/login
/etc/pam.d/sshd

RHEL4:???

SLES9:通过添加:

auth required pam_tally.so no_magic_root
account required pam_tally.so deny=5 reset no_magic_root

至:

/etc/pam.d/login
/etc/pam.d/sshd

SLES11或SLES10:通过添加:

auth required pam_tally.so deny=5 onerr=fail per_user no_lock_time

至:

/etc/pam.d/common-auth

通过添加:

account required pam_tally.so

至:

/etc/pam.d/common-account

问题:有人可以确认一下,这是5次尝试登录失败后锁定用户的有效方法吗?或如何做?

ps:

/sbin/pam_tally --user USERNAME --reset

这样做之前有用的事情吗?我可以用这些锁定root用户吗?编辑PAM是一件非常敏感的事情,因为人们可以将自己锁定在服务器之外(我的意思是,例如:root用户)。这样做时有什么提示吗?


tally模块是实现此目的的方法,但是我建议pam_tally2,因为原始模块相当不完整且不直观。同样,root也可以通过这种方式锁定,但您必须通过no_magic_root
Bratchley 2013年

顺便说一句,我不建议对根帐户进行任何锁定,这是万一发生问题(例如,使用帐户锁定)时您的逃生方法,并且攻击者也不应在其上拥有任何直接的引导程序。
布莱奇利2013年

SLES10是否也需要no_magic_root?
加斯科彼得

所有GNU / Linux发行版都基于相同的上游项目基础集,因此,除非Novell努力以使人们感到困惑的方式更改其pam_tally模块的版本,否则SuSE上的发行版应该与其他发行版上的相同。
布莱奇利2013年

1
您确定这是个好主意吗?这样,每个用户都可以轻松地阻止任何其他用户登录。使用较高的延迟是IMO更实用的方法,但您可以自己决定。
Marco Marco

Answers:


17

您可能想看看一下fail2ban。可以将其配置为在经过一定次数的失败尝试后锁定帐户,然后在经过一定时间后解锁。

http://www.fail2ban.org/wiki/index.php/下载

如果您真的很想使用pam_tally,则可能要pam_tally2改用。应该与任何当前的PAM软件包一起安装。您可以执行man pam_tally2来查看如何使用它。

这是一个入门的示例。将以下内容添加到pam文件中auth部分的开头/etc/pam.d/password-auth

auth        required      pam_tally2.so  file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200

在同一文件中,将其添加到帐户部分:

account     required      pam_tally2.so

上面的参数如下:

  • file=/var/log/tallylog –默认日志文件用于保留登录计数。
  • deny=3 – 3次尝试后拒绝访问并锁定用户。
  • even_deny_root –策略也适用于root用户。
  • unlock_time=1200 -20分钟(60秒* 20分钟= 1200秒)

如果您不想锁定root用户,请将even_deny_root更改为magic_root

是否要锁定根帐户是个问题。您可能需要执行以下操作,在此情况下,根帐户可以被锁定,但锁定时间仅比其他帐户短:

auth        required      pam_tally2.so  file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200 root_unlock_time=60

这只会将根帐户锁定一分钟,而其他所有人则只能锁定1200秒。

样本日志文件如下所示:

$ ssh me@somemachine
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Account locked due to 4 failed logins
Account locked due to 5 failed logins
Last login: Mon Jun 4 21:21:06 2013 from someothermachine

您可以使用命令pam_tally2查询有关锁定帐户的信息:

$ pam_tally2 --user=me
Login           Failures  Latest    failure     From
me                   5    06/04/13  21:21:06    someothermachine

您可以像这样解锁限制:

pam_tally2 --user=me --reset
Login           Failures  Latest    failure     From
me                  5     06/04/13  21:21:06    someothermachine

现在,该帐户显示在pam_tally2中,如下所示:

$ pam_tally2 --user=me
Login           Failures   Latest   failure     From
me                 0

参考文献


2

pam_tally2最初使我感到困惑,但在关注之后我发现了man pam_tally2-

  EXAMPLES
   Add the following line to /etc/pam.d/login to lock the account after 4 failed logins.
   Root account will be locked as well. The accounts will be automatically unlocked after
   20 minutes. The module does not have to be called in the account phase because the
   login calls pam_setcred(3) correctly.

   auth     required       pam_securetty.so
   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200
   auth     required       pam_env.so
   auth     required       pam_unix.so

上面的措辞有些混乱,因为您实际上仅添加了这一pam_tally2.so行。

因此您可以对其进行编辑/etc/pam.d/login并将其添加到所有其他auth行下方:

   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200

或者,如果您有/etc/pam.d/system-auth,可以在此处添加。

无需重新启动或重新加载任何服务-对于新的本地登录,该服务立即变为活动状态。

注意:如果您也想pam_tally2申请sshd或其他远程服务,则还需要将行添加到/etc/pam.d/sshd和/或/etc/pam.d/password-auth


要检查其是否正常运行,请使用有效的用户进行失败的登录尝试,然后运行 pam_tally2

例如,对于名为jacobrun 的用户:

  $ sudo pam_tally2 -u jacob

它将输出类似:

  Login           Failures Latest   failure     From
  jacob           1        01/01/01 11:00:00    tty1

如果太多的登录尝试失败并且帐户被锁定,则可以手动解锁该帐户:

  $ sudo pam_tally2 -u jacob --reset
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.