核心是离线比对哈希与弱口令字典;需先用root权限提取/etc/shadow,再以john --wordlist配合--show识别明文密码,同时结合last、auth日志和chage等命令综合研判高危账户。

Linux 中检查弱密码用户账号,核心是比对系统密码哈希与常见弱口令组合。不能直接读取明文密码,但可通过离线破解方式识别风险账户。
查看可疑账户与登录记录
先快速定位可能异常的用户:
- 运行 cat /etc/passwd | grep '/bin/bash' 或 grep "bash$" /etc/passwd,列出所有可交互登录的用户
- 用 last -n 20 或 lastlog -t 30 查看近30天活跃登录情况,留意陌生IP或非工作时间登录
- 执行 less /var/log/secure | grep "Accepted" | tail -20(CentOS/RHEL)或 less /var/log/auth.log | grep "Accepted" | tail -20(Ubuntu/Debian),确认成功登录来源
- 检查是否存在无密码账户:awk -F: '$2 == "" {print $1}' /etc/shadow
用 John the Ripper 离线检测弱口令
这是最常用、最有效的技术手段,适用于本地分析:
- 复制 shadow 文件(需 root 权限):cp /etc/shadow /root/shadow_bak
- 进入 John 运行目录(如 /john/run),执行:./john /root/shadow_bak
- 若想用字典加速(推荐):./john --wordlist=password.lst /root/shadow_bak
- 查看结果:./john --show /root/shadow_bak,输出格式为 用户名:明文密码
注意:John 默认支持 DES、MD5、SHA-256 等主流加密方式,对 CentOS 7+ 和 Ubuntu 18.04+ 的 shadow 条目兼容性良好。
结合系统策略自查密码强度
即使没被爆破出,不符合策略的密码也属弱口令范畴:
- 查密码修改时间:chage -l username,重点关注 Last password change 和 Password expires
- 检查是否启用复杂度控制:grep -E "pam_pwquality|pam_pwcheck" /etc/pam.d/system-auth
- 确认默认策略:grep -E "PASS_MIN_LEN|PASS_MAX_DAYS" /etc/login.defs,标准应为长度≥8、有效期≤90天
- 人工核对高危账户(如 root、mysql、tomcat、admin)密码是否满足大小写字母+数字+特殊符号
使用安全工具批量扫描(适合多台服务器)
对运维管理环境更高效:
- Nessus:配置“SSH Weak Password Detection”插件,远程验证登录凭证
- Hydra:针对特定服务暴力测试,例如 hydra -L users.txt -P pass.txt ssh://192.168.1.100
- 云平台(如阿里云云安全中心):自动采集 SSH 登录日志+shadow 哈希比对泄露字典,实时告警命中项
扫描后务必验证结果——真正修复前,不要仅依赖工具提示“未发现”。


















