企业强密码策略需PAM强制强度、chage管理时效、集中管控三者结合:PAM用pam_pwquality.so设12位含大小写数字特殊字符及4位差异;chage通过/etc/login.defs和批量脚本统一90天有效期、1天最小间隔、14天提醒。

在企业环境中推行统一的强密码策略,不能只靠改几个配置文件,而要兼顾强制性、可审计性、兼容性和持续运维。核心是“PAM 策略 + 用户生命周期管理 + 集中管控”三者结合。
一、用 PAM 统一强制基础强度
所有主流 Linux 发行版(RHEL/CentOS 7+/Ubuntu 18.04+)都依赖 PAM 模块控制密码生成逻辑。关键操作如下:
- 启用 pam_pwquality.so(推荐替代老旧的 pam_cracklib):它更现代、参数更清晰,且默认已预装
- 编辑 /etc/pam.d/common-password(Debian/Ubuntu)或 /etc/pam.d/system-auth(RHEL/CentOS)
- 添加或修改这一行:
password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 difok=4 - 说明:minlen=12 要求至少 12 位;dcredit=-1 表示至少含 1 个数字(负值=最少数量),同理 u/l/o 分别对应大写、小写、特殊字符;difok=4 表示新密码至少有 4 个字符与旧密码不同
二、用 chage 管理密码时效与提醒
PAM 控制“怎么设”,chage 控制“什么时候设、多久有效”。对企业用户必须统一执行:
- 设置全局默认策略(影响新建用户):
修改 /etc/login.defs:
PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_WARN_AGE 14 - 批量更新存量用户(例如所有普通员工):
for u in $(getent passwd | awk -F: '$3 >= 1000 && $3 - 对管理员等高权限账户,建议单独收紧:
chage -M 60 -W 7 root 或特定运维账号
三、通过集中认证避免策略绕过
仅靠本地 /etc/shadow 策略,在多台服务器分散管理时极易失效。企业级做法是解耦认证与策略:
- 部署 LDAP(如 OpenLDAP 或 FreeIPA)作为统一身份后端
- 所有 Linux 主机配置为 LDAP 客户端,PAM 调用 pam_ldap.so 或 pam_sss.so
- 密码策略(长度、历史、时效)统一在 LDAP 服务端定义和生效,一次配置,全网同步
- 配合 SSSD 缓存,即使 LDAP 临时不可用,本地登录仍可用(策略缓存仍有效)
四、配套机制保障落地效果
再好的策略,没有配套就容易被规避或遗忘:
- 禁止空密码:确认 /etc/pam.d/common-auth 中无 nullok 参数,或显式加 auth [success=ok default=bad] pam_deny.so 拦截空口令
- 禁用明文密码传输:确保 SSH 使用密钥登录,关闭密码认证(ChallengeResponseAuthentication no 和 PasswordAuthentication no)
- 审计与告警:定期用 awk -F: '$2 ~ /^\$/ {print $1}' /etc/shadow 检查是否存在未设密码账户;用 lastlog -b 30 查看长期未登录账户
- 入职/离职自动化:将密码策略绑定到账号开通/禁用流程中,例如通过 Ansible Playbook 批量执行 chage + passwd -e


















