设置 我在 ubuntu 服务器上运行 apache。我创建了一个 fail2ban 规则,当他们请求太多页面太快时禁止 ip。
# Fail2ban Rule
failregex = ^.*?(:80|:443) <HOST> - .* "(GET|POST|HEAD).*$
ignoreregex =.*(.ico|.jpg|.png|.gif|.js|.css|.woff|.mp4)
findtime = 30
maxretry = 10
目标:
我想针对这个新的 fail2ban 规则运行一个旧的 apache 日志,以便我可以查看它是否会禁止任何合法请求。
尝试#1 我认为我可以使用fail2ban-regex 来获取可能被禁止的用户列表,但它没有该功能。
尝试#2 我认为将历史日志回显到fail2ban 当前正在观看的日志中会使它们被解析。在修复了一个小挂断后,忽略了具有旧日期的日志行(通过向它们添加一年来修复)fail2ban 开始解析它们并禁止其中的 IP。但是,我只需要查看第一个被禁止的 IP 就知道它是错误的。有问题的 IP 总共只发出了 10 个请求,而且它们在时间上并不接近。我只能假设 fail2ban 没有使用日志行的时间戳来确定有效性,这使得这种测试方法失败了。
# echo example
zcat other_vhosts_access.log.8.gz | sed -n 's/\/2022:/\/2032:/p' >> /var/log/apache2/fail2ban_test.log
结论 由于我之前的两次尝试都失败了,我想不出一种理智的方法来解决这个问题。有人可以推荐一种方法来实现我所追求的吗?或者深入了解为什么我的第二个解决方案不起作用。