You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fail2ban正则匹配正常但未封禁IP且出现DNS警告如何解决

Fail2Ban IP识别错误、封禁失效问题解决方案

核心原因:自定义过滤规则的正则表达式未正确捕获客户端IP地址。之前出现的DNS警告是Fail2Ban未从正则匹配结果中获取到合法IP,尝试将捕获到的其他异常字段做DNS解析生成,修改usedns仅能跳过解析步骤,无法解决IP捕获的本质问题。

解决步骤

  • 第一步:修正自定义过滤规则的正则表达式

    Fail2Ban要求过滤正则必须包含内置的<HOST>捕获标记,用于提取客户端IP。你之前的正则没有将日志中的IP位置对应到<HOST>,才会出现捕获到异常值、解析出0.0.0.8的问题。
    举个配置示例,若Apache错误日志中登录失败的条目格式为:

    [Tue Jun 11 14:32:20.123456 2024] [php:error] [pid 1234] [client 192.168.1.100:54321] 登录失败,用户名test密码错误
    对应filter.d/login-ban.conf的正则应该写为:
    \[client <HOST>:\d+\] 登录失败.*
    验证正则的IP捕获效果,执行命令:
    fail2ban-regex -v /var/log/apache2/error.log /etc/fail2ban/filter.d/login-ban.conf
    确认输出中的IP Address list列表为真实的客户端IP,而非异常的0.0.0.8即表示正则正确。

  • 第二步:校验jail.local中规则配置

    打开jail.local检查login-ban规则的以下配置项:

    • enabled = true:确保规则已启用
    • logpath = /var/log/apache2/error.log:确保日志路径配置正确
    • bantime、findtime、maxretry参数配置合理,未设置为0导致封禁不生效
    • 确认banaction与服务器使用的防火墙匹配,使用iptables可留默认值,使用ufw需指定为banaction = ufw
  • 第三步:重载服务验证效果

    配置修改完成后执行命令重载Fail2Ban:
    systemctl reload fail2ban
    执行以下命令查看规则运行状态:
    fail2ban-client status login-ban
    若IP list中出现触发规则的客户端IP,即表示功能恢复正常。

内容的提问来源于stack exchange,提问作者Jas Har

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 11:24:04