【问题标题】:Fail2ban regex working but not banning. DNS warning insteadFail2ban 正则表达式工作但不禁止。改为 DNS 警告
【发布时间】:2021-06-18 08:58:46
【问题描述】:

所以,我这几天一直在阅读问题,但似乎在任何地方都找不到解决方案。 我正在 Web 服务器实验室进行一些测试,我已经设置了两个 VM(Ubuntu 20.04)服务器和客户端。 在服务器上,我配置了一个 PHP 登录应用程序,当有人登录失败时,它会向我提供此日志。

root@local:/var/log/apache2# tail -f error.log
[Fri Jun 18 10:13:37.657446 2021] [php7:notice] [pid 2465] [client 192.168.1.11:44750] [error] failed login, referer: http://192.168.1.10/index.php
[Fri Jun 18 10:13:41.434454 2021] [php7:notice] [pid 2465] [client 192.168.1.11:44750] [error] failed login, referer: http://192.168.1.10/index.php
[Fri Jun 18 10:13:46.236750 2021] [php7:notice] [pid 2465] [client 192.168.1.11:44750] [error] failed login, referer: http://192.168.1.10/index.php

并且 Fail2Ban v0.11.1 配置为捕获它。 /etc/fail2ban/jail.local:

[login-ban]
enabled   = true
port      = http,https
filter    = login-ban
logpath  = /var/log/apache2/error.log
maxretry = 3
findtime  = 180
bantime = 60

/etc/fail2ban/filter.d/login-ban.conf:

[Definition]
failregex =  ^\[.*\]\s\[.*]\s\[.*].*\[client.*<HOST>\].*\[error\].*
ignoreregex =

现在,如果我使用 fail2ban-regex 检查,正则表达式可以完美运行:

fail2ban-regex /var/log/apache2/error.log /etc/fail2ban/filter.d/login-ban.conf --print-all-matched

我明白了

|- Matched line(s):
|  [Fri Jun 18 10:36:07.312503 2021] [php7:notice] [pid 780] [client 192.168.1.11:44754] [error] failed login, referer: http://192.168.1.10/index.php
|  [Fri Jun 18 10:36:14.417955 2021] [php7:notice] [pid 784] [client 192.168.1.11:44756] [error] failed login, referer: http://192.168.1.10/index.php

但是fail2ban 没有禁止IP,fail2ban.log 给我一个DNS 警告:

2021-06-18 10:50:22,083 fail2ban.ipdns          [2154]: WARNING Determined IP using DNS Lookup: 8 = {'0.0.0.8'}
2021-06-18 10:50:22,085 fail2ban.filter         [2154]: INFO    [login-ban] Found 0.0.0.8 - 2021-06-18 10:50:22

我尝试将 usedns 参数设置为 'no' 和 'raw' 唯一完成的事情是摆脱 dns 警告日志,仍然没有禁止并且没有记录尝试登录的主机。

我希望这是足够的信息,并且这将帮助像我一样的人。

【问题讨论】:

    标签: regex logging fail2ban


    【解决方案1】:

    OFFTOPIC: 请将此问题移至 serverfault 或其他更合适的站点(这与 SO 无关)

    至于您的问题,请停止使用包罗万象(.* 等), e. G。使其工作的一项更正可能是:

    - ... \[client.*<HOST>\] ...
    + ... \[client <HOST>:\d+\] ...
    

    RE .* 是贪心的,所以它匹配尽可能多的字符,&lt;HOST&gt; 可以匹配任何东西(主机名),而不仅仅是地址,如果你的 fail2ban 版本 >= 0.10,最好使用&lt;ADDR&gt; .

    而且由于几个包罗万象,你的整个表达都是“脆弱的”(所以锚并没有真正占据)。

    【讨论】:

    • 哦,伙计,很抱歉放错了位置……我是这些社区的新手。无论如何,非常感谢您的解决方案有效,现在该服务已被禁止。我将继续将问题移至服务器故障。顺便说一句,我做了您建议的更改,并且将 [client 之前的所有内容都替换为一个 [.* 并且效果很好,再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多