WordPress禁用xmlrpc.php的六种方法

最近发现服务器安全软件一直在拦截一个IP段频繁访问xmlrpc.php的记录,查了一下,估计是利用xmlrpc.php直接POST数据,来绕过wordpress后台的登录错误限制进行暴力破解,时间久了,这些攻击会造成占用资源过高,导致服务器卡顿宕机。

XML-RPC 是 WordPress 用于第三方客户端(如 WordPress iPhone 和安卓客户端,Windows Live Writer 等)的 API 接口,还可以用于 pingbacks 和 trackbacks 端口,作为站点之间的通讯桥梁。

XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。它是WordPress离线发布协议,如果你习惯使用Windows Live Writer来撰写和发表文章,就必须启用该功能,否则建议您关闭,以免存在安全隐患,让垃圾留言和 Trackback Spam 等有可乘之机。

攻击方式

这种利用xmlrpc.php的攻击可以绕过限制。攻击的方式直接POST以下数据到xmlrpc.php

<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
  <methodName>wp.getUsersBlogs</methodName>
  <params>
   <param><value>帐户名</value></param>
   <param><value>密码</value></param>
  </params>
</methodCall>

关于getUsersBlogs接口的更多信息可以参考官方的指南。 账户/密码错误返回为403.

解决方法

根据网上搜索的结果,大致有六种办法来解决:

第一种是屏蔽 XML-RPC (pingback) 的功能

在当前主题functions文件中添加以下代码:

add_filter('xmlrpc_enabled', '__return_false');

第二种是通过.htaccess屏蔽xmlrpc.php文件的访问

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

第三种是通过.htaccess文件实现301重定向

如果有用户访问xmlrpc.php文件,然后让其跳转到其他不存在或者存在的其他页面,降低自身网站的负担。

# protect xmlrpc
<IfModule mod_alias.c>
Redirect 301 /xmlrpc.php http://example.com/custom-page.php
</IfModule>

第四种阻止pingback端口

如果仅仅想关闭XML-RPC的pingback端口,而不影响第三方离线发表功能,在当前主题functions文件中添加以下代码:

/**
 * WordPress 关闭 XML-RPC 的 pingback 端口
 */
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
    unset( $methods['pingback.ping'] );
    return $methods;
}

第五种nginx服务器配置

location ~* /xmlrpc.php {
    deny all;
}

第六种安装插件

安装Login Security Solution插件(这个没有测试,你可以试试)

小结

1、不要直接删除xmlrpc.php,否则它会让你的wordpress网站发生莫名的错误。
2、建议采用方法 2
3、其实扫描也罢,http的DDOS攻击也罢,CC攻击也罢,总之大量消耗服务器资源我们的服务器是累死的。
5、如果你正在使用如JetPack之类的插件,删除掉这个文件可能会让你的网站功能异常。
6、建议把WP升级到最新版本,还是要相信新版本漏洞少一点吧。
7、一般这个功能是用不到的,我们直接屏蔽掉,默认当前的WP版本是开启的。这样,我们就可以解决WordPress被利用xmlrpc.php暴力破解攻击问题。有些时候并不是针对我们的网站攻击,而是对方利用某个关键字扫到我们的网站造成的。

打赏 赞(0)
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

标签