统信UOS需通过PAM启用密码历史限制以满足等保2.0要求,安装libpam-pwquality后,在/etc/pam.d/common-password中添加password required pam_pwhistory.so remember=5 use_authtok,实现对最近5次密码的强制校验与拦截。

统信UOS系统中若未禁用密码历史记录,用户修改密码时可能重复使用旧密码,导致等保2.0要求的身份鉴别控制失效,攻击者一旦获取某次旧口令即可长期有效登录。
通过PAM模块启用密码历史限制
该方法直接作用于所有本地用户,策略由libpam-pwquality模块执行,是唯一能真正阻止重复密码被接受的机制。
1、打开终端,执行命令安装必要组件:sudo apt-get install -y libpam-pwquality cracklib-runtime
2、备份原始配置文件,防止误操作导致认证失败:sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak
3、编辑PAM密码策略文件:sudo vim /etc/pam.d/common-password
4、在文件中找到以password [success=1 default=ignore] pam_unix.so开头的行,在其正上方插入以下单行配置(注意:必须是单独一行,不能换行,不能与其他参数混写):
password required pam_pwhistory.so remember=5 use_authtok
这行命令中remember=5表示系统将记录最近5次密码哈希值,新密码若与其中任一历史密码相同,则拒绝设置。use_authtok确保该规则仅在passwd等密码修改场景触发,不干扰登录验证流程。
5、保存退出后,无需重启服务,策略对后续所有密码修改操作立即生效。
验证密码历史策略是否启用
执行命令查看当前PAM配置是否已加载pam_pwhistory模块:grep -r "pam_pwhistory" /etc/pam.d/
若输出包含/etc/pam.d/common-password:password required pam_pwhistory.so remember=5 use_authtok,则说明配置已写入。
再执行命令检查模块是否可加载:sudo pam-auth-update --package 2>/dev/null | grep pwhistory
若返回空,说明模块未被系统识别,需确认libpam-pwquality是否安装成功。
手动测试历史密码是否被拒绝
方法一:用当前用户执行密码修改
1、运行passwd命令,按提示输入当前密码
2、首次输入一个全新密码(如Aa123456!)并确认
3、再次运行passwd,尝试将密码改回刚才那个Aa123456!,系统会报错:new password not accepted,证明历史密码拦截生效
方法二:切换至root账户验证(需已开启root权限)
1、执行sudo su -进入root环境
2、运行passwd uos(uos为普通用户名),连续两次设置同一密码
【注意】若第二次输入与第一次完全相同的密码,且未提示“new password not accepted”,说明pam_pwhistory.so未正确加载或remember参数未生效
















