如何在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
例如,对于名为jacob
run 的用户:
$ 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