控制用户密码错误次数
控制台密码错误限制
使用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 强制使用先前的密码,不提示用户输入新密码(不允许用户修改密码)