VPS测评 VPS推荐 VPS优惠
Linux运维

如何禁用xmlrpc.php防止网站被暴力破解

XML-RPC 是一种能够在 WordPress 和其他系统之间进行通信的规范。早期它被用于和其他博客平台之间的通讯,支持trackbacks和pingbacks。虽然现在已经过时了,但是根目录的xmlrpc.php文件仍然存在。黑客可能会利用这个文件,对我们的网站发起DDOS攻击和密码爆破。所以为了安全起见,最好禁止所有的用户访问这个文件。

之前观察网站日志的时候,还真的发现有个无聊的人在那里不停的发起下面这种POST请求

POST //xmlrpc.php HTTP/1.1

下面我会介绍目前两种主流的web服务器如何来禁止用户访问某个特定的资源

Nginx

由于我使用的是nginx,所以我直接在配置文件加了一条location指令限制用户访问这个文件

拒绝所有人访问结尾包含xmlrpc.php的文件

    location ~ /xmlrpc\.php$ {
      deny all;
  }


  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

  location ~ \.php$ {
      root           /var/www/wordpress;
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include       fastcgi_params;
  }

这里有个细节就是,当location的优先级相同时(都是 ~),nginx会从上到下读取配置文件直到匹配到符合的结束。所以这个拒绝指令必须放在我的PHP反向代理配置的前面,否则的话当有人请求xmlrpc.php它会优先匹配到 .php的location块然后停止继续匹配。如果你使用的是“=” 就不存在这个问题,因为=的优先级最高。

location的匹配优先级从高到低

=, ^~, ~/~*, 不带符号

修改完配置文件后重新加载

nginx -s reload
在浏览器测试一下能不能访问,看到403 Forbidden就是配置好了

Apache

只需要在服务器配置文件里加上这句

<Files "xmlrpc.php">
Require all denied
</Files>
测试效果
未经允许不得转载:青蛙主机 » 如何禁用xmlrpc.php防止网站被暴力破解

VPS相关常用工具

PING测试工具自用毛子接码站