Linux密码复杂度策略配置
1、密码复杂度策略概念
在Linux系统中,确保用户密码的复杂度是提高系统安全性的重要措施之一。通过配置密码策略,可以强制用户使用强密码,从而降低被破解的风险。本文将详细介绍如何在 Linux 系统中配置用户密码的复杂度,来确保密码的安全性。
密码复杂度策略是指一系列规则,用于确保用户设置的密码满足一定的安全标准。这些规则通常包括密码的长度、包含的字符类型(大写字母、小写字母、数字和特殊字符)以及密码不能与用户名相同等要求。在Linux系统中,密码复杂度策略通常通过system-auth或pwquality.conf模块来配置。
2、系统环境
系统环境:RedHat 8.0
主要配置文件:system-auth和pwquality.conf
3、通过system-auth模块设置密码复杂度策略
3.1、修改配置文件
执行命令:vi /etc/pam.d/system-auth,在文件中password字段的首行增加: password requisite pam_cracklib.so retry=3 difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 enforce_for_root ,password字段表示定义密码更改的规则,requisite表示如果该模块认证失败,则后续的模块不会执行。注:该参数新增在最后一行不生效,策略不生效
参数解释:
retry=3:密码验证失败时,用户有 3 次重新尝试的机会
difok=3:密码更改时,允许新、旧密码相同字符的个数是3
minlen=8:密码长度不少于8位
ucredit=-1:密码中至少包含有1个大写字母
lcredit=-1:密码中至少包含有1个小写字符
dcredit=-1:密码中至少包含有1个数字
ocredit=-1:密码中至少包含有1个特殊符号
enforce_for_root:强制对root生效
3.2、测试结论
3.2.1、普通用户修改密码
3.2.2、root用户修改密码
3.2.3、测试结论
通过测试发现:修改system-auth配置文件,对所有用户均生效。
4、通过pwquality.conf模块设置密码复杂度策略
4.1、修改配置文件
执行命令: vi /etc/security/pwquality.conf ,将文件中各参数前面的“#”删除,并设置各参数的数值。
参数解释:
difok = 3:密码更改时,允许新、旧密码相同字符的个数是3
minlen = 8:密码长度不少于8位
ucredit = -1:密码中至少包含有1个大写字母
lcredit = -1:密码中至少包含有1个小写字符
dcredit = -1:密码中至少包含有1个数字
ocredit = -1:密码中至少包含有1个特殊符号
minclass = 2:密码必须包含至少该整数值所指定的字符类别数量,例如,如果将“minclass”设置为2,则密码至少需要包含两个不同的字符类别(如数字和大写字母)
maxrepeat:新密码中允许的最大连续相同字符数,如果为0代表禁用
maxclassrepeat:新密码中允许的同一类的最大连续字符数
authtok_type = enforce_for_root:表示root用户也需遵守该规则
4.2、测试结论
4.2.1、普通用户修改密码
测试截图:
4.2.2、root用户修改密码
测试截图:
4.2.3、测试结论
通过测试发现:修改pwquality.conf配置文件,针对普通用户是生效的,但对于root用户而言只会提示,继续修改密码还是可以成功(不清楚为什么,有兴趣的大佬可以继续研究一下)。
5、同时修改system-auth和pwquality.conf配置文件
5.1、修改配置文件
执行命令: vi /etc/pam.d/system-auth ,针对system-auth文件设置各参数:
执行命令: vi /etc/security/pwquality.conf ,针对pwquality.conf设置各参数
5.2、测试结论
测试截图:
通过密码修改测试发现,当system-auth和pwquality.conf配置文件中同时存在密码策略时,密码修改规则以system-auth配置为准,也就是说system-auth的优先级高于pwquality.conf文件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App