禁止WordPress 的 xmlrpc.php 经常被扫描

经常有小伙伴说,在服务器的访问记录里面看到 WordPress 的 xmlrpc.php 被大量请求

这肯定不正常,这是因为什么?有什么办法处理吗?

XML-RPC 安全隐患

这是因为 xmlrpc.php 文件存在安全隐患,给攻击者提供了便利,所以攻击者的一项工作就是扫描 xmlrpc.php 文件,以便可以:

1. XML-RPC pingbacks 攻击,攻击者可以利用 XML-RPC 的 pingbacks 方法对 WordPress 实行 DDoS (分布式拒绝服务)攻击,如果你使用了 CDN 服务商的 DNS 保护服务,攻击者还可以使用 pingbacks 方法获取站点的真实 IP,剩下不用我说了吧。?

2. 即使 WordPress 设置了登录次数限制,但是使用 XML-RPC 暴力破解 WordPress 的账号密码却逃过了限制,并且 XML-RPC 一次请求就可以执行上百次密码的暴力破解。?

彻底屏蔽 XML-RPC

既然 WordPress 的 XML-RPC 服务存在这些问题,那么最好关闭它,群里面有些小伙伴建议直接删除该文件就好了,但是删除了,WordPress 升级之后又会出现,不太建议这么做。

最快的方法,只需在当前主题的 functions.php 文件添加下面这行代码就能关闭它:

add_filter('xmlrpc_enabled', '__return_false');

使用 PHP 代码或者插件方式关闭,xmlrpc.php 文件被扫描的时候,还是会加载整个 WordPress 代码,所以如果你不想浪费服务器资源在这上面,可以使用下面方式屏蔽服务器上 xmlrpc.php 文件的请求:

1. Apache 可以通过在 .htaccess 文件前面添加以下代码:

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

2. nginx 服务器可以添加下面的规则:

location ~* ^/xmlrpc.php$ {
return 403;
}

3. 如果以上两个方式都不好用,还可以在 WordPress 的 wp-config.php 文件最开始的地方添加:

if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){
$protocol = $_SERVER['SERVER_PROTOCOL'] ?? '';

if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){
$protocol = 'HTTP/1.0';
}

header("$protocol 403 Forbidden", true, 403);
die;
}

4.利用宝塔防火墙解决此问题

但是像我这种需要这个接口用手机客户端的人来说,实在不妥,可以利用宝塔防火墙解决此问题。

首先,将/xmlrpc.php加入URL黑名单拒绝访问。PS:还有/wp-json也可以加进去。

解决网站被利用xmlrpc.php文件攻击的方法

利用宝塔规则优先级:UA白名单> UA黑名单> URL关键词拦截> IP白名单 > IP黑名单 > URL白名单 > URL黑名单 > CC防御 > 禁止境外IP访问 >User-Agent > URI过滤 > URL参数 > Cookie > POST

其次,将自己设备UA加入白名单即可,自己设备具体UA可以在网站访问日志里查看。

解决网站被利用xmlrpc.php文件攻击的方法

这样一来,除了特定UA,其他访问都是403。

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>