关于 Apache 防御 Slow Read 等慢连接攻击的方法

2014-04-15 21:55:42 +08:00
 wangxiaomu
最近接手了一个Web服务器,是在Windows Server 2012上的Apache(2.4)
半夜的时候进行DDOS测试,发现单机的慢连接攻击就能拒绝服务。

攻击工具:
用的是SlowHTTPTest,攻击方法是Slow Read。

攻击效果:
CPU冲到100%,网络资源略增加。

搜了一下关于Apache怎么防御这类攻击,已经试验了如下几种:
1、设置RequestReadTimeout的值 header=10-20 body=20 MinRate=5000
2、设置Timeout的值5
3、设置KeepAliveTimeout值5
4、其他尝试的设置
(via http://httpd.apache.org/docs/trunk/misc/security_tips.html)

均无法有效防御单机slow read的攻击

一些模块如evasive和security还没有尝试,在windows下可能比较麻烦。

各位有没有之前防御过这类慢连接DOS攻击的经验,可以分享一下吗,非常感谢!
8946 次点击
所在节点    Linux
6 条回复
pubby
2014-04-15 22:47:42 +08:00
我觉得吧... apache的架构就这德行。
在apache前面加个nginx负责网络io就ok了。
zodiac1111
2014-04-15 22:56:05 +08:00
gzlug list也是你发的吧...
ps:不会网络,路过
wangxiaomu
2014-04-15 23:04:31 +08:00
@pubby 谢谢,nginx没弄过,研究一下。
BTW,有没有直接在Apache下做配置防DOS的呢?
pubby
2014-04-15 23:15:18 +08:00
@wangxiaomu
apache的MPM模型主要就是perfork和worker,太多的慢速连接,需要消耗大量进程(线程),很快会达到apache的最大进程限制,如果放宽限制,那么cpu 内存也会达到极限造成资源枯竭。

而nginx的特点正好是单进程处理大量网络连接,刚好互补。
让nginx对付客户的慢速网络,nginx和apache之间建立本地快速连接
这在vps这种资源尤其紧缺的系统上几乎是必备的



当然不用nginx,前面加squid或者varnish也是同样效果。
wangxiaomu
2014-04-15 23:30:06 +08:00
@pubby THX :)
dndx
2014-04-16 06:22:05 +08:00
除了 @pubby 提到的这些,HAProxy 也可以试试。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/108717

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX