如何在Ubuntu 14.04上保护WordPress免受XML-RPC攻击

介绍

WordPress是一个流行且功能强大的CMS(内容管理系统)平台。它的受欢迎程度可能会以专门针对WordPress网站的恶意流量形式引起不必要的关注。

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

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

准备

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

  • 一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

我们假设你已经在Ubuntu 14.04 腾讯云CVM上安装了WordPress。

本教程中的所有命令都应以非root用户身份运行。如果命令需要root访问权限,则前面会有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攻击,类似于此示例:

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攻击发生之前阻止它们。WordPress 的Jetpack插件可以使用Protect功能阻止XML-RPC多线程方法请求。您仍将在启用Jetpack的Web服务器日志中看到XML-RPC条目。但是,Jetpack将从这些恶意登录尝试中减少数据库上的负载近90%。

注意:激活Jetpack插件需要WordPress.com帐户。

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

Jetpack应自动列在Add New页面的特色插件部分。如果您没有看到它,可以使用搜索框搜索Jetpack

单击立即安装按钮以下载,解压缩并安装Jetpack。成功安装后,页面上会出现一个Activate Plugin链接。单击“ 激活插件”链接。您将返回到插件页面,顶部会显示一个绿色标题,表示您的Jetpack已准备就绪!。单击“ 连接到Wordpress.com”按钮以完成Jetpack的激活。

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

登录到您的WordPress.com帐户后,Jetpack将被激活。您将看到一个运行Jump Start的选项,它将自动启用Jetpack的常用功能。单击此步骤中的“ 跳过”链接。

即使您跳过Jump Start过程,也会自动启用Protect功能。您现在可以看到一个Jetpack仪表板,它还将Protect功能显示为Active。通过单击“ 保护”名称旁边的齿轮,可以通过“ 保护”阻止白名单IP地址。

输入要列入白名单的IPv4或IPv6地址,然后单击“ 保存”按钮以更新“ 保护白名单”。

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

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

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

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

<VirtualHost>标签之间添加下面突出显示的行。

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

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

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

sudo service apache2 restart

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

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

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

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文件中的条目可能如下所示:

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站点保持联机状态。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Protect WordPress from XML-RPC Attacks on Ubuntu 14.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

AppCan——HTMl5移动开发应用平台

AppCan是HTMl5移动开发应用平台,支持跨平台,可以简单、快速、高效开发移动应用。 倡导Hybrid App开发。 为HTML5开发提供底层Native交...

6396
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

前言   前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识!   主要是些基础的东西...   如何去创建...

3467
来自专栏DeveWork

WordPress 开发之让浏览器自动加载最新的CSS、JS文件(免刷新缓存)

在开发WordPress 主题的时候,如果频繁更新主题的CSS、JS文件但主题已经上线,如何让访客的浏览器获取最新的CSS、JS文件而非等到浏览器删除缓存后?下...

21810
来自专栏西安-晁州

react-native学习之环境安装

1、首先是java环境安装-安装JDK 2、安装Android-SDK,推荐以下地址:http://tools.android-studio.org/index...

2110
来自专栏Android干货

网页一键加入QQ群

6505
来自专栏自动化测试实战

RF第二讲--Selenium2Library库的简单实用

4278
来自专栏Youngxj

sitemap插件(自适应站点优化)

2092
来自专栏Python爬虫实战

Python爬虫:爬取在线教程转成pdf

1、网站介绍2、准备工作2.1 软件安装2.2 库安装3、爬取内容3.1 获取教程名称3.2 获取目录及对应网址3.3 获取章节内容3.4 保存pdf3.5 合...

1801
来自专栏Jerry的SAP技术分享

将Java应用部署到SAP云平台neo环境的两种方式

Eclipse里选择要部署的项目,右键->Run as Server, 选择上一步创建的Server即完成部署。

2242
来自专栏wym

Linux ubntu 下操作

ls 显示当前下面的文件及文件夹 ls -a 显示当前目录下的所有文件及文件夹包括隐藏的.和..等 ls -al 显示当前目录下的所有文件及文件夹包括隐藏的.和...

1582

扫码关注云+社区

领取腾讯云代金券