首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fail2ban regex起作用了,但没有禁止。代替DNS警告

问Fail2ban regex起作用了,但没有禁止。代替DNS警告
EN

Server Fault用户
提问于 2021-06-18 11:56:50
回答 1查看 507关注 0票数 1

我在fail2ban中遇到了以下问题(已经解决了),并将它错误地放置在堆栈溢出中,所以我现在将其放在这里。

因此,我已经阅读了几天的问题,似乎在任何地方都找不到解决办法。我正在一个web服务器实验室上做一些测试,我已经设置了两个‘m(Ubuntu20.04)服务器和客户机。在服务器上,我配置了一个PHP登录应用程序,当有人登录失败时,它会给我这个日志。

代码语言:javascript
复制
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.10.2来捕获它。/etc/Fail2ban/监狱。本地:

代码语言:javascript
复制
[login-ban]
enabled   = true
port      = http,https
filter    = login-ban
logpath  = /var/log/apache2/error.log
maxretry = 3
findtime  = 180
bantime = 60

/etc/故障2ban/filter.d/登录-ban.conf:

代码语言:javascript
复制
[Definition]
failregex =  ^\[.*\]\s\[.*]\s\[.*].*\[client.*<HOST>\].*\[error\].*
ignoreregex =

现在,如果我检查Fail2Ban-regex,这个regex就能很好地工作了:

代码语言:javascript
复制
fail2ban-regex /var/log/apache2/error.log /etc/fail2ban/filter.d/login-ban.conf --print-all-matched

我得到了

代码语言:javascript
复制
|- 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警告:

代码语言:javascript
复制
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警告日志,仍然没有禁止和记录试图登录的主机。

我希望这是足够的信息,这将帮助像我一样在那里的人。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-06-18 12:00:24

解决方案

User @sebres回答我:

只需停止使用catch (.*等),例如,要使其工作的一项更正可能是

代码语言:javascript
复制
- ... \[client.*<HOST>\] ...
+ ... \[client <HOST>:\d+\] ...

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

而且您的整个表达式都是“易受攻击”的,因为有几个陷阱(因此锚没有被真正占据)。

*所以我做了他建议的改变,结果是这样的:

代码语言:javascript
复制
^\[.*\[client <ADDR>:\d+\].*\[error\].*

现在一切都正常运转了。希望能帮上忙!

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1067107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档