Fail2Ban 正则表达式错误吗?

Fail2Ban 正则表达式错误吗?

我目前正在设置一个过滤器来过滤针对名为的文件的 POST 攻击xmlrpc.php。日志访问中应监控的请求如下所示:

1.99.437.201 - - [01/Feb/2016:01:57:14 +0000] "POST /xmlrpc.php HTTP/1.1" 200 631 "-" "curl/7.30.0"

监狱长这样:

[xmlrpc]
enabled = true
filter = xmlrpc
action = iptables[name=xmlrpc, port=http, protocol=tcp]
logpath = /srv/www/logs/access.log
bantime = 43600
maxretry = 5

我的过滤器是:

[Definition]
failregex = ^<HOST> .*POST .*xmlrpc\.php.*
ignoreregex =

我正在尝试找出正则表达式无法捕获日志尝试的原因。您能解释一下这<HOST>到底代表什么吗?

答案1

<HOST>则表达式非常智能。除其他事项外,它还知道 IP 地址由 4 个八位字节组成,每个八位字节可以具有 0 到 255 之间的值。问题中的 IP 地址是 1.99。437.201 不符合此规范,因此不会匹配<HOST>正则表达式。如果您更改第二个八位字节以满足规范,则您的正则表达式将按预期工作

$ cat log
1.99.237.201 - - [01/Feb/2016:01:57:14 +0000] "POST /xmlrpc.php HTTP/1.1" 200 631 "-" "curl/7.30.0"

$ fail2ban-regex  log "^<HOST> .*POST .*xmlrpc\.php.*"

Running tests
=============

Use   failregex line : ^<HOST> .*POST .*xmlrpc\.php.*
Use         log file : log
Use         encoding : UTF-8


Results
=======

Failregex: 1 total
|-  #) [# of hits] regular expression
|   1) [1] ^<HOST> .*POST .*xmlrpc\.php.*
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [1] Day(?P<_sep>[-/])MON(?P=_sep)Year[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 1 lines, 0 ignored, 1 matched, 0 missed [processed in 0.00 sec]

答案2

我使用更简单的方法来阻止所有xmlrpc.php攻击。

只需将此代码放入您的.htaccess文件中:

<Files "xmlrpc.php">
Order Allow,Deny
Deny from all
</Files>

此代码将保护您的 Wordpress 免受所有僵尸网络的攻击。

相关内容