首页/安全/安全加固速查/口令时效与弱口令存量核查
口令与认证策略55 条

口令时效与弱口令存量核查

基线落地后要能一键抽查:哪些账号永不过期、哪些长期未改密、哪些仍是弱口令(用字典碰撞思路自查)。

安全加固速查安全更新于 2026-10-13

存量口令抽查

口令策略落到基线之后,还要能一键抽查存量现状:哪些账号永不过期、哪些长期未改密、哪些仍然是弱口令。抽查的价值在于发现策略之外的历史遗留——策略改好了,老账号并不会自动合规。弱口令自查应在本地用自建字典做碰撞,字典文件用完即删,避免自己留下可疑文件。

基本信息

适用平台Linux
风险等级中
基线要求无永不过期账号、无弱口令
核查文件/etc/shadow 与 /etc/passwd
相关工具pwscore、chage

典型使用场景

  • 等保测评前的口令策略抽查
  • 排查口令永不过期的账号
  • 定位长期未改密的账号
  • 用自建字典做弱口令碰撞自查
  • 与服务账号清单核对时效设置
  • 生成可直接留档的抽查结果

永不过期与超期账号

永不过期与超期账号
awk -F: '($1!="root") && ($5==""||$5=="-1"||$5==99999) {print $1}' /etc/shadow   # $5 为最大天数列
awk -F: '$5 < 90 && $5 != "" {print $1, $5}' /etc/shadow   # 有效期短于 90 天的账号
chage -l <账号>                                            # 单个账号的时效详情
awk -F: '($3>=1000 && $3<65534) {print $1}' /etc/passwd     # 普通用户账号清单

弱口令自查(仅限本机)

弱口令自查(仅限本机)
for p in $(cat /etc/security/wordlist.check); do echo "$p" | pwscore >/dev/null 2>&1 || echo "weak: $p"; done   # 逐条与自建字典碰撞
rm -f /etc/security/wordlist.check    # 用完立即删除字典文件

检查项与判读

检查项含义判读
shadow 最大天数列口令有效期设置空值与 99999 表示永不过期
最近改密日期上次修改口令的时间长期未改需要关注
账号有效期是否设置了整体到期与前一项配合看
弱口令碰撞结果字典中命中的口令命中即需要立即更换
抽查记录本次核查的结论留档用于合规举证
等保测评现场常查 root 与管理员账号的口令策略与更换记录:把抽查脚本和结果一起留档最省事。
自定义字典不要以明文常用口令清单的形式长期留在服务器上:用完即删,避免给自己留下可疑文件。
pwscore 来自 pwquality 工具包:极简系统上先确认命令存在,否则脚本会静默失败,看起来一切正常其实什么都没查。

易错点

  • 只改策略不查存量,永不过期的老账号长期存在
  • 只看 shadow 的某一列就下结论,把空值与 99999 的含义混为一谈
  • 弱口令字典留存在服务器上,自己制造了一份可疑文件
  • 脚本依赖 pwscore 却没有先确认工具是否安装,静默失败还以为口令都合规
  • 抽查结果不落档,测评时无法证明做过核查

数据来源与参考

  • 等保 2.0:身份鉴别与口令管理
  • CIS Benchmark:口令策略核查条目

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌