如何在CentOS中设置允许简单密码?

CentOS 系统密码策略:允许简单密码的风险与配置考量

场景再现: 一位经验丰富的系统管理员眉头紧锁,新部署的CentOS服务器上,他尝试为测试账户设置一个简单的密码 test123,却遭遇了 BAD PASSWORD 的强硬拒绝,这熟悉的提示,正是CentOS默认安全屏障在发挥作用——它天生就不鼓励弱密码。

CentOS 的默认安全立场:拒绝脆弱密码

CentOS 秉承了 LinuX 强大的安全基因,其核心密码管理模块 PAM (Pluggable Authentication Modules) 内置了 pam_pwquality 组件,这个组件就是那堵坚实的墙,它的存在就是为了阻止用户设置过于简单、易被猜测或破解的密码。

默认策略的核心规则包括:

  • 最小长度要求: 通常默认为 8 个字符(部分旧版本或自定义镜像可能不同)。
  • 复杂性要求: 强制密码需包含多种字符类型组合:
    • 小写字母 (a-z)
    • 大写字母 (A-Z)
    • 数字 (0-9)
    • 特殊符号 (!, @, #, $, % 等)
  • 字典检查: 会对照内置字典或自定义字典,拒绝常见单词、简单序列(如123456)或与用户名高度相似的密码。
  • 历史记录: 可配置拒绝用户重复使用近期用过的旧密码。

结果显而易见:password12345678qwertyadmin123 这类密码,在未修改默认配置的 CentOS 上,根本无法通过 passwd 命令的设置。

如何“允许”简单密码(风险警示在前)

必须郑重声明:在面向互联网或存在任何潜在风险的服务器上,主动降低密码强度要求是极其危险的行为,等同于主动削弱系统防御。 此举仅建议在绝对隔离、无任何外部访问需求且生命周期极短的测试环境中谨慎使用。

操作步骤:修改 PAM 密码策略配置

  1. 备份原始配置(重要!):

    sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
    sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.bak
  2. 编辑 pwquality.conf 文件:

    sudo vi /etc/security/pwquality.conf
  3. 关键参数修改(按需调整):

    • 禁用复杂性要求: 找到或添加以下行,将值设为 0
      minclass = 0  # 取消必须包含至少N种字符类型的要求
    • 降低最小长度: (强烈不建议低于8)
      minlen = 6  # 将最小长度改为6(示例值,风险高)
    • 禁用字典检查: (进一步降低安全性)
      dictcheck = 0  # 禁用字典检查
    • 其他可选弱化:
      maxrepeat = 0  # 允许任意数量的连续重复字符(如aaaaaa)
      maxsequence = 0 # 允许长序列(如123456)
      usercheck = 0   # 禁用检查密码是否包含用户名
  4. (可选)修改 system-auth 文件: 有时需要调整 PAM 堆栈中 pam_pwquality 模块的严格级别,找到包含 pam_pwquality.so 的行,可能修改 try_first_passretry 参数,但核心控制通常在 pwquality.conf

  5. 保存并测试: 保存修改后,尝试使用 passwd 命令为某个用户设置一个之前被拒绝的简单密码(如 abc123),看是否成功。

密码策略调整对比表

安全策略 默认安全配置 允许简单密码配置 安全风险变化
最小长度 8字符或更长 可设为6字符或更短 ⬇️ 暴力破解难度大幅下降
字符复杂度要求 需4种字符类型 可取消复杂度要求 ⬇️ 密码组合空间急剧缩小
字典检查 启用,屏蔽常见弱密码 可完全禁用 ⬇️ 常见弱密码畅通无阻
序列检测 屏蔽连续字符(如123,aaa) 可允许长序列 ⬇️ 规律性密码更易被猜解
用户名关联检查 屏蔽包含用户名的密码 可禁用 ⬇️ 针对性攻击成功率上升

放弃强密码:你必须正视的严峻风险

当你按下回车键确认那个简单密码时,等同于在服务器大门上挂了一把儿童玩具锁,风险瞬间飙升:

  1. 暴力破解(Brute Force)天堂: 攻击者使用自动化工具尝试海量简单密码组合,攻破弱密码账户只需数秒到数分钟。ssh 端口将成为首要目标。
  2. 字典攻击(Dictionary Attacks)零阻力: 常见密码字典文件能瞬间匹配成功,你的 qwertyiloveyou 毫无招架之力。
  3. 内部威胁放大: 即使是内部人员,获取低权限账户后,利用弱密码也能轻易尝试横向提权。
  4. 自动化攻击脚本的猎物: 互联网上扫描开放端口并自动尝试默认/弱密码的僵尸网络无处不在,你的服务器极易被其捕获,沦为挖矿肉鸡或DDoS攻击跳板。
  5. 合规性灾难: 几乎所有的安全审计标准(如等保、PCI DSS)都明确要求实施强密码策略,弱密码直接导致合规失败。
  6. 数据泄露的导火索: 一个被攻破的低权限账户,往往是攻击者深入内网、窃取敏感数据的起点。

真正可行的安全实践:强化而非弱化

安全加固才是正道:

  1. 坚持强密码策略: 利用 pwquality.conf 增强而非削弱默认设置:
    • minlen = 12 (甚至更长)
    • minclass = 34 (强制使用多种字符类型)
    • dictcheck = 1, usercheck = 1 (启用字典和用户名检查)
    • maxrepeat = 3, maxsequence = 4 (限制连续重复和序列长度)
  2. 强制执行密码定期更换:/etc/login.defs 中设置 PASS_MAX_DAYS (如90天)。
  3. 绝对禁用SSH密码登录: 这是黄金法则! 使用SSH密钥对认证,编辑 /etc/ssh/sshd_config
    PasswordAuthentication no  # 关键!关闭密码登录
    PubkeyAuthentication yes   # 启用密钥认证

    重启SSH服务 (systemctl restart sshd) 后生效。

  4. 部署Fail2ban: 自动封锁短时间内多次尝试失败登录的IP地址,有效抵御暴力破解。sudo yum install fail2ban -y
  5. 最小权限原则: 严格限制用户权限,普通用户禁止拥有不必要的 sudo 权限。
  6. 启用双因素认证(2FA): 对于关键系统或高权限账户(如root的su/sudo),增加一层动态验证码保护。
  7. 堡垒机/跳板机: 控制所有管理访问必须通过一个严格安全加固的入口点。

个人观点:安全与便利的永恒博弈

作为长期与服务器安全打交道的实践者,我深刻理解在封闭测试环境中追求快速迭代时,繁琐密码带来的困扰,便利性绝不能成为牺牲安全底线的借口,CentOS默认的严格密码策略不是阻碍,而是专业运维的第一道护城河。

每一次为简单密码开绿灯,都是在服务器防御体系上主动凿开的裂缝。 真正的效率提升,应着眼于自动化部署、密钥管理、堡垒机接入等安全且高效的方案,而非在核心认证机制上退让,面对层出不穷的网络威胁,唯有坚守强密码、普及密钥登录、实施纵深防御,才能在攻防对抗中守住阵地,安全从来不是选择题,而是运维工作的必答题,容不得半点侥幸。

发布于 2025-07-02 15:30:41
分享
海报
292
上一篇:如何将Windows系统重装为CentOS? 下一篇:CentOS中PDF文件中文不显示如何解决?
目录

    忘记密码?

    图形验证码