V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
leavic
V2EX  ›  问与答

如何对付这种单机 slow http 攻击工具?

  •  
  •   leavic · 2014-07-11 10:45:04 +08:00 · 5046 次点击
    这是一个创建于 3807 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨晚开始blog就开始不断爆数据库连接错误,我以为只是bluehost正常维护,不过连续12小时都一直这样断断续续的错误或正常,bluehost官方status反馈也没有任何问题,我就想会不会是我自己这边有问题.
    进wordpress后台看一下统计,才几个小时的时间,请求数量已经是平时一天的3倍以上,看一下access log发现请求几乎全部来自一个日本的IP,refer url指向了一个ddos工具的网址(http://code.google.com/p/slowhttptest/),暂时在cpanel封锁这个IP解决问题.

    看了一下攻击工具的原理,要么是发送不完整的http请求,要么是延缓读取服务器响应数据模拟低速网络情况,让服务器保持大量的请求,最终导致服务器资源耗尽.

    而且这种攻击不需要很大的资源,一台电脑就足以干掉一个普通的网站.那么,除了被动的封禁IP之外,有没有可能在防火墙或者apache的设置上做什么动作,自动识别并封锁这种请求呢?

    BTW:对于这种Shared Hosting,权限很低的有什么办法吗?当然不限于Shared Hosting,自主管理的VPS上该怎么设置也请不吝赐教,谢谢!
    第 1 条附言  ·  2014-07-11 13:12:21 +08:00
    其实我感觉Bluehost在处理http请求上,倒是可以对付这种攻击的,因为在攻击持续期间内apache服务其实一直没挂掉,只是数据库挂了,从而导致网站不可用.
    第 2 条附言  ·  2014-07-11 17:09:31 +08:00
    我先开了免费的cloudflare,隐藏一下主站的IP,不过国外大DNS更新CNAME记录好像都很慢,反而是国内的114和阿里云DNS很快就生效了.
    18 条回复    2014-07-12 16:30:19 +08:00
    ChiChou
        1
    ChiChou  
       2014-07-11 11:28:05 +08:00
    云 WAF 足够对付这种。
    RyuZheng
        2
    RyuZheng  
       2014-07-11 11:28:11 +08:00 via Android
    可以试下借助第三方?
    DNSpod的安全宝
    360网站安全
    leavic
        3
    leavic  
    OP
       2014-07-11 11:33:14 +08:00
    @ChiChou
    @RyuZheng
    看了一下,这些工具都是在DNS上做手脚,分流或者引导DDOS攻击的流量到别的地方?这种防护太容易绕过了,例如这篇文章里提到的做法,改hosts文件就足以完全让DNS分流失效:
    https://community.qualys.com/blogs/securitylabs/2012/01/25/how-i-knocked-down-30-servers-from-one-laptop
    multiple1902
        4
    multiple1902  
       2014-07-11 11:43:27 +08:00   ❤️ 1
    看了一下论文,貌似这种攻击方式还是咱中国人发明的呢 http://eeweb.poly.edu/faculty/yongliu/docs/cdc04.pdf

    我觉得(共享主机上)你能做的事不多,但还是能做一些的。我们首先考虑一下攻击者的攻击目标是什么。

    如果攻击者仅仅是尝试产生大量的慢速 TCP 连接,考虑到你这是共享主机,TCP 连接本身并不是针对你的网站的。所以 TCP 层面上的攻击并不会对你造成这么大的影响。

    所以说,实际上攻击者是在应用层对你的网站做 DoS,方法是同时产生大量的 HTTP 请求并且保持住,来消耗你的资源。数据库连接错误的原因应该是大量的数据库访问,你注意,一个 PHP 网站访问数据库,说明开始执行你的 PHP 代码了,而你可以改代码,这里你有主动权。

    你能做什么呢?你可以避免产生无端的数据库访问。比如你可以在 PHP 代码的开头加上检查连接 IP 的代码(这个应该不复杂),把特定的 IP 屏蔽掉,也就是遇到这样的 IP 就直接停止执行。也可以把网站静态化,使得常见的操作(比如读文章、读首页)不需要访问数据库(而是访问缓存文件)。这种情况下需要访问数据库的操作就不多了,而如果还有哪个 IP 短时间产生了大量的数据库访问,那它一定有问题。

    至于封禁,一种做法是在 CPanel 里面封 IP(我不确定它有没有提供 API 使得这个过程可以自动完成)。服务器是 Apache 的话,看看能不能通过写 .htaccess 文件来实现阻止特定 IP 访问。

    我想起来了,还有个方法是把你的网站放到 CloudFlare 这样的 CDN 后面。CloudFlare 在安全方面也会做一些检查,帮你过滤掉奇怪的请求,速度方面它会缓存很多内容,应该会有帮助。
    leavic
        5
    leavic  
    OP
       2014-07-11 11:53:35 +08:00
    @multiple1902 是的,我在cPanel封掉IP之后立刻就去装WP的缓存插件了,以前因为流量小一直没在意,觉得反正一天才200人看,缓存也没啥意思.
    从slowhttptest这个工具的使用方法来看应该是针对我网站的,因为是根据url请求的.这种攻击方式对攻击者的资源要求极低,几乎人人都能做,不过基本上也都是个人攻击,所以单个封IP难度不大.

    可是万一如果有人利用僵尸网络,在每台机器上都用这工具来做slow http攻击,那封IP就可以累死管理员了,而且以后要不要解封都是个很痛苦的决定,因为可能就是个中毒的普通用户.
    所以我希望的方法是,能不能利用iptables之类的基础防火墙工具,智能的识别这种攻击并进行封锁.可能难度有点大...
    RyuZheng
        6
    RyuZheng  
       2014-07-11 12:36:11 +08:00 via Android
    好多人都用WordPress这种PHP网站来练手攻击,很常见也很好试,随便找一个就有了,总有试成功的。我觉得其实可以换一下,我也放弃WordPress
    RyuZheng
        7
    RyuZheng  
       2014-07-11 12:37:15 +08:00 via Android
    额,我的意思是说一般的PHP博客,其实现在很多其他类型
    Livid
        8
    Livid  
    MOD
       2014-07-11 12:39:36 +08:00 via iPhone
    服务器的 Apache 版本太旧?
    bobopu
        9
    bobopu  
       2014-07-11 13:01:16 +08:00 via Android   ❤️ 1
    @leavic 我倒是有个类似的工具,忘记叫啥了,下午睡起后给你翻着找一下。
    leavic
        10
    leavic  
    OP
       2014-07-11 13:18:50 +08:00
    @Livid Apache version 2.2.27
    Apache其实没挂,是mysql被大量的页面内请求拖挂了,当初要做了静态化缓存其实也没事.
    mengskysama
        11
    mengskysama  
       2014-07-11 13:36:19 +08:00
    在前端限制每个IP的连接数
    ChiChou
        12
    ChiChou  
       2014-07-11 13:51:28 +08:00
    @leavic 所以你需要对访客隐藏真实 IP 地址
    leavic
        13
    leavic  
    OP
       2014-07-11 13:57:38 +08:00
    @ChiChou 你这样一说我倒是想起来了,其实我虚拟主机上一个IP又不是只有我一个网站,如果是攻击全服务器的,直接改Host指向IP我可能真没办法,但他要攻击我单个网站还真就必须用域名,安全宝这种DNS防护似乎还真能起点作用.
    bobopu
        14
    bobopu  
       2014-07-11 16:20:24 +08:00   ❤️ 1
    @leavic 哈,抱歉睡过趟了。是一个WP的插件Wordfence,官方在这http://www.wordfence.com/
    这个插件功能很强大不仅可以批量添加ip黑名单,更可以直接封锁来自某个城市的ip,当其他Wordfence用户被攻击时自动将攻击ip记录并同步至全球Wordfence用户达到云拦截的效果,还可以设置某ip在具体时间内的访问次数等。更有独家的猎鹰引擎,开启后可全静态化wp,官方宣传是可以把wp的打开速度提升30至50倍。别着急,现在购买,还有更多功能,例如对wp目录执行病毒和安全扫描,并且帮你修复,检查异常的wp文件等等,赶快拿起电话订购吧。。。
    PS:基础功能免费,高级功能只需3.9刀哦,还不及你的一双袜子钱。。。
    leavic
        15
    leavic  
    OP
       2014-07-11 19:33:30 +08:00
    @bobopu premium账户一年20多美元,哪里有3.9美元啊....
    bobopu
        16
    bobopu  
       2014-07-11 21:10:36 +08:00 via Android
    @leavic 啊哈,你也可以用免费版本哦,基础功能应该可以满足你。。再说20刀也不贵么,省下几盒杜蕾斯就出来啦,赶快拿起电话订购吧。。
    oott123
        17
    oott123  
       2014-07-12 09:13:17 +08:00 via Android
    @leavic IP 白名单,仅允许 CloudFlare 的 ip 访问贵站。
    msg7086
        18
    msg7086  
       2014-07-12 16:30:19 +08:00
    把结构换成event模型可能会比较有效,不过共享主机可定制性太差了…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1041 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:32 · PVG 02:32 · LAX 10:32 · JFK 13:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.