Linux系统通过配置pam_pwquality模块、/etc/login.defs文件及chage命令,实现密码复杂度、生命周期和历史记录的全面管控,提升账户安全性。

Linux系统的安全始于用户认证,而密码作为最常用的认证方式,其强度直接影响系统整体安全性。设置合理的密码策略能有效防止弱口令、暴力破解等攻击。通过配置PAM(Pluggable Authentication Modules)模块和相关系统文件,可以实现对密码复杂度的精细控制。
启用密码复杂度检查(pam_pwquality)
现代Linux发行版(如CentOS 7+、Ubuntu 18.04+)使用 pam_pwquality 模块替代旧的 pam_cracklib,用于评估密码强度。
编辑配置文件:/etc/pam.d/system-auth 或 /etc/pam.d/common-password,确保包含以下行:
password requisite pam_pwquality.so retry=3 minlen=10 difok=3
常用参数说明:
- minlen=10:密码最小长度为10位
- difok=3:新密码至少包含3个与旧密码不同的字符
- lcredit=-1:至少包含1个小写字母
- ucredit=-1:至少包含1个大写字母
- dcredit=-1:至少包含1个数字
- ocredit=-1:至少包含1个特殊符号
- retry=3:输错密码最多重试3次
这些规则可组合使用,例如:
password requisite pam_pwquality.so minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=3 retry=3
配置全局密码策略(login.defs)
/etc/login.defs 文件定义了用户创建时的默认密码策略,主要影响 useradd 等命令。
- PASS_MAX_DAYS 90:密码最长有效期90天
- PASS_MIN_DAYS 7:密码修改最小间隔7天(防频繁更换)
- PASS_MIN_LEN 10:密码最小长度(注意:该值不强制复杂度,仅作提示)
- PASS_WARN_AGE 7:密码过期前7天开始提醒用户
修改后对新用户生效,已有用户需使用 chage 命令单独调整。
强制用户遵守策略(chage 与 passwd)
使用 chage 命令管理用户密码过期信息:
chage -M 90 -m 7 -W 7 username # 设置最大90天,最小7天,警告期7天 chage -l username # 查看用户密码策略详情
使用 passwd 命令强制用户下次登录修改密码:
passwd -e username # 密码立即过期,登录时必须更改
阻止重复使用旧密码
防止用户循环使用旧密码,可在 pam_pwquality 中添加:
password sufficient pam_unix.so use_authtok nullok sha512 remember=5
其中 remember=5 表示禁止使用最近5次用过的密码。历史记录保存在 /etc/security/opasswd 文件中。
合理配置密码策略是Linux系统安全的基础措施。结合 pam_pwquality 的复杂度要求、login.defs 的生命周期管理以及密码历史限制,能显著提升账户安全性。定期审计用户密码状态,配合强身份验证(如双因素认证),可构建更可靠的防护体系。基本上就这些。










