升级系统默认密码哈希算法为SHA-512需三步:修改PAM配置(/etc/pam.d/passwd中设sha512及rounds=65536)、设置/etc/default/passwd中CRYPT=sha512、所有用户重设密码;缺一不可,否则/etc/shadow仍为旧算法。

要把系统默认密码哈希算法升级为 SHA-512,核心就三步:改 PAM 配置、设全局默认算法、让每个用户重设一次密码。缺一不可,否则 /etc/shadow 里还是老算法。
修改 PAM 密码模块配置
编辑 /etc/pam.d/passwd 文件:
- 找到类似
password required pam_unix.so md5 shadow nullok的行 - 把
md5替换为sha512,并必须加上rounds=65536 - 确保这行没被注释(开头不能有
#),且是唯一生效的pam_unix.so密码行 - 最终应形如:
password required pam_unix.so sha512 shadow nullok rounds=65536
注意:rounds=65536 不是可选参数——省略它会退回到仅 5000 轮,默认强度下降超 13 倍,暴力破解成本大幅降低。
设置 passwd 和 useradd 的默认加密方式
编辑 /etc/default/passwd:
- 查找
CRYPT=开头的行(例如CRYPT=md5) - 将其改为:
CRYPT=sha512 - 该设置只影响新创建用户(
useradd或passwd -u新建时),对已有账户无效
必须重设密码才能生效
配置改完 ≠ 密码立刻变 SHA-512。系统不会自动批量更新旧密码哈希值。
- 普通用户执行:
passwd(输入当前密码后设新密码) - 管理员为他人重设:
sudo passwd username - 验证是否成功:查看
/etc/shadow中对应用户的第二字段,开头是$6$即表示已用 SHA-512(如$6$salt$hash...)
若仍看到 $1$(MD5)或 $5$(SHA-256),说明该用户尚未重设密码,配置未触发哈希重算。
常见错误提醒
很多人卡在这几个地方:
- 只改了 PAM,忘了改
/etc/default/passwd→ 新建用户仍用 MD5 - 加了
sha512却漏写rounds=65536→ 安全性大打折扣 - 改完配置就以为完成,没让所有用户重设密码 →
/etc/shadow里全是旧哈希
现代 CPU 执行一次 SHA-512+65536 轮毫无压力,登录体验完全不受影响;但对攻击者而言,每次爆破尝试都必须完整跑满 65536 轮——这才是真正拖慢离线破解的关键。

















