测试系统 :Asianux 3.0 sp2 x86
kernel : 2.6.18-128.7
pam版本:pam-0.99.6.2-4.1AXS3
操作方法:

在做操作之前,一定要备份好相关文件,然后使用下面命令,查看系统是否含有 pam_tally2.so 模块,如果没有,就需要使用 pam_tally.so 模块,两个模块的使用方法不太一样,需要区分开来。

find /lib* -iname “pam_tally2.so”

一、在字符终端下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟。
执行 vi /etc/pam.d/login
在#%PAM-1.0 下新起一行,加入

auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10

如果不限制root用户,则可以写成

auth required pam_tally2.so deny=3 unlock_time=5

[php]
其中大概含义如下:
even_deny_root 也限制root用户;
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
[/php]
此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。

二、在图形登陆界面下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟。
执行 vi /etc/pam.d/kde
在#%PAM-1.0 下新起一行,加入

auth required pam_tally2.so even_deny_root deny=3 unlock_time=5 root_unlock_time=10

如果不限制root用户,则可以写成

auth required pam_tally2.so deny=3 unlock_time=5

三、也可以直接在 system-auth 文件中直接添加这些命令,修改完成后,凡是调用 system-auth 文件的服务,都会生效。因为有自动解锁时间,所以,不用担心全部限制后,会出现永远无法登陆的“尴尬”情况。

备注:
可以使用 pam_tally2 -r -u username 命令,手动清除某用户记录次数。

关于 pam_tally 的用法,可参考下面链接:
http://www.edward-han.com/166.html