fail2ban 过滤器不匹配 xmlrpc 攻击的任何行

fail2ban 过滤器不匹配 xmlrpc 攻击的任何行

我正在尝试监禁对 Web 服务器进行暴力攻击的主机,从而创建以下/var/log/apache2/error.log形式的(数百行)代码

[Fri Feb 01 11:17:56.158739 2019] [:error] [pid 15870] [client 40.118.7.71:19920] script '/var/www/html/hello.php' not found or unable to stat

/etc/fail2ban/filter.d/foo.conf:

[INCLUDES]
before = apache-common.conf
[Definition]
failregex = ^%(_apache_error_client)s .* not found or unable to stat
            %(_apache_error_client)s
            [[]client (?P<host>\S*)[]]

但是,fail2ban-regex /var/log/apache2/error.log foo.conf这三个更广泛和更宽泛的正则表达式均报告零匹配(但没有错误或警告)。因此fail2ban-client status foo可以预见的是,不会报告监禁。如果没有错误,我无法进一步扩大正则表达式No 'host' group in '<host>'。我从fail2ban自己的派生了这些正则表达式/etc/fail2ban/filter.d/*.conf

什么正则表达式至少可以匹配 error.log 中的每一行,正如我期望第二和第三个正则表达式那样?然后我可以扩展它以更精确地匹配我的特定行。

apache-noscript无论如何,过滤器不应该监禁这些主机吗?它的 failregex ^%(_apache_error_client)s script '/\S*(\.php|\.asp|\.exe|\.pl)\S*' not found or unable to stat\s*$)可能与我的行匹配。

Ubuntu 14.04,fail2ban v0.8.11。

编辑:有关的,我正在尝试使用 fail2ban 捕获针对 /xmlrpc.php 的暴力攻击。这似乎被称为“xmlrpc攻击”。

答案1

一时兴起,我从不同的发行版中导出了正则表达式

failregex = \[client <HOST>:\d+\] script '/\S*(\.php|\.asp|\.exe|\.pl)\S*' not found or unable to stat$

几个小时后,它确实开始监禁攻击者。但我仍然感到惊讶,Apache 的 error.log 中匹配行的必要片段\[client <HOST>:\d+\]不在 中/etc/fail2ban/filter.d/*。版本不匹配?

相关内容