之前有写过一篇关于限制用户错误登陆次数的文章,最近工作中又遇到了类似的问题,回过头来看看,只有 pam_tally2 的方法,没有前身 pam_tally 的方法,今儿看到同事的方法,特拿来留着,以备后用。

pam_tally

1、如果想在所有登陆方式上,限制所有用户,可以在 /etc/pam.d/system-auth 中增加2行
[php]
auth required pam_tally.so onerr=fail no_magic_root
account required pam_tally.so deny=3 no_magic_root even_deny_root_account per_user reset
[/php]
[php]
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
no_magic_root 连root用户也在限制范围,不给root特殊权限。
详细参数的含义,参见 /usr/share/doc/pam-xxxx/txts/README.pam_tally
[/php]
如果不想限制root用户,可以将 even_deny_root_account 取消掉。

2、针对不同服务来限制不同登陆方式:
只在本地文本终端上做限制,可以编辑如下文件,添加的内容和上方一样。
vi /etc/pam.d/login

只在图形化登陆界面上做限制,可以编辑如下文件,添加的内容和上方也一样。
vi /etc/pam.d/kde

只在远程telnet、ssh登陆上做限制,可以编辑如下文件,添加的内容和上方也一样。
vi /etc/pam.d/remote
vi /etc/pam.d/sshd

3、手动解除锁定:
查看某一用户错误登陆次数:
pam_tally –user

例如,查看work用户的错误登陆次数:
pam_tally –user work

清空某一用户错误登陆次数:
pam_tally –user –reset

例如,清空 work 用户的错误登陆次数,
pam_tally –user work –reset

faillog -r 命令亦可。

4、pam_tally没有自动解锁功能
因为pam_tally没有自动解锁的功能,所以,在设置限制时,要多加注意,万一全做了限制,而root用户又被锁定了,就只能够进单用户模式解锁了,当然,也可以添加crontab任务,达到定时自动解锁的功能,但需要注意的是,如果在/etc/pam.d/system-auth 文件中添加了pam_tally的话,当root被锁定后,crontab任务会失效,所以,最好不要在system-auth 文件中添加pam_tally。

5、添加crontab任务
root用户执行 crontab -e 命令,添加如下内容
[php]
MAILTO=""
*/1 * * * * /usr/bin/faillog -r
[/php]
意思是,每1分钟,将所有用户登陆失败的次数清空,并将所有用户解锁。

#############################################
备注
pam_tally2 方法,可以参考下面链接:
设置Linux用户连续N次输入错误密码进行登陆时,自动锁定X分钟(Pam_tally2)
#############################################