敌情篇 ——DDoS抨击打击原理
DDoS抨击打击根本
DDoS(Distributed Denial of Service,散布式谢绝办事)抨击打击的主要目的是让指定目标无法提供正常办事,甚至从互联网上消失,是目前最强年夜、最难防御的抨击打击之一。
依照倡议的体例,DDoS可以简单分为三类。
第一类以力取胜,海量数据包从互联网的各个角落簇拥而来,梗塞IDC入口,让各类强年夜的硬件防御系统、快速高效的应激流程无用武之地。这种类型的抨击打击典型代表是ICMP Flood和UDP Flood,现在已不常见。
第二类以巧取胜,灵动而难以发觉,每隔几分钟发一个包甚至只需要一个包,便可让奢华配置的办事器不再响应。这类抨击打击主要是操纵协议或软件的缝隙倡议,例如Slowloris抨击打击、Hash冲突抨击打击等,需要特定情况机缘巧合下才能呈现。
第三类是上述两种的同化,轻灵浑厚兼而有之,既操纵了协议、系统的缺陷,又具有了海量的流量,例如SYN Flood抨击打击、DNS Query Flood抨击打击,是当前的主流抨击打击体例。
本文将一一描述这些最常见、最具代表性抨击打击体例,并介绍它们的防御方案。
SYN Flood
SYN Flood是互联网上最经典的DDoS抨击打击体例之一,最早呈现于1999年左右,雅虎是那时最著名的受害者。SYN Flood抨击打击操纵了TCP三次握手的缺陷,能够以较小代价使目标办事器无法响应,且难以追查。
标准的TCP三次握手过程如下:
1.客户端发送一个包含SYN标记的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP毗连的初始序号;
2.办事器在收到客户真个SYN报文后,将返回一个SYN+ACK(即确认Acknowledgement)的报文,暗示客户真个请求被接管,同时TCP初始序号自动加1;
3.客户端也返回一个确认报文ACK给办事器端,同样TCP序列号被加1。
颠末这三步,TCP毗连就成立完成。TCP协议为了实现靠得住传输,在三次握手的过程中设置了一些异常措置机制。第三步中如果办事器没有收到客户真个最终ACK确认报文,会一直处于SYN_RECV状态,将客户端IP插手期待列表,并重发第二步的SYN+ACK报文。重发一般进行3-5次,年夜约距离30秒左右轮询一次期待列表重试所有客户端。另外一方面,办事器在自己发出了SYN+ACK报文后,会预分派资源为行将成立的TCP毗连贮存信息做准备,这个资源在期待重试期间一直保存。更加重要的是,办事器资源有限,可以维护的SYN_RECV状态逾越极限后就不再接管新的SYN报文,也就是谢绝新的TCP毗连成立。
SYN Flood正是操纵了上文中TCP协议的设定,达到抨击打击的目的。抨击打击者伪装年夜量的IP地址给办事器发送SYN报文,由于伪造的IP地址几近不成能存在,也就几近没有设备会给办事器返回任何应答了。因此,办事器将会维持一个庞年夜的期待列表,不断地重试发送SYN+ACK报文,同时占用着年夜量的资源无法释放。更加关头的是,被抨击打击办事器的SYN_RECV队列被歹意的数据包占满,不再接管新的SYN请求,正当用户无法完成三次握手成立起TCP毗连。也就是说,这个办事器被SYN Flood谢绝办事了。
对SYN Flood有兴趣的可以看看.icylife /yunshu/show.php?id=367,这是我2006年写的代码,后来做过几次修改,修改了Bug,并下降了抨击打击性,纯做测试使用。
DNS Query Flood
作为互联网最根本、最核心的办事,DNS自然也是DDoS抨击打击的重要目标之一。打倒DNS办事能够间接打倒一家公司的全部业务,或打倒一个地区的网络办事。前些时候风头正盛的黑客组织anonymous也曾经宣布要抨击打击全球互联网的13台根DNS办事器,不过最终没有到手。
UDP抨击打击是最容易倡议海量流量的抨击打击手段,并且源IP随机伪造难以追查。但过滤比较容易,因为年夜大都IP其实不提供UDP办事,直接抛弃UDP流量便可。所以现在纯粹的UDP流量抨击打击比较少见了,取而代之的是UDP协议承载的DNS Query Flood抨击打击。简单地说,越上层协议上策动的DDoS抨击打击越难以防御,因为协议越上层,与业务关联越年夜,防御系统面临的情况越复杂。
DNS Query Flood就是抨击打击者把持年夜量傀儡机械,对目标倡议海量的域名查询请求。为了避免基于ACL的过滤,必须提高数据包的随机性。常常使用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除避免过滤外,还可以下降命中DNS缓存的可能性,尽可能多地消耗DNS办事器的CPU资源。