最近,我们对 wordpress xmlrpc.php 的访问量很大,最终导致服务器负载过高。
我们尝试将所有 xmlrpc.php 重写为 127.0.0.1,但收效甚微。因为 apache 仍在处理连接。最后,我们使用以下方法阻止了此类连接:
iptables -I INPUT 1 -p tcp --dport 80 -m 字符串 --string “xmlrpc.php” --algo bm -j DROP
不幸的是,所有这些都会导致使用 xmlrpc.php 的插件(如 jetpack 等)出现问题。
有谁遇到过这类问题并且可以提出一些处理建议吗?
编辑:是否可以添加允许从 wordpress IP 范围进行访问的附加规则?由于阻止规则使用字符串,该规则将是什么样子?
答案1
您描述的防火墙规则有两个问题:
您应该为其设置一些速率限制,而不是阻止一切。
由于性能原因,在防火墙中使用字符串模块并不是很明智。
最好的选择是将 HAProxy 放在 Apache 前面。你可以看看我的回答这个帖子了解有关如何做以及为什么做的更多详细信息。
答案2
我个人对此类事情的经验是避免“修补”问题。不要阻止一个机器人点击一个链接。其他机器人会进来点击其他链接。您需要设置某种暴力破解/DOS 保护,以阻止对您的服务器的重复点击。
ModSecurity非常适合这个,并且如果您使用 apache 作为您的 web 服务器,它是一个内置的 apache。
如果你没有提到 wordpress,那么你提到了 wordpress。Wordpress 有多种的插件可以阻止此类重复活动。WordFence 是一款出色的插件,我们的客户在使用过程中取得了成功。
总的来说,我建议您解决根本原因,而不是仅仅尝试修复单个实例。
答案3
我的建议是关于这个问题,请尝试通过添加此代码来阻止访问
.htaccess
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>