WordPress安全防护:如何防止/xmlrpc.php被恶意扫描爆破

网站WordPress因为 xmlrpc.php 文件被过多扫描,就会造成服务器负载过重,访问页面变得非常缓慢,查了好久才知道是这个文件被扫描过多造成的。
本文深入剖析 XML-RPC 在 WordPress 中的作用、存在的安全风险,并提供多种有效的防御对策,全方位加固 WordPress 网站安全。
XMLRPC

深入解析 XML-RPC

XML-RPC 的作用

XML-RPC
(XML Remote Procedure Call)是一种使用 XML 进行编码、基于 HTTP 协议的远程过程调用规范。在 WordPress 中,XML-RPC 允许外部系统通过编程方式与 WordPress 进行交互,实现诸如发布文章、获取评论、上传媒体等功能。

这一功能大幅增强了 WordPress 的灵活性和互操作性,在多设备协同工作、第三方系统集成等场景中备受推崇。例如,通过手机 APP 管理WordPress 网站,或者从其他平台自动同步内容到WordPress 博客等。

XML-RPC 的安全隐患

尽管 XML-RPC 为 WordPress 带来了便利,但它也暴露出一些严重的安全隐患:

  1. 暴力破解攻击:由于 XML-RPC 的系统.multicall 方法允许发送批量请求,攻击者可以在单次请求中尝试成千上万的密码组合,从而绕过传统的登录尝试限制措施,极大增加了暴力破解的效率。
  2. DDoS 攻击:恶意攻击者可以利用 XML-RPC 接口的 pingback 功能,实施分布式拒绝服务(DDoS)攻击,使网站服务器超载瘫痪。这种攻击手段隐蔽且危害巨大。
  3. 真实 IP 泄露:如果使用 CDN 服务商提供的 DNS 保护服务,攻击者可以通过 pingback 方法获取网站的真实 IP 地址,为进一步的攻击做准备,造成更大的危害。
  4. 敏感数据泄露:由于 XML-RPC 提供了访问 WordPress 核心功能的接口,一旦被攻击者利用,可能导致网站内容、用户信息等敏感数据被盗取或篡改。

综上所述,XML-RPC 这一看似无害的功能,实则为黑客提供了可乘之机,成为 WordPress 网站遭受攻击的一个重大隐患。因此,如何有效防御 XML-RPC 相关的安全风险,对于每一位 WordPress 网站管理员来说都是当务之急。

全方位防御 XML-RPC 安全风险

面对 XML-RPC 带来的种种安全隐患,我们需要从多个角度入手,采取全方位的防御对策,切实保护网站的安全。

1. 使用安全扫描插件

WordPress 插件库中有多款可靠的安全扫描插件,能够主动检测 XML-RPC 面临的威胁,并提供一键禁用 XML-RPC 的功能,例如"Disable XML-RPC"、"XML-RPC Exploit preventer"等。安装这些插件后,它们会自动调整 WordPress 设置,关闭 XML-RPC 接口,从根源上杜绝各类威胁。

2. 修改主题代码禁用 XML-RPC

对于有一定编程基础的用户,也可以通过修改主题代码的方式禁用 XML-RPC。只需在主题的 functions.php 文件中添加以下一行代码:

```
add_filter('xmlrpc_enabled', '__return_false');

> 该代码的作用是完全关闭 WordPress 的 XML-RPC 功能。不过,由于直接修改主题文件可能会在更新主题时丢失这些更改,因此建议使用子主题或专用插件来添加此类代码,以确保持久生效。

### 3. 通过服务器配置文件禁止访问

> 如果有修改服务器配置文件的权限,也可以直接在配置文件中添加规则,拦截对 xmlrpc.php 文件的访问请求。

> 对于 Apache 服务器,可以在网站根目录下的 .htaccess 文件中添加以下规则:
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

> 对于使用 Nginx 服务器的用户,可以在服务器配置文件中添加以下规则:
location ~* ^/xmlrpc.php$ {
    return 403;
}

> ![403](https://sodebug.com/wp-content/uploads/2024/03/1930521425.png "403")

### 4. 在 wp-config.php 中禁止访问

> 最后,还可以直接在 WordPress 的配置文件 wp-config.php 中添加代码,拒绝访问 xmlrpc.php 文件。在文件最开始处添加以下代码即可:
if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){
    $protocol = $_SERVER['SERVER_PROTOCOL'] ?? '';
    if(!in_array($protocol, ['HTTP/1', 'HTTP/2', 'HTTP/0', 'HTTP/3'], true)){
        $protocol = 'HTTP/0';
    }
    header("$protocol 403 Forbidden", true, 403);
    die;
}


> 该代码的作用是,一旦发现请求的 URL 中包含 xmlrpc.php,立即返回 403 Forbidden 错误,拒绝访问。

### 5. 使用网站防火墙(WAF)

> 除了在WordPress端采取措施外,还可以考虑在服务器层面部署网站防火墙(WAF)。高质量的 WAF 产品能够主动识别并拦截各种恶意攻击行为,有效防御 XML-RPC 相关的攻击威胁。

> 常见的 WAF 解决方案包括云服务商提供的 WAF、开源的 ModSecurity 以及第三方安全厂商的 WAF 产品等。

### 6. 加固网站整体安全

> 防范 XML-RPC 攻击只是网站安全防护的一个方面,我们还需要从整体上加固 WordPress 网站的安全性:

*   及时更新WordPress版本和插件,修复已知漏洞
*   使用复杂安全的密码,并定期更换
*   启用双重身份验证功能,增加登录安全层
*   限制登录错误尝试次数,防止暴力破解
*   安装可靠的网站防火墙和安全扫描插件
*   备份网站数据,以应对最坏情况发生

> 只有从全方位入手,并坚持长期防护,才能最大限度确保 WordPress 网站的安全。

### 结语

> 对于像 XML-RPC 这样看似无害但潜藏巨大风险的功能,必须重视并采取积极有效的防御措施。通过关闭 XML-RPC、加固网站整体安全性等多管齐下,我们就能够最大程度避免网站遭受攻击,保护好宝贵的网站数据和用户信息。
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    请登录后查看评论内容