我目前正在设置一个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的攻击。