Linux用户密码策略_PAM模块配置

1次阅读

linux用户密码策略通过pam实现,核心配置文件为/etc/pam.d/common-password或system-auth;启用pam_pwquality.so设置最小长度、字符多样性、禁止重复与用户名等;用pam_pwhistory.so限制24次旧密码重用;通过pam_unix.so配合chage管理有效期;须备份配置、测试验证并避免锁死系统。

Linux用户密码策略_PAM模块配置

Linux系统中用户密码策略主要通过PAM(Pluggable Authentication Modules)模块实现,核心配置文件是 /etc/pam.d/common-passworddebian/ubuntu系)或 /etc/pam.d/system-auth(RHEL/centos/Fedora系)。修改前务必备份原文件,并确保至少有一个可用的root或sudo权限账户在线,避免锁死系统。

启用密码复杂度检查(pam_pwquality.so)

该模块替代老旧的 pam_cracklib.so,提供更灵活的强度控制。在对应PAM配置文件中添加或修改如下行(通常放在 password [success=1 default=ignore] 后):

  • password requisite pam_pwquality.so retry=3 minlen=12 difok=4 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 maxrepeat=2 reject_username enforce_for_root

参数说明:minlen=12 要求最小长度12位;difok=4 表示新密码至少4个字符不能与旧密码相同;dcredit/ucredit/lcredit/ocredit 分别限制数字、大写、小写、特殊字符的最少数量(负值表示“至少”);maxrepeat=2 禁止连续3个相同字符;reject_username 禁止密码包含用户名;enforce_for_root 对root用户同样生效。

限制密码重用历史(pam_pwhistory.so)

防止用户循环使用旧密码。需配合 /etc/security/opasswd 文件(首次启用时自动创建):

  • 在PAM配置中添加:password [success=1 default=ignore] pam_pwhistory.so remember=24 use_authtok

remember=24 表示保存最近24次旧密码哈希,新密码不得与其中任一重复;use_authtok 确保仅在密码修改时触发(不干扰登录认证)。注意:该模块必须放在 pam_pwquality.so 之后,否则可能跳过强度检查。

设置密码有效期与提醒(pam_unix.so)

控制密码生命周期,通过 pam_unix.soshadow 选项启用影子密码支持后,再配置 /etc/shadow 字段或直接在PAM中约束:

  • password [success=1 default=ignore] 行添加:pam_unix.so sha512 shadow nullok obscure minlen=12
  • 实际有效期由 chage 命令管理,例如:chage -M 90 -W 7 username 设置密码90天过期、提前7天提醒

注意:pam_unix.so 中的 minlen 是兼容性兜底参数,优先级低于 pam_pwquality.sosha512 指定哈希算法,比默认的MD5更安全。

禁止空密码与即时生效验证

确保基础安全底线:

  • 检查 /etc/pam.d/common-authsystem-auth 中是否存在 auth required pam_deny.so 类错误配置;
  • 确认 /etc/pam.d/common-password 中无 permissive 标志(会导致策略仅记录不拒绝);
  • 测试修改:用普通用户执行 passwd,输入弱密码(如”123456″)应明确报错,而非静默接受;
  • 若策略未生效,检查是否被其他 password [default=bad] 规则覆盖,或SELinux/AppArmor拦截了PAM调用。

不复杂但容易忽略。

text=ZqhQzanResources