战斗阿帕奇杀手

信息安全 网络服务器 阿帕奇 拒绝服务
2021-08-13 08:28:13

三天前,KingCope 向 DoS Apache 发布了一个简单的 Perl 脚本,恰当地命名为 Apache Killer。

该脚本启动了大约 50 个线程以使用可选的 GZIP 编码从服务器请求部分内容。这要么会消耗过多的内存,操作系统必须杀死所有其他进程,要么会消耗过多的 CPU 以致服务器不堪重负。

Apache Foundation 尚未发布补丁。

对抗这种情况的最佳方法是什么?

4个回答

Apache 邮件列表中讨论了五种解决方法。去阅读每个细节:

1) 使用 SetEnvIf 或 mod_rewrite 检测大量范围,然后忽略 Range: 标头或拒绝请求。

2) 将请求字段的大小限制为几百字节。

3) 使用 mod_headers 完全禁止使用 Range 标头:

4) 部署 Range 标头计数模块作为临时权宜之计:

5) 应用讨论中的任何当前补丁

通过阅读 Mark Davidson 提供的脚本,显而易见的临时解决方案是在不需要时禁用 apache 的部分功能。

这个问题似乎是一个老问题,通过禁用部分内容请求已经“解决”了。这里有两个针对以前版本的 apache 的补丁。

阿帕奇 1.3.36

阿帕奇 2.0.58

我为 debian squeezy 下载了当前的 apache 源代码来检查这个补丁的痕迹。不幸的是,这似乎没有实现。

我对apache2的源代码不熟悉,所以我不会尝试为它写补丁。这可以作为读者的练习:)

http://www.guerilla-ciso.com/archives/2049对资源线程耗尽的 DoS 进行了出色的分析,以及一些对策的思考,包括:

  • 知道如何检测它。
  • 如果不需要,请禁用 POST 作为方法。
  • 设置低连接超时

阅读 - 好文章。

这里的游戏有点晚了,但WAF(Web 应用程序防火墙)很可能也是一个有用的缓解措施。
即使它不知道这种开箱即用的攻击,任何现代 WAF 都应该很容易地支持阻止这些类型的请求,甚至在它们到达网络服务器之前。