我们最近在我们的主要网站上遇到了 DOS 攻击问题,该网站使用 Apache httpd 2.2.9 和 Drupal 6.35 运行。该攻击是 Dupal 的 xmlrpc.php 的一个帖子,这是一个已知的漏洞,已在最新版本的 Drupal 中进行了修补。然而,因为它是一个较旧的版本,漏洞的修复不在我们的 Drupal 安装中——也不会因为我们在三个月内迁移到托管平台。
我最初尝试通过重命名xmlrpc.php来对抗DOS,它返回一个404,但这仍然足以为每个帖子创建一个apache线程结果是多个线程组合起来消耗大量内存,所以仍然存在问题。
因此,基于更多的谷歌搜索,我刚刚修改了 .htaccess 如下:
<Files "xmlrpc.php">
Order Allow,Deny
deny from all
</Files>
从这里开始,大概不会再为每个调用创建一个 httpd 线程了。
你觉得这就够了吗?我可以更进一步,通过启用跟踪 VPC 上的流量并查找和阻止原始 IP 地址的功能,但我不知道这是否有效,因为这些攻击可能来自一群被劫持的系统。虽然我很想知道。有什么想法吗?
拒绝块仍然需要 apache 处理足够远的请求以看到它与拒绝匹配,并且很可能在“成本”方面与 404 相同。
您说“DOS”,但您的意思是实际攻击还是随机扫描仪?随机扫描器通常不会驱动足够的流量来使 404's/403's 成为问题。
这是在ELB后面吗?如果没有,您应该能够在访问日志中看到源地址。您可以考虑实现一个像 Fail2Ban 这样的工具来监视这种模式,并放入一个临时的 iptables 规则来阻止对该 IP 的访问一段时间。
如果它在 ELB 后面,您可以执行类似的操作,除了编写自定义 shim 来针对包含 ELB 的 VPC 子网 ACL 进行操作。