DDoS(Distributed Denial of Service)即分布式拒绝服务攻击,是目前最为强大、最难以防护的攻击方式之一。要理解DDos,得先从DoS提及。最基本的DoS攻击就是利用合理的客户端请求来占用过多的服务器资源,从而使合法用户没法获得服务器的响应。DDoS攻击手段迁在传统的DoS攻击基础之上产生的一类攻击方式,传统的DoS攻击通常是采用一对一的方式,当攻击目标的CPU速度、内存或者网络带宽等各项性能指标不高的状况下,它的效果是明显的。后端
但随着计算机与网络技术的发展,计算机的处理能力显著增长,内存不断增大,同时也出现了千兆级别的网络,这使得DoS攻击逐渐失去了效果。这时分布式拒绝服务攻击手段(DDoS)便应运而生了。理解了DoS攻击后,DDoS的原理就很是简单了,它指的是攻击者借助公共网络,将数量庞大的计算机设备联合起来做为攻击平台,对一个或多个目标发动攻击,从而达到瘫痪目标主机的目的。一般在攻击开始前,攻击者会提早控制大量的用户计算机,称之为“肉鸡",并经过指令使大量的肉鸡在同一时刻对某个主机进行访问,从而达到瘫痪目标主机的目的。缓存
DDos攻击的形式有不少种,如依赖蛮力的ICMP Flood、UDP Flood等,随着硬件性能的提高,攻击的机器规模愈来愈大,组织大规模的攻击愈来愈困难,如今已经不常见。还有就是依赖协议特征和具体的软件漏洞进行的攻击,如slow loris攻击、Hash碰撞攻击等,这类攻击主要利用协议和软件漏洞进行攻击,须要在特定环境下才会出现,更多的攻击者主要才有前面的两种方式混合,即利用了协议、系统的缺陷,又具有了海量的流量。服务器
而后来说解两个常见的DDos手段。网络
1.SYN Flood是曾经是最经典的攻击方式之一,要明白他的攻占原理,能够从TCP开始创建链接的过程开始提及。没基础的能够看下我这篇文章:架构
TCP超详细解析之三次握手,四次挥手,流量控制,滑动窗口 www.jianshu.com/p/b0d0023b3… 从新看下三次握手的部分。分布式
TCP协议为实现可靠传输,在三次握手的过程当中设置了 一 些异常处理机制。第三步中若是服务器没有收到客户端的ACK报文,服务端通常会进行重试,也就是再次发送 SYN +ACK 报文给客户端,而且一 直处于 SYN_RECV 状态,将客户端加入等待列表。重发一 般会进行 3-5次,大约每隔30秒左右会轮询一 遍等待队列,重试全部客户端;另外一 方面,服务器在发出SYN+ACK报文后,会预分配 一 部分资源给即将创建的TCP 链接,这个资源在等待重试期间-直保留,更为重要的是,服务器资源有限,能够维护的等待列表超过极限后就再也不接收新的SYN报文,也就是拒绝创建新的TCP链接。性能
SYN Flood正是利用了TCP协议三次握手的过程来达成攻击的目的。攻击者伪造大量的IP地址给服务器发送SYN报文,可是因为伪造的IP地址几乎不可能存在,也就不可能从客户端获得任何回应,服务端将维护一 个很是大的半链接等待列表,而且不断对这个列表中的IP 地址进行遍历和重试,占用了大量的系统资源。更为严重的是,因为服务器资源有限,大量的恶意客户端信息占满了服务器的等待队列,致使服务器再也不接收新的SYN请求,正经常使用户没法完成三次握手与服务器进行通讯,这即是SYN Flood攻击。网站
DNS Query Flood其实是UDP Flood攻击的 一 种变形,因为DNS 服务在互联网中具备不可替代的做用,一旦DNS服务器瘫痪,影响甚大。架构设计
DNS Query Flood攻击采用的方法是向被攻击的服务器发送海量的域名解析请求。一般,诸求解析的域名是随机生成的,大部分根本就不存在,而且经过伪造端口和客户端IP, 防止查询请求被ACL过滤。被攻击的 DNS 服务器在接收到域名解析请求后,首先会在服务器上查找是否有对应的缓存,因为域名是随机生成的,几乎不可能有相应的缓存信息,当没有缓存. I 该域名没法直接由该DNS服务器进行解析时,DNS服务器会向其上层DNS服务器递归查询域名信息,直到全球互联网的13台根DNS服务器。大量不存在的域名解析请求给服务器带来很大的负载,当解析请求超过必定量时,就会形成 DNS 服务器解析域名超时,这样攻击者便达成了攻击目的。设计
CC ( Challenge Collapsar)攻击属于DDos的一 种,是基于应用层 HTTP 协议发起的 DDos攻击,也被称为HTTP Flood.
CC攻击的原理是这样的,攻击者经过控制的大量 “肉鸡”或者利用从互联网上搜寻的大量知名的HTTP代理,模拟正经常使用户给网站发起请求直到该网站拒绝服务为止。大部分网站会经过CDN以及分布式缓存来加快服务端响应,提高网站的吞吐量,而这些精心构造的HTTP请求每每有意避开这些缓存,须要进行屡次DB查询操做或者一 次请求返回大量的数据,加速系统资源消耗,从而拖垮后端的业务处理系统,甚至连相关存储与日志收集系统也没法幸免。
cc攻击发起容易,防范困难,影响却普遍,是近年来 DDos攻击的主流方式。
cc攻击并不须要攻击者控制大量的 “肉鸡”,取而代之的是互联网上十分容易找到的各类 HTTP 代理,“肉鸡” 因为流量异常,容易被管理人员发现,攻击持续时间难以延续,而使用 HTTP 代理则使攻击者可以发起持续高强度的攻击。攻击在应用层发起,每每又与网站的业务紧密相连,使得防守一方很难在不影响业务的状况下对攻击请求进行过滤,大量的误杀将影响到正常访问的用户,间接地达成攻击者的目的。
其余比较常见的攻击手段还有DNS域名劫持、CON回源攻击、服务器权限提高,缓冲区溢出,以及一 些依赖于平台或者具体软件漏洞的攻击等,防护的滞后性使得攻击的手段永远都比防护的手段多。
后续整理待续。。。。
取材自:《大型分布式网站架构设计》 整理不易,喜欢请点个赞。