禁止访问xmlrpc.php保护wordpress免受攻击

检查WEB服务器的log记录,你会发现如下大量的记录:
"POST /xmlrpc.php HTTP/1.1″ 200 434 "-" "-"

这说明有机器频繁的利用xmlrpc.php文件在尝试攻击你的wordpress
攻击者2~3秒就会发送一个请求,你的系统资源就会慢慢的给消耗掉,最后mysql就会崩溃掉。

xmlrpc是wordpress的API, 给开发者开发手机apps、桌面应用程式或其他服务时, 可以跟wordpress沟通, 从远端能达到很多需要登入wordpress后台才能做的工作。

因为我不需要用到xmlrpc这功能,所以可以直接设置禁止访问xmlrpc.php文件,

Apache服务器只需在.htaccess文件加入如下代码:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
然后重启apache服务即可。

Nginx服务器只需在你的配置文件加入如下代码:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}

然后重启nginx服务即可。
注,因为禁止访问xmlrpc.php文件后,若直接在浏览器打开此文件会返回nginx的版本号,为了安全,最好把nginx的版本号也隐藏了,只需修改/etc/nginx/nginx.conf文件,将server_tokens off;的注释去掉然后重启nginx服务即可。