Fail2ban日志过滤,减少误封正常访客IP

Fail2ban日志过滤的核心目标是让封禁规则只匹配真实的恶意行为,而不是把搜索引擎爬虫、CDN回源IP或登录成功的正常访客一起封掉。
如果你发现网站访客突然无法访问、后台登录被拦截,或者Nginx日志里出现大量无意义的封禁记录,大概率是过滤规则匹配范围过宽。
下面按零基础也能照做的顺序,讲清楚怎么调整。

先判断误封来自哪类日志

Fail2ban的工作方式是读取日志、用正则匹配失败记录、达到阈值后调用防火墙封IP。
误封通常发生在三个环节:

  • 正则太宽:failregex写得太泛,把正常请求也识别成攻击。
  • 白名单缺失:没有把CDN、监控、公司出口IP加入ignoreip。
  • 阈值太低:短时间内的正常重试被当成暴力破解。

先确认你的Fail2ban监控的是哪个日志。
执行:

fail2ban-client status
fail2ban-client status sshd

输出里的File list会显示当前jail读取的日志路径。
如果监控的是Nginx,常见日志路径在/www/wwwlogs/或/var/log/nginx/下。
确认路径后再去改对应jail的过滤规则。

配置ignoreip白名单,先保住正常来源

在改正则之前,先把确定不会攻击的来源加入白名单,这是减少误封最直接的一步。

编辑jail配置文件,宝塔面板路径为/etc/fail2ban/jail.local,也可以直接在宝塔安全模块里找到Fail2ban设置。
在对应jail下增加或修改:

[sshd]
enabled = true
ignoreip = 127.0.0.1/8 ::1 你的CDN回源IP 你的办公网出口IP

如果使用Nginx防护,同样在[nginx-http-auth]或自定义jail里加上ignoreip。
改完后重载:

fail2ban-client reload
fail2ban-client status sshd

查看Ignore list是否包含你添加的IP。白名单只放确定可信的地址,不要直接写0.0.0.0/0,那等于关闭封禁。

调整failregex,缩小匹配范围

如果白名单加了还是误封,问题多半在正则。
以Nginx的nginx-http-auth为例,默认规则可能把401以外的状态码也匹配进去。
查看当前过滤器文件:

cat /etc/fail2ban/filter.d/nginx-http-auth.conf

重点看failregex这一行。
如果它只写了user .* was not found这类宽泛描述,建议改成更具体的匹配,例如只匹配密码错误:

failregex = ^\s*\S+ \S+ \S+ \[\] \"GET .*\" 401

改完后用fail2ban-regex测试,不要直接上线:

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-http-auth.conf

输出里会列出匹配到的行数和示例。如果匹配行里出现了正常访客的请求,说明正则还是太宽,继续收紧。

调高阈值和封禁时间,给正常操作留余地

有些误封不是规则错,而是阈值太敏感。
比如后台登录输错两次密码就被封,对正常用户不友好。

在jail.local里调整:

maxretry = 5
findtime = 600
bantime = 3600

含义是10分钟内失败5次才封,封1小时。
根据你的业务调整,面向公众的网站建议maxretry不低于5,findtime不低于300秒。
改完同样先reload再观察。

验证效果和回滚方法

调整后不要只看“没封人”就结束,要做两步验证:

  1. 用fail2ban-client status sshd查看Currently banned数量是否明显下降。
  2. 手动触发一次正常登录失败,确认在阈值内不会被封。

如果调整后攻击量上升,可以临时回滚:

cp /etc/fail2ban/jail.local.bak /etc/fail2ban/jail.local
fail2ban-client reload

建议每次改配置前先备份jail.local和对应的filter文件。误封和漏封是平衡问题,优先保证正常访客可访问,再逐步收紧规则。

几个容易踩的坑

  • 只加白名单不改正则:CDN回源IP加了,但正则仍然匹配正常请求,误封依旧。
  • 在jail.conf里改配置:升级时会被覆盖,应该改jail.local。
  • 忘记reload:改完配置不执行fail2ban-client reload,规则不会生效。
  • 忽略IPv6:如果服务器启用了IPv6,白名单里也要加::1和对应网段。

常见疑问

问:加了ignoreip还是被封怎么办?
先确认改的是当前生效的jail文件,再执行fail2ban-client status 你的jail名看Ignore list是否包含该IP。如果不在,说明配置没加载。

问:failregex改完怎么确认不会误伤?
用fail2ban-regex跑一遍真实日志,重点看匹配结果里有没有正常访客的请求行。

问:宝塔面板里能直接改吗?
可以,宝塔的Fail2ban管理界面支持编辑jail配置和查看封禁列表,但复杂正则仍建议用命令行测试后再保存。

减少Fail2ban误封正常访客IP的关键顺序是:先加白名单,再收紧failregex,最后调阈值。
三步都做完后再观察封禁列表,基本能把误封降到可接受范围。

分享到:
上一篇
SSH客户端配置文件,简化多服务器登录
下一篇
UFW日志分析,统计防火墙拦截访问来源:UFW日志分析
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意