Fail2Ban的正则expression式是错误的?

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

 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 

而我的filter是:

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

我试图找出正则expression式不捕获日志尝试。 任何洞察什么<HOST>实际上代表?

<HOST>正则expression式非常聪明。 除了其他知识之外,它知道一个IP地址由4个八位字节组成,每个八位字节可以有一个介于0和255之间的值。在问题1.99中的IP地址。 437 .201不符合此规范,并且不会匹配<HOST>正则expression式。 如果你改变第二个八位组以符合规范,那么你的正则expression式按预期工作

 $ 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] 

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

只要把这个代码放在你的.htaccess文件中:

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

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