禁用xmlrpc.php避免DDOS攻击

为什么要禁用xmlrpc.php?

您应该在WordPress网站上禁用xmlrpc.php的主要原因是因为它引入了安全漏洞, 并且可能成为攻击的目标。

既然不再需要XML-RPC在WordPress之外进行通信,就没有理由保持它的活动状态。这就是为什么通过禁用站点来提高其安全性是明智的。

如果xmlrpc.php属于安全责任,并且不再起作用,那么为什么不将其完全从WordPress中删除呢?

这是因为WordPress的主要功能之一始终是向后兼容。如果您对网站进行了良好的管理,您将知道保持WordPress最新以及任何插件或主题是必不可少的。

但是总会有不愿或无法更新其WordPress版本的网站所有者。如果他们运行的版本早于REST API,则他们仍然需要访问xmlrpc.php。

通过XML-RPC Pingbacks进行DDoS攻击

xmlrpc.php启用的功能之一是pingback和Trackbacks。当另一个博客或网站链接到您的内容时,这些通知将显示在您网站的评论中。

XML-RPC规范使这种通信成为可能,但已被REST API取代(如我们所见)。

如果您的站点上启用了XML-RPC,则黑客可能会利用xmlrpc.php在短时间内向您的站点发送大量pingback,从而在您的站点上发起DDoS攻击。这可能会使服务器超载,并使站点无法正常运行。

通过XML-RPC的蛮力攻击

每次xmlrpc.php发出请求时,它都会发送用户名和密码进行身份验证。这带来了重大的安全责任,而REST API却没有做到这一点。实际上,REST API使用OAuth来发送用于身份验证的令牌,而不是用户名或密码。

因为xmlrpc.php随每个请求发送身份验证信息,所以黑客可以使用它来尝试访问您的站点。这样的暴力攻击可能使他们可以插入内容,删除代码或破坏数据库。

如果攻击者向您的站点发送了足够多的请求,每个请求使用不同的用户名和密码对,则它们最终有可能会被攻击到正确的请求,从而使他们可以访问您的站点。

因此,如果您正在运行WordPress的最新版本(使用REST API与外部系统进行通信),则应禁用xmlrpc.php。

xmlrpc.php是否在您的WordPress网站上运行?

您需要做的第一件事是确定xmlrpc.php是否正在您的WordPress网站上运行。

这不是检查文件是否存在的简单情况:它是每个WordPress安装的一部分,即使禁用了XML-RPC,它也将存在。

删除任何内容之前,请务必备份您的网站。在这种情况下,不要仅仅删除xmlrpc.php文件,因为它会破坏您的站点。

要检查您的站点上是否启用了xmlrpc.php,请使用WordPress XML-RPC验证服务。这将检查您的站点并告诉您是否启用了xmlrpc.php。

WordPress XML-RPC验证服务

这是我在服务上检查此站点时得到的结果。

XML-RPC检查

这表明xmlrpc.php在www.dianjin123.com已被禁用。但是,如果您运行检查并发现xmlrpc.php仍在您的站点上启用,如何关闭它?

如何禁用xmlrpc.php

 

有三种禁用xmlrpc.php的方法:

通过插件禁用xmlrpc.php无插件禁用xmlrpc.php让托管服务提供商禁用xmlrpc.php

让我们分别看看每个。

如何使用插件禁用xmlrpc.php

安装插件是禁用xmlrpc.php是最简单的方法。插件地址https://wordpress.org/plugins/disable-xml-rpc/。使用方法如下。

这个插件使用非常简单,简单的无需说明,只需要启用插件就可以。

如何无插件禁用xmlrpc.php

1、把下面的代码

add_filter(‘xmlrpc_enabled’,’__return_false’);放到functions.php文件中。

2、通过.htacess文件禁用xmlrpc.php

在您的.htaccess文件中,添加以下代码:

<Files xmlrpc.php>OrderAllow,DenyDeny from all</Files>为避免遇到任何问题,请确保在此之前先备份旧文件。

让您的托管服务提供商禁用xmlrpc.php

可以在服务器配置文件Nginx.config中,添加:

location~*^/xmlrpc.php$ {return403;}这将产生403错误。

根据自己的实际情况,选择一种方法。

 

https://wordpress.org/plugins/disable-xml-rpc/

 

描述
Pretty simply, this plugin disables the XML-RPC API on a WordPress site running 3.5 or above.

很简单,此插件在运行3.5或更高版本的WordPress网站上禁用XML-RPC API。
Beginning in 3.5, XML-RPC is enabled by default.

从3.5开始,默认情况下启用XML-RPC。

Additionally, the option to disable/enable XML-RPC was removed.

此外,删除了禁用/启用XML-RPC的选项。

For various reasons, site owners may wish to disable this functionality.

由于各种原因,网站所有者可能希望禁用此功能。

This plugin provides an easy way to do so.

该插件提供了一种简便的方法。
安装步骤
Upload the disable-xml-rpc directory to the /wp-content/plugins/ directory in your WordPress installation
将disable-xml-rpc目录上传到WordPress安装中的 / wp-content / plugins / 目录
Activate the plugin through the ‘Plugins’ menu in WordPress
通过WordPress中的“插件”菜单激活插件
XML-RPC is now disabled!
XML-RPC现在已禁用!
To re-enable XML-RPC, just deactivate the plugin through the ‘Plugins’ menu.

要重新启用XML-RPC,只需通过“插件”菜单停用该插件。

 

 

禁用xmlrpc.php的避免DDOS攻击的几种方法

那么我们如何可以禁用xmlrpc.php,从而阻止这些无效访问呢?有以下几种方法:

一、修改主题functions.php文件

1、在文件内添加以下代码:

//禁用XML-RPC接口
add_filter('xmlrpc_enabled', '__return_false');

 

2、还可以用代码转向任意网址:

add_action('login_enqueue_scripts','login_protection');
function login_protection(){
if($_GET['root'] != 'zhuanxiang')header('Location: http://任意其他网站或者网站首页/');
}

 

然后我们自己登录时需要用:网站域名/wp-login.php?root=zhuanxiang,这个网址访问后台。

3、只关闭XML-RPC的pingback 端口

如果你还是用使用第三方客户端来管理Wordpress文章,那么可以只关闭XML-RPC的pingback 端口

//禁用XML-RPC的pingback接口
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
}

以上代码放到主题的functions.php文件即可。

或者设置-讨论,前两个去掉对勾

二、修改.htaccess文件

1、加入以下代码:

# protect xmlrpc
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
或者
<Files xmlrpc.php>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</Files>

2、还可以让访问转向其他网址:

# protect xmlrpc
<IfModule mod_alias.c>
Redirect 301 /xmlrpc.php http://baidu.com
</IfModule>

三、修改服务器配置

1、nginx配置禁止访问该文件:

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

2、Apache配置禁止访问该文件:

<IfModule mod_alias.c>
Redirect 301 /xmlrpc.php http://baidu.com
</IfModule>

通过以上几种方法都可以实现禁止xmlrpc.php恶意访问的目的

当你自己文章里调用了自己的某个文章链接时候wordpress会创建一个自我Pingbacks,这个东西没有什么价值。可以禁用。

function no_self_ping( &$links ) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
  if ( 0 === strpos( $link, $home ) )
    unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );

写入functions.php保存即可

修改的地方:

1.function.php

add_filter('pre_site_transient_update_core', create_function('$a', "return null;")); // 关闭核心提示
add_filter('pre_site_transient_update_plugins', create_function('$a', "return null;")); // 关闭插件提示
add_filter('pre_site_transient_update_themes', create_function('$a', "return null;")); // 关闭主题提示
remove_action('admin_init', '_maybe_update_core'); // 禁止 WordPress 检查更新
remove_action('admin_init', '_maybe_update_plugins'); // 禁止 WordPress 更新插件
remove_action('admin_init', '_maybe_update_themes'); // 禁止 WordPress 更新主题
add_filter( 'xmlrpc_enabled', '__return_false' );//禁用了XML-RPC

2.设置-讨论去掉

3.修改.htaccess

<Files xmlrpc.php>
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</Files>

您可能还喜欢...