linux检查弱密码需提取/etc/shadow哈希并用john the ripper离线破解,先复制限权,再筛查uid=0、空密码等高风险账户,最后强制改密、设有效期及启用pam复杂度策略。

Linux 中检查弱密码用户账号,核心是获取加密口令哈希并用专业工具比对破解。直接看 /etc/shadow 只能看到密文,无法判断强弱;必须结合字典或暴力方式验证是否易被攻破。
提取 shadow 文件用于离线分析
只有 root 能读取 /etc/shadow。先安全复制一份供后续检测:
sudo cp /etc/shadow /tmp/shadow_check-
sudo chmod 600 /tmp/shadow_check(限制权限,防泄露) - 确认文件中含有效密码字段:每行第二段不为
!或!!,否则该账户被锁定或无密码,无需测强度
用 John the Ripper 检测弱口令
John 是最常用、支持广泛哈希算法的开源工具。操作分三步:
- 安装:Ubuntu/Debian 上执行
sudo apt install john;CentOS/RHEL 用sudo yum install john或编译源码 - 运行基础检测:
john /tmp/shadow_check(自动启用内置规则和小字典) - 查看结果:
john --show /tmp/shadow_check,输出形如admin:123456:18059:0:30:7:::即表示该用户密码已被破解
补充人工排查线索
工具检测前,可快速筛查高风险账户:
- 查 UID=0 的非 root 用户:
awk -F: '$3==0 {print $1}' /etc/passwd - 查最近改密的账户:
sudo awk -F: '$3 > 0 && $4 > 0 {print $1, "last changed:", $3}' /etc/shadow | xargs -n3(需换算天数为日期) - 查空密码或锁定状态:
sudo awk -F: '$2 ~ /^!|^!!$/ {print $1, "status:", $2}' /etc/shadow
加固建议同步做
发现弱口令后,不能只改密码,还要收紧策略:
- 强制下次登录改密:
sudo chage -d 0 username - 设密码有效期:
sudo chage -M 90 username - 启用 PAM 密码复杂度:编辑
/etc/pam.d/common-password,加入password requisite pam_pwquality.so retry=3 minlen=10 difok=3











