Fail2Ban RegEx 有效,但过滤器无效

Fail2Ban RegEx 有效,但过滤器无效

我的计划是禁止所有访问我的网络服务器,这些访问会反复产生 404 错误,并且显然只进行一些扫描

为此我尝试

fail2ban-regex /var/log/apache2/otheraccess.log '^<HOST>. - - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$'

报告说我有几百个匹配项。但是当我将此正则表达式添加到我的 fail2ban-filter 中时

failregex = ^<HOST>.* - - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$
ignoreregex =.*(robots.txt|favicon.ico|jpg|png|sitemap|sitemap.txt|sitemap.xml.gz|sitemap_index.xml) to my filter, fail2.ban

它什么也没找到:

# fail2ban-client status apache-404
Status for the jail: apache-404
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/apache2/access.log /var/log/apache2/other_vhosts_access.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

那么...知道原因可能是什么吗/在哪里可以查看为什么在 fail2ban 中忽略规则?

谢谢!

答案1

让我们重新开始,请删除你所做的所有配置


您能否在 filter.d 中创建一个这样的过滤器

failregex = ^.*&quot;(GET|POST|HEAD).*&quot; (404|444|403|400) .*$
ignoreregex =

prevent-apache-404.conf in /etc/fail2ban/filter.d

然后在 /etc/fail2ban/jaild.d/apache404.conf 中创建一个监狱

[prevent-apache-404]
enabled   = true
port      = http,https
filter    = prevent-apache-404
logpath   = /var/log/apache*/*access.log
findtime  = 600
maxretry  = 4

然后重启fail2ban并检查状态

sudo service fail2ban stop
sudo service fail2ban start
sudo service fail2ban status
sudo fail2ban-client status
sudo fail2ban-client status prevent-apache-404

注意:最新的 Debian(bookworm)发行版将 systemd-journald 日志记录设为默认设置,因此请确保 rsyslog 正在日志记录。

相关内容