遇到 DDoS 怎么办?老司机给你支个招

2017-08-03 16:18:44 浏览数 (1)

今天云头条发了篇文章《哎!无奈,遇到DDos到底应该怎么办?阿里云将你扔进黑洞;腾讯云清退你!》,提到了一些网站在各家公有云厂商上遭遇DDoS(分布式拒绝服务攻击)后被公有云限制服务的无奈现状。我虽然从来没有正儿八经的做过安全,但是在互联网圈子混迹这么多年,也耳濡目染的知道一些基本的安全常识,而且由于协助一些公益网站做优化的关系,跟一些小黑客也有过几次小对抗,我来讲讲作为安全门外汉对这个问题的粗浅认识。

1、误解

先讲一个普遍的误解。近年来DDoS攻击越来越频繁,攻击流量越来越大,有很多人误以为是因为黑客掌握了越来越多的带宽资源可以发动越来越猛烈的攻击。实际上黑客掌握的攻击流量未必上升了,更可能的是越来越多的黑客掌握了反射式DDoS攻击的能力。

反射式的攻击形式可以这么理解:

有黑客伪装成你的样子,朝黑猩猩扔了一块石头,黑猩猩扭头一看,好哇你敢扔我石头,我砸死你,从地上检了十几块砖头都吵你丢过来。

丢一块石头给黑猩猩它会丢回来多少块石头呢?这里有个表。

(图片来自此文,也推荐感兴趣的读者阅读)

比如2015年8月25号,卖桃君还在锤子的时候,锤子有一次发布会遭遇了DDos攻击,攻击形式其实就是表中放大倍数最大的NTP反射式攻击。

但是根据2016年黑帽大会展示的新研究,攻击者正在改变DDoS DNS放大攻击战略 ,放弃NTP而采用其他形式,尤其是SSDP,原因可能是大量被利用的NTP服务器都做了修复,难以被利用了。

也就是说,看起来你遭遇了几十上百G的DDoS攻击流量,十有八九攻击你的黑客其实只使用了几个G的流量。

2、反射式攻击的局限性

从上面的介绍中我们可以看到,黑客如果要对你发起非常大流量的DDoS攻击,就不得不依赖哪些能够实施反射式攻击的协议。好消息是,这些协议中并不包含我们最常用的HTTP这样的网络服务协议。

因为采用了这些协议,黑客也就无法对一个“域名”去发起大流量的反射式攻击,而只能对一个具体的IP地址去发起攻击。

3、对抗

对抗这样的攻击形式,最重要的一点就是:

服务器的真实IP不要暴露出去,甚至于负载均衡的VIP也不要暴露出去

没事不要留一个靶子在外面给黑客没事打着玩。

那怎么把自己的服务器甚至于负载均衡的ip藏起来不让黑客知道,又能够继续提供服务呢?以前有很多公益网站也经常遭遇到黑客攻击,腾讯云的志愿者为他们提供技术对抗的基本套路就是:

使用CDN(内容分发)服务。

不熟悉CDN服务的同学可以移步搜狗百科 了解一下。(本来想贴维基百科上的词条的,发现搜狗百科的词条解释更接地气。)

基本上我们使用CDN会有两种做法:

3.1 CDN回源到云服务器或者回源到负载均衡IP。

这对于提供动态服务的网站比较适用,可以配置CDN的回源规则,让动态的请求被CDN缓存0秒,静态的请求 被CDN长时间缓存,从而在隐藏服务器IP的同时还能实现动静分离。

3.2:CDN回源到云对象存储(COS)的bucket,COS的bucket再回源到云服务器(或者云服务器主动把生成的静态资源推送给COS)。

这只适用于全静态的网站服务。这样做真实服务器被做了双重隔离,安全性更高,服务器负载更低。

4、代价

通过CDN来做网站节接入如果这么好,那为什么大家没有都这么做呢?

首先,CDN是被设计来分发静态的数据的。当然腾讯云也有设计来分发动态数据的DSA,但是目前仍在内测。因此如果你的网站主要是提供动态数据的服务的,这样的数据二次分发有可能会降低分发效率。

更重要的是,用户的访问流量会被二次计费。

比如3.1中的做法,所有已经被缓存的静态请求,你只需要为CDN流量支付流量费用。但是所有的动态请求和第一次被访问,边缘节点和中间源还没有缓存的静态资源,你不但要为CDN流量买单,在CDN回源到你的服务器上获取最新数据的时候,你还要支付虚拟机的出带宽费用。

假如是3.2中的做法,从cos回源到cvm的流量通常已经少到可以忽略了,但是从CDN回源到COS的回源流量也是需要支付费用的。

这对于小网站其实不是个问题,因为腾讯云为CDN用户每个月都赠送10G的流量包,很多小网站都用不完,因此只要CDN是采用流量结算模式也就没有额外费用

对于规模比较大的网站,如果静态化程度高,并且采用足够好的动静分离方案,总体流量费用有时也是可以相比原来更低的,但是业务场景偏动态,就有可能需要多支付一些流量成本。

而且有一些网站,由于接入了CDN以后分发能力大幅度提升,后台服务器压力大幅度降低,用户访问起来更流畅,也可能带来更多的访问量从而推高了流量费用。

总的来说,web服务体量越大,越建议进行充分的动静分离。对于大客户,建议静态的资源尽量采用CDN分发,动态的流量还是应该采购大禹这样的专业防护产品。

5、局限性

通过CDN透传的方式隐藏了服务器真实IP,能够使针对IP的DDoS攻击手段失去了攻击的靶子,不但包括了上面提到的反射式攻击手段,也包括更多传统的针对IP的攻击手段。但是对于针对域名访问的DDoS不一定有效,比如基于HTTP的DDoS(假如黑客真的掌握了庞大的攻击流量而无需通过反射式放大流量)或者CC攻击。

好消息是,传统的攻击手段很多也有更加传统的对对抗手段。比如在腾讯云CDN管理界面中的“域名管理——访问控制”界面下就提供了防盗链、IP黑白名单、IP访问限频等配置项目。很多流行的系统也会有对抗 CC 攻击的配置项可以打开,比如我以前帮助一个公益机构的Discuz论坛进行过一次CC对抗 就只是开启了配置项目。

6、安全的本质

很多人认为安全就是“无懈可击”,总是试图追求最高级别的安全。如果是非常大的机构,极其注重安全的产品,按照这个思路去做安全并不是不可以,比如直接采购专业的安全产品。

但是在我看来,这是一个“保卫者视角”看待问题的方式。没有尝试从攻击者的视角去完整的看待攻防的双方。攻击者的很多信息其实我们现在是有所了解的,他们的很多软肋我们也知道,所以无条件的死守有时不一定是最高效的。

在我看来,安全的实质就是降低保护者的成本,提升攻击者的成本,让攻击变得更加困难、更贵,让攻击获益更低,直到跨越某一个平衡点,攻击的成本高于攻击能获得收益。比如说,我们把原本非常便宜的反射式DDoS攻击、同步洪水攻击的门槛抬高到贵了几十倍的非反射式的DDoS攻击、CC攻击。如果你只是一个小网站,黑客花那么高的成本来攻击你真的值得吗?

毕竟,杀头的生意有人做,赔本的生意没人做。

0 人点赞