如何从在Ubuntu 14.04 XML-RPC攻击保护的WordPress

WordPress是一个流行和强大的CMS(内容管理系统)平台。其受欢迎程度可以带来不必要的注意在恶意流量的专门针对在WordPress网站的形式。 有许多情况下,还没有被保护或优化的服务器可以接收恶意流量少量之后遇到问题或错误。本指南将告诉你如何保护XML-RPC攻击的WordPress在Ubuntu 14.04系统上。

介绍

WordPress是一个流行和强大的CMS(内容管理系统)平台。 它的流行可以带来不必要的注意的形式的恶意流量特别针对WordPress网站。

在许多情况下,未受保护或优化的服务器在接收到少量恶意流量后可能会遇到问题或错误。 这些攻击导致系统资源耗尽,导致像MySQL这样的服务无响应。 这方面最常见的视觉提示将是一个Error connecting to database消息。 该Web控制台还可以显示Out of Memory错误。

本指南将向您介绍如何在Ubuntu 14.04系统上保护WordPress免受XML-RPC攻击。

先决条件

对于本指南,您需要以下内容:

我们假设你已经在Ubuntu 14.04 Droplet上安装了WordPress。 有很多方法来安装WordPress,但这里有两个常见的方法:

本教程中的所有命令都应以非root用户身份运行。 如果需要该命令的root访问权限,它会在前面加sudo与Ubuntu 14.04初始服务器设置介绍了如何添加用户,并给他们sudo访问。

什么是XML-RPC?

WordPress的使用XML-RPC远程执行功能 流行的插件JetPack和WordPress移动应用程序是WordPress如何使用XML-RPC的两个很好的例子。 同样的功能也可以用来在短时间内向WordPress发送数千个请求。 这种情况实际上是一个暴力攻击。

识别XML-RPC攻击

识别XML-RPC攻击的两种主要方法如下:

1)当您的WordPress站点关闭时,看到“连接到数据库错误”消息
2)寻找类似的条目"POST /xmlrpc.php HTTP/1.0”在你的Web服务器日志

Web服务器日志文件的位置取决于您运行的Linux发行版以及您正在运行的Web服务器。

对于Ubuntu 14.04上的Apache,请使用此命令搜索XML-RPC攻击:

grep xmlrpc /var/log/apache2/access.log

对于Ubuntu 14.04上的Nginx,使用此命令搜索XML-RPC攻击:

grep xmlrpc /var/log/nginx/access.log

如果上述命令导致多行输出,您的WordPress网站正在接收XML-RPC攻击,类似于此示例:

access.log
111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0" 200 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

本文的其余部分重点介绍防止进一步的XML-RPC攻击的三种不同的方法。

方法1:安装Jetpack插件

理想情况下,您希望防止XML-RPC攻击发生之前。 Jetpack的 WordPress插件可以阻止其保护功能XML-RPC多重呼叫方法请求。 您仍然会在启用Jetpack的Web服务器日志中看到XML-RPC条目。 但是,Jetpack会将这些恶意登录尝试中的数据库负载减少近90%。

注:WordPress.com帐户,才能激活Jetpack的插件。

Jetpack可以从WordPress后端轻松安装。 首先,登录到你的WordPress的控制面板,选择插件- >在左边的菜单中添加新

WordPress插件菜单

Jetpack的应自动列在添加新页面的功能插件部分。 如果你没有看到它,你可以使用搜索框搜索Jetpack的

Jetpack安装页面

点击立即安装按钮来下载,解压缩,并安装Jetpack的。 一旦安装成功,会出现在页面上的激活插件的链接。 单击激活插件的链接。 您将返回到插件页面和一个绿色的头将在指出你的Jetpack几乎是准备好了!顶部。 点击连接到Wordpress.com按钮完成的Jetpack的激活。

连接到Wordpress.com按钮

现在,使用WordPress.com帐户登录。 如果需要,您还可以创建帐户。

登录Wordpress.com表单

登录您的WordPress.com帐户后,Jetpack将被激活。 你将与一个选项来运行跳跃开始 ,将自动启用的Jetpack的共同特征呈现。 点击在该步骤中跳过链接。

跳转开始屏幕

即使您跳过跳跃启动过程,保护功能也会自动启用。 您现在可以看到一个Jetpack仪表板,它也将保护功能显示为活动。 从潜在的白名单的IP地址被拦截的保护通过单击旁边保护名字齿轮。

Jetpack仪表板

输入您要白名单IPv4或IPv6地址,然后点击保存按钮,更新保护白名单。

保护设置

方法2:使用a2enconf启用block-xmlrpc

a2enconf block-xmlrpc功能被添加到DigitalOcean WordPress的一键式图像中的2015年12月有了它,您可以阻止在网络服务器级别的所有XML-RPC请求。

注意:此方法仅适用于一DigitalOcean一键安装WordPress在2015年12月创建及更高版本。

要启用XML-RPC块脚本,请在安装了DO WordPress单击图像的Droplet上运行以下命令:

sudo a2enconf block-xmlrpc

重新启动Apache以启用更改:

sudo service apache2 restart

警告:该方法将停止任何使用XML-RPC无法正常工作,包括Jetpack的或WordPress的移动应用程序。

方法3:手动阻止所有XML-RPC流量

或者,XML-RPC块可以手动应用于您的Apache或Nginx配置。

对于Ubuntu 14.04上的Apache,使用以下命令编辑配置文件:

sudo nano /etc/apache2/sites-available/000-default.conf

添加高亮行下面的<VirtualHost>标记。

Apache VirtualHost配置
<VirtualHost>
…    
    <files xmlrpc.php>
      order allow,deny
      deny from all
    </files>
</VirtualHost>

保存并在完成后关闭此文件。

重新启动Web服务器以启用更改:

sudo service apache2 restart

对于Nginx的在Ubuntu 14.04,编辑用下面的命令( 更改路径以反映您的配置文件 )配置文件:

sudo nano /etc/nginx/sites-available/example.com

在服务器块中添加以下突出显示的行:

Nginx服务器块文件
server {
…
 location /xmlrpc.php {
      deny all;
    }
}

保存并在完成后关闭此文件。

重新启动Web服务器以启用更改:

sudo service nginx restart

警告:该方法将停止任何使用XML-RPC无法正常工作,包括Jetpack的或WordPress的移动应用程序。

验证攻击缓解步骤

无论你选择什么方法来防止攻击,你应该验证它是否工作。

如果启用Jetpack Protect功能,您将在Web服务器日志中看到XML-RPC请求继续。 频率应该更低,Jetpack将减少攻击可能对数据库服务器进程造成的负载。 Jetpack还将逐步阻止攻击IP地址。

如果您手动阻止所有XML-RPC的流量,你的日志将仍然显示尝试,但由此产生的错误代码是其他的东西比200的在Apache的示例条目access.log文件可能是这样的:

access.log
111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0" 500 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

结论

通过采取措施减少恶意的XML-RPC流量,您的WordPress网站将消耗更少的系统资源。 耗尽系统资源是WordPress网站在VPS上离线的最常见原因。 本文中提到的防止XML-RPC攻击的方法将确保您的WordPress网站保持在线。

要了解更多关于WordPress的XML-RPC蛮力攻击,阅读Sucuri.net -蛮力放大攻击针对的WordPress XMLRPC