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

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

如何在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 次登录尝试失败后锁定用户的有效/良好方法吗?或者如何做到这一点?

附:

/sbin/pam_tally --user USERNAME --reset

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

答案1

您可能想看看fail2ban。它可以配置为在一定次数的失败尝试后锁定帐户,然后在设定的时间段后解锁。

http://www.fail2ban.org/wiki/index.php/Downloads

如果您真的很想使用pam_tally,您可能想改用pam_tally2。应与任何最新的 PAM 软件包一起安装。你可以做一个人 pam_tally2看看如何使用它。

这是一个帮助您入门的示例。将以下内容添加到开头授权pam 文件中的部分/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 更改甚至拒绝根魔法根

如果您想锁定 root 帐户,这是值得怀疑的。您可能想要执行类似的操作,其中 root 帐户可以被锁定,但持续时间比其他帐户短:

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

这只会将 root 帐户锁定一分钟,其他人则锁定 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

相关内容