控制用户密码错误次数

控制台密码错误限制

使用PAM还可以限制在console控制台上登录,需要修改/etc/pam.d/system-auth配置文件(或者/etc/pam.d/login),添加如上auth配置字段即可。

一旦用户失败登录尝试次数达到3次,该帐户立刻被锁定,除非root用户解锁。root用户下使用如下命令解锁用户:

pam_tally2 -u username -r --reset

查看用户登录失败信息:

pam_tally2 -u username

如果要在3次失败登录尝试后永久锁定用户,那么需要删除unlock_time字段,除非root用户解锁该账户,否则将永久锁定。

sudo vim /etc/pam.d/login

在第四行加入:

auth required pam_tally2.so deny=5 unlock_time=180 onerr=succeed file=/var/log/tallylog

pam_tally/pam_tally2模块参数:

全局选项

onerr=[succeed|fail]

file=/path/to/log   失败登录日志文件,默认为/var/log/tallylog

audit               如果登录的用户没有找到,则将用户名信息记录到系统日志中

silent              不打印相关的信息

no_log_info         不通过syslog记录日志信息

 

AUTH选项

deny=n              失败登录次数超过n次后拒绝访问

lock_time=n         失败登录后锁定的时间(秒数)

unlock_time=n       超出失败登录次数限制后,解锁的时间

no_lock_time        不在日志文件/var/log/faillog 中记录.fail_locktime字段

magic_root          root用户(uid=0)调用该模块时,计数器不会递增

even_deny_root      root用户失败登录次数超过deny=n次后拒绝访问

root_unlock_time=n  与even_deny_root相对应的选项,如果配置该选项,则root用户在登录失败次数超出限制后被锁定指定时间

密码强度设置

sudo apt install libpam-cracklib
sudo vim /etc/pam.d/common-password

最后一行添加:

password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

模块参数:


minlen=10       密码字符长度不少于12位(默认为9)

lcredit=-1      至少包含1个小写字母

ucredit=-1      至少包含1个大写字母

dcredit=-1      至少包含1个数字

ocredit=-1      至少包含1个特殊字符

retry=3         配置密码时,提示3次用户密码错误输入

difok=6         配置密码时,新密码中至少6个字符与旧密码不同(默认为5)

 其他常用参数:

reject_username    新密码中不能包含与用户名称相同的字段

maxrepeat=N        拒绝包含超过N个连续字符的密码,默认值为0表示此检查已禁用

maxsequence=N      拒绝包含大于N的单调字符序列的密码,例如’1234’或’fedcb’,默认情况下即使没有这个参数配置,一般大多数这样的密码都不会通过,除非序列只是密码的一小部分

maxcla***epeat=N   拒绝包含相同类别的N个以上连续字符的密码。默认值为0表示此检查已禁用。

use_authtok        强制使用先前的密码,不提示用户输入新密码(不允许用户修改密码)