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
。
WordPress利用XML-RPC远程执行功能。流行的插件JetPack和WordPress移动应用程序是WordPress如何使用XML-RPC的两个很好的例子。同样的功能也可以用来在短时间内向WordPress发送数千个请求。这种情况实际上是一种暴力攻击。
识别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攻击的三种不同方法。
理想情况下,您希望在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地址,然后单击“ 保存”按钮以更新“ 保护白名单”。
或者,可以手动将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》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。