如何在CentOS中设置允许简单密码?
CentOS 系统密码策略:允许简单密码的风险与配置考量
场景再现: 一位经验丰富的系统管理员眉头紧锁,新部署的CentOS服务器上,他尝试为测试账户设置一个简单的密码 test123,却遭遇了 BAD PASSWORD 的强硬拒绝,这熟悉的提示,正是CentOS默认安全屏障在发挥作用——它天生就不鼓励弱密码。
CentOS 的默认安全立场:拒绝脆弱密码
CentOS 秉承了 LinuX 强大的安全基因,其核心密码管理模块 PAM (Pluggable Authentication Modules) 内置了 pam_pwquality 组件,这个组件就是那堵坚实的墙,它的存在就是为了阻止用户设置过于简单、易被猜测或破解的密码。
默认策略的核心规则包括:
- 最小长度要求: 通常默认为 8 个字符(部分旧版本或自定义镜像可能不同)。
- 复杂性要求: 强制密码需包含多种字符类型组合:
- 小写字母 (a-z)
- 大写字母 (A-Z)
- 数字 (0-9)
- 特殊符号 (!, @, #, $, % 等)
- 字典检查: 会对照内置字典或自定义字典,拒绝常见单词、简单序列(如123456)或与用户名高度相似的密码。
- 历史记录: 可配置拒绝用户重复使用近期用过的旧密码。
结果显而易见: 像 password、12345678、qwerty、admin123 这类密码,在未修改默认配置的 CentOS 上,根本无法通过 passwd 命令的设置。
如何“允许”简单密码(风险警示在前)
必须郑重声明:在面向互联网或存在任何潜在风险的服务器上,主动降低密码强度要求是极其危险的行为,等同于主动削弱系统防御。 此举仅建议在绝对隔离、无任何外部访问需求且生命周期极短的测试环境中谨慎使用。
操作步骤:修改 PAM 密码策略配置
-
备份原始配置(重要!):
sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.bak
-
编辑
pwquality.conf文件:sudo vi /etc/security/pwquality.conf
-
关键参数修改(按需调整):
- 禁用复杂性要求: 找到或添加以下行,将值设为
0:minclass = 0 # 取消必须包含至少N种字符类型的要求
- 降低最小长度: (强烈不建议低于8)
minlen = 6 # 将最小长度改为6(示例值,风险高)
- 禁用字典检查: (进一步降低安全性)
dictcheck = 0 # 禁用字典检查
- 其他可选弱化:
maxrepeat = 0 # 允许任意数量的连续重复字符(如aaaaaa) maxsequence = 0 # 允许长序列(如123456) usercheck = 0 # 禁用检查密码是否包含用户名
- 禁用复杂性要求: 找到或添加以下行,将值设为
-
(可选)修改
system-auth文件: 有时需要调整 PAM 堆栈中pam_pwquality模块的严格级别,找到包含pam_pwquality.so的行,可能修改try_first_pass或retry参数,但核心控制通常在pwquality.conf。 -
保存并测试: 保存修改后,尝试使用
passwd命令为某个用户设置一个之前被拒绝的简单密码(如abc123),看是否成功。
密码策略调整对比表
| 安全策略 | 默认安全配置 | 允许简单密码配置 | 安全风险变化 |
|---|---|---|---|
| 最小长度 | 8字符或更长 | 可设为6字符或更短 | ⬇️ 暴力破解难度大幅下降 |
| 字符复杂度要求 | 需4种字符类型 | 可取消复杂度要求 | ⬇️ 密码组合空间急剧缩小 |
| 字典检查 | 启用,屏蔽常见弱密码 | 可完全禁用 | ⬇️ 常见弱密码畅通无阻 |
| 序列检测 | 屏蔽连续字符(如123,aaa) | 可允许长序列 | ⬇️ 规律性密码更易被猜解 |
| 用户名关联检查 | 屏蔽包含用户名的密码 | 可禁用 | ⬇️ 针对性攻击成功率上升 |
放弃强密码:你必须正视的严峻风险
当你按下回车键确认那个简单密码时,等同于在服务器大门上挂了一把儿童玩具锁,风险瞬间飙升:
- 暴力破解(Brute Force)天堂: 攻击者使用自动化工具尝试海量简单密码组合,攻破弱密码账户只需数秒到数分钟。
ssh端口将成为首要目标。 - 字典攻击(Dictionary Attacks)零阻力: 常见密码字典文件能瞬间匹配成功,你的
qwerty或iloveyou毫无招架之力。 - 内部威胁放大: 即使是内部人员,获取低权限账户后,利用弱密码也能轻易尝试横向提权。
- 自动化攻击脚本的猎物: 互联网上扫描开放端口并自动尝试默认/弱密码的僵尸网络无处不在,你的服务器极易被其捕获,沦为挖矿肉鸡或DDoS攻击跳板。
- 合规性灾难: 几乎所有的安全审计标准(如等保、PCI DSS)都明确要求实施强密码策略,弱密码直接导致合规失败。
- 数据泄露的导火索: 一个被攻破的低权限账户,往往是攻击者深入内网、窃取敏感数据的起点。
真正可行的安全实践:强化而非弱化
安全加固才是正道:
- 坚持强密码策略: 利用
pwquality.conf增强而非削弱默认设置:minlen = 12(甚至更长)minclass = 3或4(强制使用多种字符类型)dictcheck = 1,usercheck = 1(启用字典和用户名检查)maxrepeat = 3,maxsequence = 4(限制连续重复和序列长度)
- 强制执行密码定期更换: 在
/etc/login.defs中设置PASS_MAX_DAYS(如90天)。 - 绝对禁用SSH密码登录: 这是黄金法则! 使用SSH密钥对认证,编辑
/etc/ssh/sshd_config:PasswordAuthentication no # 关键!关闭密码登录 PubkeyAuthentication yes # 启用密钥认证
重启SSH服务 (
systemctl restart sshd) 后生效。 - 部署Fail2ban: 自动封锁短时间内多次尝试失败登录的IP地址,有效抵御暴力破解。
sudo yum install fail2ban -y。 - 最小权限原则: 严格限制用户权限,普通用户禁止拥有不必要的
sudo权限。 - 启用双因素认证(2FA): 对于关键系统或高权限账户(如root的su/sudo),增加一层动态验证码保护。
- 堡垒机/跳板机: 控制所有管理访问必须通过一个严格安全加固的入口点。
个人观点:安全与便利的永恒博弈
作为长期与服务器安全打交道的实践者,我深刻理解在封闭测试环境中追求快速迭代时,繁琐密码带来的困扰,便利性绝不能成为牺牲安全底线的借口,CentOS默认的严格密码策略不是阻碍,而是专业运维的第一道护城河。
每一次为简单密码开绿灯,都是在服务器防御体系上主动凿开的裂缝。 真正的效率提升,应着眼于自动化部署、密钥管理、堡垒机接入等安全且高效的方案,而非在核心认证机制上退让,面对层出不穷的网络威胁,唯有坚守强密码、普及密钥登录、实施纵深防御,才能在攻防对抗中守住阵地,安全从来不是选择题,而是运维工作的必答题,容不得半点侥幸。
推荐阅读
-
qqmailplugin是什么文件夹?qqmailplugin文件夹可以删除吗?
在Windows系统文件资源管理器中,qqmailplugin文件夹常出现在用户目录或程序安装路径下,其名称中的"qqmail...
-
GPT-5版本有哪些?GPT-5标准版/Mini/Nano/Chat版的区别与使用场景详解
-
Win11激活码与产品密钥的区别及使用技巧解析
-
NAS和云盘有什么区别?家用NAS是否值得入手?
-
什么是公有云?初学者必须了解的云计算基础知识
-
Linux系统下查看和管理物理内存的命令汇总
-
NAS硬盘怎么选?机械盘、NAS盘、企业盘有何区别?
-
什么是电源时序器?电源时序器的基本原理与工作方式详解
-
windows.edb是什么文件?可以删除吗?有什么后果?
-
阿里云盾是什么?卸载阿里云盾有什么影响?



