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

客户服务器被 ddos 攻击,应该怎么办?

  •  
  •   jarlyyn · 2014-11-12 11:43:04 +08:00 · 11778 次点击
    这是一个创建于 3700 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。
    网站在阿里云,纯粹的企业展示型网站。
    第一次被攻击后,把数据库转移到了rds.做了主要页面的缓存,网站域名只想了阿里云盾的cname。
    目前客户已经把带宽提高到50mb,依然被ddos全部占满。
    我分析了下apache日志,几分钟就统计有几十个不重复的IP地址。user-agent之类也都不同。感觉难以从技术上区分攻击流量和正常流量。
    这时候除了继续提高带宽,还有其他可以做的么?
    第 1 条附言  ·  2014-11-13 09:47:47 +08:00
    最新进度。客户今天联系我说升到200mb带宽,服务器还是挂了……
    第 2 条附言  ·  2014-11-13 15:40:37 +08:00
    最新进度:
    访问图片飙流量的暂时停了。
    现在开始找我没做缓存的页面开始攻击了。
    怀疑是两波人在攻击。
    80 条回复    2014-12-05 10:33:47 +08:00
    hao0088
        1
    hao0088  
       2014-11-12 11:50:57 +08:00   ❤️ 1
    CC吗?考虑下安全宝,加速乐啥的~
    jarlyyn
        2
    jarlyyn  
    OP
       2014-11-12 11:55:01 +08:00
    @hao0088 已经使用阿里云盾了。安全宝加速乐之类能有本质的改善么?
    xloong
        3
    xloong  
       2014-11-12 11:56:17 +08:00
    CC的话,什么加速都没用,除非上硬防
    jarlyyn
        4
    jarlyyn  
    OP
       2014-11-12 11:57:42 +08:00
    @xloong 硬防的话能有效防止么?我分析了下日志,就是用一个ip访问首页,下载所有图片/css资源,然后换一个ip,关键是ip多啊
    shiny
        5
    shiny  
       2014-11-12 12:04:23 +08:00
    限制单个 ip 的速度和请求频率
    qiuai
        6
    qiuai  
       2014-11-12 12:07:26 +08:00
    阿里云的所谓云盾很废物.所以用不用无所谓.
    我现在一个客户在我这租的硬防服务器.在阿里云老是检测到几十兆几百兆的攻击,然后就被阿里云直接黑洞了...结果换到高防服务器以后,一点攻击都没检测到...

    然后现在在用 百度云加速,也完全检测不到攻击...很无语...

    你可以切换到百度云加速试试.这种服务自带流量清洗,比阿里云的更有用一些.

    如果还不行,来硬防吧 QQ410668..
    hao0088
        7
    hao0088  
       2014-11-12 12:12:28 +08:00
    @jarlyyn 你直接把你的日志扔给他们技术支持,问下能不能防,最简单啦~
    cst4you
        8
    cst4you  
       2014-11-12 13:02:14 +08:00   ❤️ 5
    把网站置空 10 分钟, 统计 404 的频率, 把请求多的 ip 直接加入列表封掉, 应该一次性的就能追查到 70% 的恶意 CC 的 ip 了, 然后再把网站恢复, 如果还是很高, 那就再次这样做, 直到封完大部分 ip 为止.

    反正不信对方有那么多机子来搞你. 他花的成本也高.
    bobopu
        9
    bobopu  
       2014-11-12 13:03:07 +08:00 via iPhone
    1.调低云盾的触发阀值
    2.使用sitelock
    3.更换域名的Dns
    xloong
        10
    xloong  
       2014-11-12 13:15:07 +08:00
    @jarlyyn 你可以先用几个加速试试,如果量不大的话,就防住了,不然只能上硬防过滤了。还有只是首页的话可以开缓存
    kmvan
        11
    kmvan  
       2014-11-12 13:16:19 +08:00
    几分钟几十个IP也能叫攻击?
    jarlyyn
        12
    jarlyyn  
    OP
       2014-11-12 13:37:40 +08:00
    @kmvan 几十个ip,同时开始下载页面所有的图片呢……
    jarlyyn
        13
    jarlyyn  
    OP
       2014-11-12 13:38:13 +08:00
    @xloong 缓存加了,他直接下载图片拉带宽……现在是带宽不够,不是数据库/磁盘/cpu的问题……
    hao0088
        14
    hao0088  
       2014-11-12 13:39:38 +08:00
    @jarlyyn 带宽不够上CDN吧,1G的流量也就1块钱样子。。。
    plprapper
        15
    plprapper  
       2014-11-12 13:41:03 +08:00
    @jarlyyn 图片迁移到CDN呗
    jarlyyn
        16
    jarlyyn  
    OP
       2014-11-12 13:44:46 +08:00
    @plprapper
    是我的我就迁移了,这不是蛋疼么……

    [root@iZ23mx7tfwpZ httpd]# cat ip_log |wc -l
    500
    [root@iZ23mx7tfwpZ httpd]# uniq ip_log |wc -l
    461

    10多分钟的数据

    要我说这看上去分明是推广做的好么……
    plprapper
        17
    plprapper  
       2014-11-12 13:45:53 +08:00   ❤️ 1
    @jarlyyn 你uniq 之前 做过sort?
    jarlyyn
        18
    jarlyyn  
    OP
       2014-11-12 13:50:01 +08:00
    @plprapper 的确2了
    cat ip_log |sort|uniq|wc -l
    265
    kmvan
        19
    kmvan  
       2014-11-12 14:02:08 +08:00
    交给渣浪图床吧
    jarlyyn
        20
    jarlyyn  
    OP
       2014-11-12 14:03:04 +08:00
    切换回了正常网站
    目前带宽仍然处于接近跑满状态
    ip地址仍在稳定增长
    cat ip_log |sort -u|wc -l
    788
    jarlyyn
        21
    jarlyyn  
    OP
       2014-11-12 14:07:56 +08:00
    cat ip_log |sort -u|wc -l
    1053

    半个多小时ip过1000了,是不是该恭喜客户网站做的很成功-________-
    scys
        22
    scys  
       2014-11-12 14:28:34 +08:00
    用下简单流量限制,每个IP流量限制流量,单线程限制为10k,让他们慢慢拉。
    然后做个黑名单,在黑名单的,直接每个IP每个线程512b,嗯嗯,看谁拖死谁。
    记得开多几个IP,分流,反正看你现在是有这些成本在了,就直接和他们玩~嗯嗯
    Yamade
        23
    Yamade  
       2014-11-12 15:39:31 +08:00
    关键时刻 还是360管用.至于很多人黑360,有的人支持360,你怎么看?
    http://wangzhan.360.cn/
    jarlyyn
        24
    jarlyyn  
    OP
       2014-11-12 15:59:11 +08:00
    2小时3600多ip。
    丢给客户了。毕竟运维这块他自己做的-____-
    plprapper
        25
    plprapper  
       2014-11-12 16:13:33 +08:00
    @jarlyyn 呵呵 这个错误无数人犯过了 不过这么点访问量 不能算DDOS吧
    jarlyyn
        26
    jarlyyn  
    OP
       2014-11-12 16:16:22 +08:00
    @plprapper 阿里云100mb带宽被跑满了……
    jarlyyn
        27
    jarlyyn  
    OP
       2014-11-12 16:16:52 +08:00
    @plprapper 何况只是一个普通的展示产品的网站……
    hicdn
        28
    hicdn  
       2014-11-12 16:21:31 +08:00
    加速乐的防 CC 远远领先国内其他几家
    RIcter
        29
    RIcter  
       2014-11-12 17:34:23 +08:00
    真正的 DDOS 会在几秒钟打挂一个网站的.._(:3
    jarlyyn
        30
    jarlyyn  
    OP
       2014-11-12 17:35:35 +08:00
    @RIcter 这个也是……
    反正阿里云单台ecs的带宽上线是200mb,客户已经上到100mb了……
    xdeng
        31
    xdeng  
       2014-11-12 17:41:43 +08:00
    图片太大了吧 css js html 没压缩 ?
    xdeng
        32
    xdeng  
       2014-11-12 17:42:21 +08:00
    阿里的 阀值 调低啊。。。
    plprapper
        33
    plprapper  
       2014-11-12 17:58:56 +08:00
    @jarlyyn 你这不是被脱库了吧 还得是反复脱 哈哈
    jarlyyn
        34
    jarlyyn  
    OP
       2014-11-12 18:01:46 +08:00
    @plprapper 库没拖,就是用几千个ip访问各种图片和资源……
    说实话,一个产品展示网站,拖库有啥用……
    jarlyyn
        35
    jarlyyn  
    OP
       2014-11-12 18:02:52 +08:00
    @xdeng 关键架补住IP多啊
    3600多ip,还只是2个小时的数据。
    我真不明白,有这资源了和一个小产品目录网站较啥劲。
    em70
        36
    em70  
       2014-11-12 18:10:11 +08:00 via Android
    50m带宽都扛不住?这ddos成本够高的,耗着呗,带宽临时加200,对方比你贵得多,打不死你他就死,很快他就扛不住了
    jarlyyn
        37
    jarlyyn  
    OP
       2014-11-12 18:20:32 +08:00
    @em70 100mb都抗不住……
    halczy
        38
    halczy  
       2014-11-12 18:23:49 +08:00
    加个CDN例如Cloudflare之类的. 听说免费Plan一共能顶100TB流量.
    nilai
        39
    nilai  
       2014-11-12 18:31:21 +08:00   ❤️ 1
    @jarlyyn 首先 50M算初学级的DDOS了。 要产生50MBDDOS的流量很容易,成本非常的低,对方完全有这经济实力跟你耗 其实 前面一些人在说上硬防,完全是没实际接触过。 阿里云主机是你没法自己上硬防, 假若能上硬防, 又一个基本常识 你的带宽只有50MB,就算你在前面加个黑洞一样没用。 最后,可能能缓解的是 增加带宽,CDN, 日志分析,封IP,上软的WAF。 可能会有用,若有详细咨询,可加马化腾联系
    extreme
        40
    extreme  
       2014-11-12 18:39:52 +08:00   ❤️ 2
    我觉得准确点,应该是CC攻击。
    要对抗云盾都防不住的CC攻击,那就得做出一点牺牲了。
    访客访问网站,首先检查Cookie中有没有SessionID,没有的话就302重定向至一个页面,要求输入验证码,正确后就生成一个Session,Set Cookie,Cookie中带Session ID,Sssion中保存访客的IP,并生成一串随机字符,然后Set一个Cookie,内容为随机字符。

    已有Session的访客,每次访问就检查Session中的IP是否与访客的IP一致,否就302到验证码页面,要求重新验证。
    IP检查通过后,就检查Cookie中的随机字符是否与Session中的随机字符匹配,否就302到验证码页面要求重新验证,匹配的话,就重新生成一串随机字符到Session,并且重新Set随机字符的Cookie。

    这样做非常有效,但会影响搜索引擎的抓取,不过总比被CC到宕机无法访问好。
    cst4you
        41
    cst4you  
       2014-11-12 20:40:01 +08:00
    下你图片, 看起来挺贱的....
    em70
        42
    em70  
       2014-11-12 21:04:35 +08:00 via Android
    @nilai ddos成本绝对比直接加带宽高得多,阿里云可以临时加带宽,按小时收费很便宜,上个200m,不够就300,攻击几天毫无效果,自然就放弃了,除非真是有不共戴天之仇,那应该报警,刑侦手段解决。
    @jarlyyn
    nilai
        43
    nilai  
       2014-11-12 22:02:56 +08:00
    @em70 DDOS小于1G流量的我都不用买肉鸡,分分钟给你打出来, 至于更大的。 10G 3000/天 嘿嘿, 不能透露太多。
    em70
        44
    em70  
       2014-11-12 22:17:42 +08:00
    @nilai 阿里云10G带宽一天才2300 还赢你700 这玩意就是耗谁钱多呗.
    benjiam
        45
    benjiam  
       2014-11-12 22:23:44 +08:00 via Android
    这个简单 加个iptables访问限制单IP连接数和连接下载速度就可以了。Nginx有插件
    coderwang
        46
    coderwang  
       2014-11-12 22:44:56 +08:00
    apache 前加个haproxy haproxy 可以配置简单的ddos protection
    https://github.com/jvehent/haproxy-aws/blob/master/haproxy.cfg
    试试
    ryd994
        47
    ryd994  
       2014-11-13 00:02:17 +08:00 via Android
    iptables限制syn频率以及连接数,
    同时Nginx http_limit_req进一步限制请求频率
    lmaq
        48
    lmaq  
       2014-11-13 00:46:45 +08:00
    阿里云的话先工单申请换IP地址然后在用cname,因为攻击你的很可能攻击的是IP地址!
    konakona
        49
    konakona  
       2014-11-13 02:38:38 +08:00
    既然是放在阿里云服务器上,一定要提交工单问下客服有什么好的软硬措施推荐。
    再者,弄了CDN没有?搞个CDN,换IP。
    Lax
        50
    Lax  
       2014-11-13 03:43:52 +08:00
    @qiuai 再次看到有人吐槽云盾疑似误报的情况了
    msg7086
        51
    msg7086  
       2014-11-13 05:47:15 +08:00   ❤️ 1
    流量攻击,首先是考虑走CDN清洗无用流量。
    其次,nginx上有请求数限制,1分钟超过多少请求的,直接延迟或者返回503。
    最后,fail2ban可以配合nginx的请求数限制,对log进行分析,直接ban掉访问量过大的客户。


    @bobopu
    @xdeng
    阀!
    hellov22ex
        52
    hellov22ex  
       2014-11-13 08:06:25 +08:00
    @typcn
    问问这个基佬
    bobopu
        53
    bobopu  
       2014-11-13 08:28:10 +08:00 via iPhone
    @msg7086 sitelock其实并不贵,但效果却非常好。
    xdeng
        54
    xdeng  
       2014-11-13 08:48:16 +08:00
    @msg7086 我的 阀 没错啊
    msg7086
        55
    msg7086  
       2014-11-13 09:31:38 +08:00
    @xdeng 你的阈是怎么变性成阀的……
    jarlyyn
        56
    jarlyyn  
    OP
       2014-11-13 09:47:58 +08:00
    200mb还是挂了
    vwhenx2
        57
    vwhenx2  
       2014-11-13 09:54:13 +08:00
    @jarlyyn 同样放在阿里云被攻击1G流量攻击过的路过。
    1. 把所以的图片、js、css和静态页面做CDN。阿里云自带的CDN即可。这样只让动态请求到服务器。
    2. nginx里面设置访问频率限制,连续两次访问间隔不能低于1秒。

    然后就随便他怎么刷了,不会挂。
    jarlyyn
        58
    jarlyyn  
    OP
       2014-11-13 10:01:33 +08:00
    @vwhenx2 去看了下,这回换攻击方式了,rds挂了……
    服务器完全无反映,现在先关了rds看看日志去……
    xdeng
        59
    xdeng  
       2014-11-13 10:08:02 +08:00
    @msg7086 “阀(fá)值”是一个错误的用词,其正确用法是“阈(yù)值”。 我错了。。。
    jarlyyn
        60
    jarlyyn  
    OP
       2014-11-13 10:10:59 +08:00
    感觉阿里云的后台挂了,不管是ecs还是rds.....
    jarlyyn
        61
    jarlyyn  
    OP
       2014-11-13 10:21:43 +08:00
    昨天下午到现在,IP数为
    9171
    tabris17
        62
    tabris17  
       2014-11-13 10:28:00 +08:00
    @extreme 只有这个办法,CC的话只有攻击方IP充足,跑光你的流量,一点办法也没有。只有通过captcha来区分正常人类访问和程序访问
    qiuai
        63
    qiuai  
       2014-11-13 10:35:27 +08:00
    @Lax 毕竟是自动的,误报并不奇怪.但是影响正常使用就不爽了.

    @jarlyyn 来一发高防服务器?
    jarlyyn
        64
    jarlyyn  
    OP
       2014-11-13 10:39:50 +08:00
    @qiuai 客户服务器,只是程序是我们做的,帮他看看是啥问题而已……
    qiuai
        65
    qiuai  
       2014-11-13 10:44:17 +08:00
    @jarlyyn 哦.那你有的忙了...
    估计最后也是你在程序里加防CC的功能.比如说访问先等待个5秒,再跳转到正常内容.然后禁用图片的直接访问,限制图片的调用来源.这样也是最有效的.
    jarlyyn
        66
    jarlyyn  
    OP
       2014-11-13 10:52:38 +08:00
    @qiuai 图片的调用来源都是指向了网站首页……自己做程序当然知道,除了ip和端口一切都是客户端发来的数据,都可以伪造……
    qiuai
        67
    qiuai  
       2014-11-13 11:07:11 +08:00
    @jarlyyn 所以让你试试在显示首页的数据之前,先弄一个最简单的页面,最简单的JS,跑个5秒,然后再跳转到正常页面.如果是用机器来实现的.应该会返回一个200,然后加载完成,就继续下一次访问了,也就不会压到静态资源上.
    如果5秒还是有很多,可以延长到15秒.甚至改成点击一个按钮才会跳转到首页.然后把首页地址稍微改一下.这样不会因为有缓存而访问到.而正常用户只需要点击一次按钮就可以了.

    搜索引擎的话就考虑完全copy一份,放在不同的IP.然后单独给搜索引擎这个IP,这样不影响SEO.

    如果你想坑他,就把现在的首页改成一个跳转到下载个ISO文件的链接...让他去下载吧....
    typcn
        68
    typcn  
       2014-11-13 11:29:18 +08:00   ❤️ 1
    图片放到渣浪图床上
    css js 放在第三方存储上
    服务器只发页面并做页面缓存
    做一个页面 please wait , allow up to 5 secs
    所有页面没有SESSID禁止访问,首页打开之后,用户点击 javascript ajax 调取服务端, 服务器端sleep(5); 然后再发放SESSID并写入COOKIE。
    这样够狠吧
    typcn
        69
    typcn  
       2014-11-13 11:32:28 +08:00   ❤️ 1
    其实打出这样的流量完全是恶心你,随便去网上抓几万个代理,向这些代理发送打开XXX站点的请求,sleep上几秒然后把这个代理的连接断掉,一台几M带宽的机子就能打几百M。
    extreme
        70
    extreme  
       2014-11-13 12:57:37 +08:00
    为什么不采用验证码方式呢?
    你确定是带宽被占满,而不是物理内存与CPU吗?
    hyraxer
        71
    hyraxer  
       2014-11-13 12:59:50 +08:00
    把域名指向到lofter.com做个页面就好了
    jarlyyn
        72
    jarlyyn  
    OP
       2014-11-13 13:19:38 +08:00
    @extreme 是的。nload,top,free可以确认。
    benjiam
        73
    benjiam  
       2014-11-13 13:39:14 +08:00
    @typcn 如何获取几万个代理? 求具体实现方案。 某些代理上找的几百个代理IP 能连上1/100就不错了。
    typcn
        74
    typcn  
       2014-11-13 14:26:11 +08:00   ❤️ 1
    @benjiam 不会的那些代理站,正则匹配前10页内容,起码有好几千,那些东西连接肯定慢,设定超时长一点,我一般测试都有90%可用的,你1%都不到是设置的IE代理吧?
    typcn
        75
    typcn  
       2014-11-13 14:26:48 +08:00
    @benjiam 还有一些收费的软件,几块钱下载下来也能获取很多的
    benjiam
        76
    benjiam  
       2014-11-13 15:57:07 +08:00
    @typcn 能给个能搜索几千页的代理网站吗? 没看到几个能用的代理。 我用http 代理 很快就失败了。不是超时时间长短, 是根本连不上。爬虫希望用用
    Slienc7
        77
    Slienc7  
       2014-11-13 19:08:09 +08:00
    typcn
        78
    typcn  
       2014-11-14 03:04:35 +08:00
    @benjiam 以前玩贴吧爆吧,就用那些代理测试90%左右可用的,我记得还有个代理获取器里面内置了几十个网站,获取很简单,那些网站都是表格,正则匹配(\d+\.\d+\.\d+\.\d+)<看源代码中间内容>(\d+) 即可获取, 然后循环获取前10页,软件我现在没用那台电脑,找到了发给你。10页之后的基本就不能用了。
    raptor
        79
    raptor  
       2014-11-19 09:23:10 +08:00
    我们公司的网站之前也碰到这种情况,我研究了一下日志,发现对方用了一堆IP,每个IP只使用一小时,只请求首页,我们首页连图片总共也就1M左右,30M带宽很容易就被占满。
    后来服务商用加按钮的方法解决,但是公司方面不认可。
    我建议他们改程序加IP记录并BLOCK,但是他们懒,最后把我们从阿里云迁出,租了独立服务器解决……
    ihacku
        80
    ihacku  
       2014-12-05 10:33:47 +08:00
    @typcn 求那个代理获取器
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1380 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:05 · PVG 01:05 · LAX 09:05 · JFK 12:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.