5 为啥UDP易被用做DDoS?
TCP也可被DDoS用,但同样成本,反射型攻击更高效。反射型攻击主要基于UDP
5.1 UDP报文简单易构造
UDP头部。 RFC768 定义UDP头部的格式:
UDP头部仅8字节:
- 2字节源端口
- 2字节目的端口
- 2字节报文长度
- 2字节校验和
Wireshark看UDP报文:
TCP头部复杂多,还有序列号、确认号、各种标志位、各种TCP扩展选项。UDP报文头部因简单,减少攻击者伪造难度,只要做到:
- 伪造一个源IP
- 找到NTP等有反射攻击漏洞的服务器
- 向这些服务器发送构造好的虚假的UDP报文
5.2 UDP是无状态的
更关键 原因。UDP无状态的,不
但TCP先要三次握手,如攻击者SYN报文源地址是伪造成【被攻击站点IP】,SYN+ACK报文就直接回复到那个站点IP,而非攻击者。然后被攻击站点收到一个莫名其妙SYN+ACK,直接被RST,TCP握手结束,攻击中止。
跳过TCP握手,直接发应用层请求(源地址还是伪造成【被攻击站点的IP】)给反射服务呢?直接被RST,因为连握手都没做过。
即使通过握手,后续通信双方还有对序列号和确认号进行校验等机制。虽然这些技术上都可实现,但难度大很多,而选择UDP不需考虑这些。
所以, 用TCP就是直接攻击,不是反射攻击。如SYN攻击、半连接攻击、全连接攻击、CC攻击等。“性价比”反射攻击优势大。
6 对抗DDoS?
以后发现服务异常,如客户端请求十分卡顿,就在服务端抓包分析,就能快速定位是否DDoS攻击。
更简单直接证据,你的公网接口带宽使用图,如图上有明显突增,甚至达到了接口带宽的上限,那也基本可以判定是遭遇DDoS。
6.1 高防
服务架在公有云,考虑使用云商或其他专业安全服务商的高防产品。
高防需放置在源站前面的一类安全防护和清洗系统。它利用自身足够大带宽及强大防护清洗集群,实现流量清洗,最终把攻击流量拦截,清洗过后正常流量进入源站:
源站,就是被攻击的站点。
高防按时计费费用高昂,一般平时不接入高防。只有探测到被攻击,才自动或手动转高防。“接入高防”就是把站点域名指向高防域名,就把流量先流向高防,再经清洗后回到源站。
如攻击者不通过域名解析,盯IP攻击呢?把老IP解绑,让攻击流量进入路由黑洞,然后绑定新IP。不要暴露新IP信息,它只能给高防回源用,不能让更多人知道。
从防护的生效点,高防作用在 服务端侧。如我们能 在攻击的源头就做防护,效果更好?另一类DDoS防护产品的设计思想,典型产品电信云堤。
6.2 云堤
运营商自己系统,而无论被攻击站点还是肉机,都依托运营商公网线路才能进因特网,所以云堤 具有“地理”上的天然优势。可作用在肉机攻击流量进入骨干网之前,所以很可能这些攻击都没有机会走到被攻击站点的跟前了,相当于“扼杀在摇篮里”。
6.3 anycast和多POP
我们知道了DDoS的本质是挤占网络带宽,那么对付它的核心策略就是:
- 用更大的带宽来接纳,先解决正常流量被挤出网络的问题。
- 在接纳后进行清洗,把正常流量识别出来,发回给源站,让业务继续进行。
前面介绍了高防和云堤,两者分别在被攻击站点的近端和远端起到了作用,也都是商业服务。那么,另外一种方式是自己搞定,这也是一些 自身规模比较大的网站会部署的架构,它就是anycast和多POP。
anycast是网络术语,是指 多个地点宣告同一个网段或者同一个IP地址的行为。比如,最典型的电信的DNS服务地址114.114.114.114,还有谷歌的DNS服务8.8.8.8,就是在全国乃至全球各处做了anycast的IP地址。与这个词类似的,还有unicast和multicast,分别是指单播和多播。
比较大型的网站都会在各地部署POP点(也就是多POP),然后这些POP点会宣告相同的IP段。一旦有DDoS攻击,因为它的目标IP是属于anycast网段的,所以会被因特网的路由策略,相对均匀地分布到这些POP。
假如你有20个POP点宣告同一个网段,那么你就有机会把DDoS攻击化整为零,平均每个POP点承受1/20的攻击流量,大大降低了危害性。在攻击流量不高的时候,仅依靠自己的多个POP就可以吸收掉这些攻击流量,然后用自己的设备进行清洗就可以了。
anycast+多个POP+自有的清洗设备,这一整套做好以后,相当于自己建设了一个中小型的高防系统。
补充:这里的anycast一般是作用在网段级别。而在单个IP级别的anycast应用还较局限,目前主要还是主要应用在基于UDP的服务,比如DNS服务上。基于anycast的HTTP是比较前沿的领域,目前有少数公司已经开始实践,相信在不久的将来,应该会看到越来越多的公司应用HTTP over anycast。
6.4 CDN
前一点类似,CDN也通过“多点分布”防护或缓解DDoS。CDN服务商一般也采用anycast等策略混合使用,使其防护DDoS能力更出色。
7 总结
NTP反射攻击和SSDP反射攻击这两个典型的DDoS案例,了解反射放大攻击特点,主要利用:
- IP协议不对源IP进行校验,可伪造源IP,把它设定为被攻击站点的IP,这样就可以把响应流量引向被攻击站点。
- UDP协议是无连接的,可直接进行应用层一问一答,这就使得IP欺骗可以奏效。
- 某些服务具有“ 响应报文的大小是请求报文的很多倍”特点,使攻击“四两拨千斤”
系统性地分析了DDoS核心方法,“ 耗尽网络带宽”让被攻击站点无法正常提供服务。在排查方面,当我们发现服务异常时,在服务端做抓包分析,可以快速定位是否有DDoS攻击。也可以直接根据带宽使用图,关注到突发的巨型流量时也可以直接判定是DDoS攻击。
应对DDoS攻击的策略:
- 高防产品,可以防护非常巨大的攻击流量。
- 如对防护效果有更高需求,可以使用运营商的 云堤类的产品。
- 自身条件足够,部署 多POP和anycast,平均吸收攻击流量。
- 也可 CDN,让CDN天然分布式布局减轻DDoS影响
新命令 capinfos快速获取到抓包文件的整体信息,包括括抓包时长、总报文量、平均报文大小等信息。关于如何在Wireshark里解读出报文字段的长度,你也要知道至少下面这两种方法:
- 选中要解读的报文字段,然后在下面的字节码部分,数一下有底色的字节个数。
- 还是选中要解读的报文字段,在底边栏里也有对应的字节数的显示。
- UDP载荷最好不要超过512字节,IPv4协议规范建议,NTP和DNS这些基于UDP的协议都实现这规范。
8 FAQ
- “肉机”发出100Mbps的攻击流量,到达被攻击站点的时候,仍然是100Mbps吗?为什么呢?
- 为什么CDN可以达到缓解DDoS的效果呢?