![Fail2Ban RegEx 有效,但过滤器无效](https://linux22.com/image/792521/Fail2Ban%20RegEx%20%E6%9C%89%E6%95%88%EF%BC%8C%E4%BD%86%E8%BF%87%E6%BB%A4%E5%99%A8%E6%97%A0%E6%95%88.png)
我的计划是禁止所有访问我的网络服务器,这些访问会反复产生 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 = ^.*"(GET|POST|HEAD).*" (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 正在日志记录。