Linux系统下,用户密码的有效期可以通过编辑/etc/login.defs文件控制;密码复杂度规则设定需要通过/etc/pam.d/system-auth文件控制;登录失败次数限制通常由/etc/pam.d/login文件限制,可使用pam_tally2模块进行设置。
Linux系统下的用户密码的有效期
可以修改密码可以通过login.defs文件控制。设置密码过期期限(默认情况下,用户的密码永不过期。)编辑 /etc/login.defs 文件,可以设置当前密码的有效期限,具体变量如下所示:
# 查看默认配置 [root@iZm5e7avacv1htxtp7qbdyZ etc]# cat login.defs | grep PASS* # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 # 修改参数 [root@iZm5e7avacv1htxtp7qbdyZ etc]# sed -i -r 's/(PASS_MAX_DAYS)\s+[0-9]+/\1 90/' login.defs [root@iZm5e7avacv1htxtp7qbdyZ etc]# sed -i -r 's/(PASS_MIN_LEN)\s+[0-9]+/\1 8/' login.defs # 检查修改后的结果 [root@iZm5e7avacv1htxtp7qbdyZ etc]# cat login.defs | grep PASS*
参数说明:
-
PASS_MAX_DAYS:密码可以使用的最多天数
-
PASS_MIN_DAYS:密码更改之间允许的最小天数
-
PASS_MIN_LEN:可接受的最小密码长度
-
PASS_WARN_AGE:密码过期前发出警告的天数
linux 用户密码复杂度
用户密码复杂度规则设定,需要通过/etc/pam.d/system-auth文件去控制(针对的是普通用户修改密码会生效,root用户无效),centos6中默认是通过pam_cracklib.so模块控制,(在CentOS 7上实现密码复杂度策略设置,主要是使用PAM pwquality模块完成):
相关参数说明:
-
retry=3 定义登录/修改密码失败时,可以重试的次数;
-
type=xxx 当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。
-
minlen=8 定义用户密码的最小长度为8位
-
ucredit=-1 定义用户密码中最少有2个大写字母 (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母;下面同理)
-
lcredit=-1 定义用户密码中最少有4个小写字母
-
dcredit=-1 定义用户密码中最少有1个数字
-
ocredit=-1 定义用户密码中最少有1个特殊字符(除数字、字母之外)
-
remember=3 修改用户密码时最近5次用过的旧密码就不能重用了
-
difok=n 此选项用来规定新密码中必需有n个字符与旧密码不同。
-
minclass=n 此选项用来规定新密码中的字符类别的最小数目,字符一般有四种类别:数字、大写字母、小写字母,以及特殊字符。
linux 设置登录失败5次,锁定时间为5分钟
限制登录通常由/etc/pam.d/login文件限制的,可直接在#%PAM-1.0
下,直接添加一行
# 不限制root用户 auth required pam_tally2.so deny=3 unlock_time=5 # 限制root用户 auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10
本文使用的是 pam_tally2 模块,如果不支持 pam_tally2 模块可以使用 pam_tally 模块,不同的模块设置不同,请参考模块使用方法进行设置
也可以直接在
/etc/pam.d/system-auth
中设auth required pam_tally2.so onerr=fail unlock_time=1800 no_magic_root account required pam_tally2.so deny=5 unlock_time=1800 no_magic_root even_deny_root_account per_user reset参数说明:
auth
: 表示这是认证阶段的规则。
required
: 表示此模块是必需的,如果它失败,则认证失败。
pam_tally.so
: 是PAM模块,用于跟踪用户登录失败的次数。
onerr=fail
: 如果pam_tally.so模块遇到错误,则认证失败。
Unlock_time=1800
: 指定用户账户在被锁定后多长时间(以秒为单位)自动解锁。这里是1800秒,即30分钟-
no_magic_root
: 禁止root用户使用特殊权限来绕过登录失败次数的限制。
account
: 表示这是账户管理阶段的规则。
deny=5
: 指定在连续登录失败5次后,用户账户将被锁定。
even_deny_root_account
: 即使对root用户也执行账户锁定策略。
per_user
: 锁定策略是基于每个用户的,而不是全局的。
reset
: 当用户成功登录后,重置登录失败计数器。
建议不要限制root用户,因为pam_tally没有解锁功能,哪怕配置了unlock_time也是不生效的
使用
pam_tally2 -r -u username
手动解锁用户使用
pam_tally2 –u username
查看用户错误登录次数
更多相关参数请参考官网