首页/安全/等保与合规速查/整改实操:fail2ban 自动封禁暴力破解来源
测评与整改57 条

整改实操:fail2ban 自动封禁暴力破解来源

对 SSH 等暴露服务启用 fail2ban:按失败频率自动封禁来源 IP,降低口令爆破成功率,形成动态防护。

等保与合规速查安全更新于 2026-10-13

fail2ban 怎么用

fail2ban 通过监控日志中的认证失败记录,按失败频率自动封禁来源 IP,用于 SSH 等暴露服务,能显著降低口令爆破的成功率,形成动态防护。配置写在 jail.local(不要直接改 jail.conf,升级会被覆盖),重点参数是 bantime、findtime、maxretry 与 ignoreip;封禁记录接入告警后,运营环节也有痕迹可查。

基本信息

作用按失败频率自动封禁来源 IP
配置文件/etc/fail2ban/jail.local(覆盖 jail.conf)
关键参数bantime、findtime、maxretry、ignoreip
常用操作查看状态、手动解封、维护白名单
日志依赖需与实际系统日志路径匹配(auth.log 或 secure)
与 faillock 关系来源级封禁与账户级锁定互补

典型使用场景

  • SSH 暴露公网时的动态防护
  • 与账户锁定策略配合形成双重限制
  • 误封排查与白名单维护
  • 封禁记录的留存与告警接入
  • 站点被批量撞库时的应急加固

jail.local 配置

jail.local 配置
# /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 10.10.0.0/24   # 白名单:本机与运维网段
bantime = 1h        # 封禁时长 1 小时
findtime = 10m      # 统计窗口 10 分钟
maxretry = 5        # 失败 5 次即封禁

[sshd]
enabled = true

运行与查询

运行与查询
# 开机自启并立即启动
systemctl enable --now fail2ban
# 查看 sshd 状态、当前封禁数量与 IP
fail2ban-client status sshd
# 手动解封某个来源 IP
fail2ban-client set sshd unbanip 203.0.113.10

关键参数

参数含义建议取值
bantime封禁时长1 小时起,按攻击强度调整
findtime失败计数统计窗口10 分钟
maxretry窗口内允许失败次数5
ignoreip永不封禁的来源本机与运维网段
ignoreip 未配置运维网段,可能把自己人封在门外;变更访问策略前先确认白名单覆盖范围。
只依赖 fail2ban 不做日志告警,持续低频尝试(每次低于阈值)不会被发现,建议把封禁事件接入告警。

常见牢笼与用途

牢笼监控对象适用场景
sshdSSH 认证失败日志服务器远程登录防护
nginx-http-authWeb 基础认证失败管理后台口令保护
nginx-limit-req请求频率超限接口暴力请求缓解
postfix邮件认证失败邮件服务暴露场景
查看当前生效的牢笼与全局参数用 fail2ban-client status 与 fail2ban-client get 系列命令,改动配置后先 fail2ban-client reload 再验证状态。
封禁动作依赖本机防火墙后端:确认 firewalld、iptables 或 nftables 中至少有一项可用,否则策略生效但流量不会被真正丢弃。

易错点

  • ignoreip 未配运维网段:可能把自己人封在门外
  • 只依赖 fail2ban 不做告警:低频持续尝试不会被发现
  • 直接改 jail.conf:升级时被覆盖,配置丢失
  • 日志路径与实际系统不匹配:牢笼找不到日志,防护静默失效
  • 只封不禁用口令登录:没有密钥认证与来源限制,爆破仍会持续消耗资源

数据来源与参考

  • fail2ban 官方文档(jail.local 配置)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌