首页/安全/安全加固速查/root 账户锁定保护(even_deny_root 取舍)
口令与认证策略55 条

root 账户锁定保护(even_deny_root 取舍)

默认 root 不参与锁定;开启 even_deny_root 可防 root 逐点爆破,但一旦被锁必须本地控制台恢复,需权衡场景。

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

root 要不要参与锁定

faillock 记录失败认证次数,超过阈值后锁定账户。默认策略下 root 不参与锁定,目的是避免管理员把自己锁死;开启 even_deny_root 能防 root 被逐点爆破,代价是一旦锁定,只能通过本地控制台或救援模式恢复。

基本信息

加固项root 认证加固
适用平台Linux(pam_faillock)
配置文件/etc/security/faillock.conf
关键参数even_deny_root、root_unlock_time、deny、unlock_time
前置条件存在带外管理或本地控制台
风险等级中

典型使用场景

  • 仍然允许 root 直接登录的服务器:建议开启锁定保护,防逐点爆破
  • 已禁止 root 远程登录的环境:必要性下降,可把精力放在普通账户上
  • 高价值主机:与 MFA、来源限制组合使用
  • 合规核查:账户锁定策略需要覆盖到特权账户
  • 事故复盘:确认锁定是否由攻击尝试而非运维误操作引发

开启与核查

开启与核查
# 让 root 也参与锁定,并单独设置较短的解锁时间
printf '%s\n' 'even_deny_root' 'root_unlock_time = 300' >> /etc/security/faillock.conf
# 清理历史失败计数,避免继承旧数据
faillock --user root --reset
# 查看当前失败与锁定状态
faillock --user root

关键参数取值

参数作用取值建议
deny连续失败多少次触发锁定3 到 5 次,过低会放大误操作代价
unlock_time普通账户自动解锁秒数600 到 1800
even_deny_root让 root 也参与锁定按是否允许 root 登录决定
root_unlock_timeroot 的单独解锁时间短于 unlock_time,便于紧急恢复
开启前确认存在带外管理或本地控制台:root 被锁又没有本地恢复手段时,只能进救援模式处理。
若已经配置 PermitRootLogin 禁止 root 远程登录,root 无法通过 SSH 被爆破,此时开启 even_deny_root 的收益明显下降。
锁定阈值设得过低会让运维的一次手误变成业务中断事件,先评估日常操作习惯再定值。
faillock 与 sshd 的 MaxAuthTries 是两层限制:前者按账户累计失败次数,后者按单条连接计数,配合使用才能同时覆盖自动化爆破与慢速尝试。

落地检查点

  • 确认带外管理与本地控制台可用,明确恢复操作人
  • 对比整改前后的失败计数与锁定状态,确认策略真的生效
  • 把账户锁定事件接入日志告警,区分攻击尝试与运维误操作
  • 记录 root_unlock_time 的取值依据,纳入变更评审

易错点

  • 开启 root 锁定却没有带外通道:正常运维的误操作会把唯一的管理入口锁死
  • 不给 root 单独设置解锁时间:root 与其他账户同等待遇,紧急恢复窗口被拉长
  • 没有清理历史失败计数:只改了配置,但账户仍受旧计数影响,看起来像没生效
  • 只做认证侧锁定不做日志联动:锁定事件没有告警,攻击尝试被静默吸收

数据来源与参考

  • man 5 faillock.conf:even_deny_root
  • CIS Benchmark:root 账户保护条目

相关工具

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