首页/安全/安全加固速查/空口令与锁定状态核查

空口令与锁定状态核查

shadow 第二字段为空=无口令可登录,属高危;用 passwd -S 拿到人类可读的账号状态清单。

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

这条命令在查什么

空口令账号是最容易被自动化扫描识别的高危状态:shadow 第二字段为空串意味着无需任何凭据即可登录。这条核查同时回答两件事:有没有空口令账号,以及每个账号当前处于什么口令状态。第二条信息常被忽略,但「无口令可登录」这个状态比空字段更隐蔽,必须逐行看完。

基本信息

加固项口令状态核查
适用平台Linux(RHEL/CentOS/Debian/Ubuntu)
风险等级高
判读空字段等于空口令;L 表示锁定;NP 表示无口令可登录
检查范围/etc/shadow 全部账号,含系统账号

典型使用场景

  • 交付核查:一次给出「无空口令账号」的结论与原始输出
  • 存量摸底:接手老系统与自建设备时优先跑这一条
  • 应急响应:攻击者清空口令以维持访问是常见手法,属必查项
  • 整改复核:处置完空口令账号后重跑确认清零
  • 周期巡检:纳入固定检查脚本,与口令策略核查一并执行

核查命令

核查命令
awk -F: '($2 == "") { print $1 " EMPTY!" }' /etc/shadow     # 空口令,预期无输出
awk -F: '($2 ~ /^!|^\*/) { print $1 " locked" }' /etc/shadow | head   # 已锁定,正常
passwd -S -a 2>/dev/null | head -30      # 人类可读的账号状态清单
passwd -S -a 2>/dev/null | awk '$2 == "NP" { print $1 }'   # 直接筛出无口令账号

状态码读法

状态含义处置
P存在可用口令正常,继续看有效期与强度
L口令已锁定正常,服务账号常见
NP无口令,可直接登录高危,立即设置口令或锁定
空字段shadow 第二列为空最高优先级处置项
PS 等其他取值部分发行版的额外状态字以本机 passwd 手册为准,避免误判
服务账号(daemon、bin 等)用感叹号或星号锁定属正常,交互账号出现空的第二字段必须立即处置。区分口径要写进报告,否则同一个输出在不同人手里会得出相反结论。
awk 里匹配星号要转义,写成裸星号含义完全不同,会匹配到意外内容;NP 状态比空字段更隐蔽,只查字段的脚本会漏掉,逐行看完再用状态筛选交叉验证。

与相邻条目联动

这条命令的结论很少单独使用:空口令要结合 shadow 权限(是否还有人能取走哈希)、口令策略(新口令是否受约束)、失败锁定(能否被暴力尝试)一起看。四项都达标才算口令这条线收口,只清掉空口令账号属于止血而非整改。

易错点

  • awk 中星号不转义:裸星号在正则里含义不同,锁定清单会出现误匹配,导致状态统计错误
  • 只看空字段忽略 NP:两种状态都表示无需凭据即可登录,只查一种会漏
  • 把系统账号的锁定状态报告成异常:锁定是正常态,误报会拉低报告可信度,区分口径要事先写清
  • 处置后不复核:改口令或锁定之后必须重跑命令确认,人工记录容易与实际状态脱节
  • 忽略账号口令有效期:无空口令但从不改口令的账号同样是风险,需顺带核查 chage 结果

数据来源与参考

  • CIS Linux Benchmark:口令核查
  • 等保 2.0:身份鉴别

相关工具

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