首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在fail2ban中回溯测试历史日志

在fail2ban中回溯测试历史日志
EN

Server Fault用户
提问于 2022-02-04 20:02:15
回答 1查看 344关注 0票数 0

设置我正在一个ubuntu服务器上运行apache。我已经创建了一个fail2ban规则,当他们请求太多页面太快时,它禁止ip。

代码语言:javascript
复制
# Fail2ban Rule
failregex = ^.*?(:80|:443)  - .* "(GET|POST|HEAD).*$
ignoreregex =.*(.ico|.jpg|.png|.gif|.js|.css|.woff|.mp4)

findtime = 30
maxretry = 10

目标:我希望根据这个新的fail2ban规则运行一个旧的Apache日志,这样我就可以看到它是否禁止了任何合法的请求。

Attempt #1我想我可以使用fail2ban-regex获得一个潜在禁用用户的列表,但它没有这种功能。

Attempt #2我认为将历史日志回显到fail2ban当前监视的日志中会使它们得到解析。在修复了日志行被忽略的小挂件(通过添加一年的时间来修正日志行)之后,fail2ban开始解析它们,并禁止it使用。然而,我只需要看一下第一个被禁止的IP就知道它是错误的。所讨论的IP总共只发出了10次请求,而且它们在时间上没有任何接近的地方。我只能假设fail2ban没有使用日志行的时间戳来确定有效性,这使得这个测试方法成为泡影。

代码语言:javascript
复制
# echo example
zcat other_vhosts_access.log.8.gz | sed -n 's/\/2022:/\/2032:/p' >> /var/log/apache2/fail2ban_test.log

结论由于我之前的两次尝试都失败了,我想不出一个正确的方法来解决这个问题。有人能推荐一种方法来达到我想要的目标吗?或者深入了解我的第二个解决方案不起作用的原因。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-02-14 16:15:14

企图#1

直接看到它还没有,但是..。

尽管fail2ban-regex的最新版本支持输出参数,所以您可以这样做:

代码语言:javascript
复制
fail2ban-client set "$jail" banip $(
   fail2ban-regex -o 'ip' /var/log/path/some.log some-filter | sort --unique | tr '\n' ' '
)

只有当您发现任何IP造成故障( regardless /time)时,才适合使用。在你的情况下,它是没有意义的,至少没有额外的预处理。

第二次尝试,我认为将历史日志回显到fail2ban当前正在监视的日志中,会使它们得到解析。

因为fail2ban没有真正正确地考虑消息的时间,所以它不能工作:要么它太旧(如果未经修改记录),要么它不正确(如果现在记录为故障时间,因为您需要在实际使用中考虑maxretryfindtime )。请注意,fail2ban将在开始时寻求now - findtime (因为其他消息对它不感兴趣,因为太过时了),请参见https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-758036512

无论如何,现在几乎不可能有现成的库存fail2bans工具(至少除非上述RFE的"rescan“工具得以实现和发布)。

但是,由于fail2ban (以及fail2ban-regex)是python中的一个模块,所以可以使用一个过滤器,从python编写禁令到某些日志,或者直接将它们发送到主fail2ban实例,请参阅https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-1039267423中的脚本示例。

还请注意,您的过滤器非常易受攻击且速度慢,最好尽可能精确地重写它,如下所示:

代码语言:javascript
复制
failregex = ^"" \S+ \S+ [^"]*"[A-Z]+ /(?:\S+/)*[^\.]*(?:\.(?!ico|jpg|png|gif|js|css|woff|mp4)\w+)? [^"]+"

最后但并非最不重要的是,你为什么要这么做?如果带有这种过滤器的监狱处于活动状态,并且这些爬虫返回,那么一旦它们在findtime (配置为监狱)期间造成D13失败,就会被禁止。预防性禁止并不是真正需要的,它只会用大量的is来困扰你的网络过滤子系统(他们可能再也不会回来了)。

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

https://serverfault.com/questions/1092707

复制
相关文章

相似问题

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