V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wangxiaomu
V2EX  ›  Linux

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

  •  
  •   wangxiaomu · 2014-04-15 21:55:42 +08:00 · 9020 次点击
    这是一个创建于 3875 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近接手了一个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攻击的经验,可以分享一下吗,非常感谢!
    6 条回复    1970-01-01 08:00:00 +08:00
    pubby
        1
    pubby  
       2014-04-15 22:47:42 +08:00
    我觉得吧... apache的架构就这德行。
    在apache前面加个nginx负责网络io就ok了。
    zodiac1111
        2
    zodiac1111  
       2014-04-15 22:56:05 +08:00
    gzlug list也是你发的吧...
    ps:不会网络,路过
    wangxiaomu
        3
    wangxiaomu  
    OP
       2014-04-15 23:04:31 +08:00
    @pubby 谢谢,nginx没弄过,研究一下。
    BTW,有没有直接在Apache下做配置防DOS的呢?
    pubby
        4
    pubby  
       2014-04-15 23:15:18 +08:00   ❤️ 1
    @wangxiaomu
    apache的MPM模型主要就是perfork和worker,太多的慢速连接,需要消耗大量进程(线程),很快会达到apache的最大进程限制,如果放宽限制,那么cpu 内存也会达到极限造成资源枯竭。

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



    当然不用nginx,前面加squid或者varnish也是同样效果。
    wangxiaomu
        5
    wangxiaomu  
    OP
       2014-04-15 23:30:06 +08:00
    @pubby THX :)
    dndx
        6
    dndx  
       2014-04-16 06:22:05 +08:00
    除了 @pubby 提到的这些,HAProxy 也可以试试。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2853 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:19 · PVG 22:19 · LAX 06:19 · JFK 09:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.