本文将对DDoS攻击的原理进行分析,并提出相应的解决方案。

一个。分布式拒绝服务攻击

什么是DDoSDDoS是英国分布式拒绝服务的缩写,意思分布式拒绝服务首先,让我们了解相关的定义。

服务:系统提供的功能,用户将受益于服务的使用。

拒绝服务:如果服务的可用性被降低或其可用性丢失,服务中的任何干扰都称为拒绝服务。

拒绝服务攻击:指攻击者可以使计算机或网络不能正常运行,无法向合法用户提供所需的服务或降低服务质量。

分布式拒绝服务攻击:在不同位置的多个攻击者同时攻击一个或多个目标,或一个或多个攻击者控制多台机器的不同位置同时实施的攻击的受害者,这些机器的使用,因为攻击发出不同地方的分布,这种攻击称为分布式拒绝服务攻击。


如图所示,DDoS攻击将造成网络资源的浪费,链路带宽拥塞,服务器资源消耗和业务中断,这些攻击是由黑客非法控制计算机实现。黑客非法控制计算机后,他们将这些电脑变成bots,由地下网络远程控制,然后用这些计算机进行DDoS攻击,黑客也租了那个习惯在每单位成本低攻击电脑。谁真正拥有这些电脑的主人不知道自己的电脑被用来攻击别人。因为数以百万计的计算机已侵入了bots这样的攻击会很暴力的DDoS攻击的现象:

网络中充斥着大量无用的数据包。

制造高流量的无用数据,造成网络拥塞,使受伤的主机无法与外界沟通。

使用受害者主机提供的服务或传输协议中的缺陷,特定的服务请求可以以高速和高速的方式发送出去,使受伤的主机不能及时处理所有正常的请求。

严重的时间会导致系统死亡。

由于网络层的拒绝服务攻击,一些人利用网络协议的漏洞,有人抓住了网络或设备的能力有限,使得服务攻击管理员头疼的否定的预防和治疗。尤其是在大多数的网络环境中,防火墙,负载均衡设备和其他设备都是常用的在骨干网络。当DDoS攻击发生时,往往成为整个网络的瓶颈,造成整个网络的瘫痪。










两。数据包的结构

要了解DDoS攻击的原理,首先要了解数据包的结构,要知道得太多,但首先要回顾数据包的结构。

2.1 ip消息结构


2.2 tcp消息结构


TCP报头的标识(代码位)字段包含6个标志位:

SYN:标记位用于建立连接,允许双方同步序列号。如果SYN = 1和ACK = 0,则分组是连接请求,如果SYN=1和ACK=1表示接受连接。

鳍:这意味着发射机没有数据传输请求,希望释放连接。

RST:它用于重置连接。RST标记位置的数据包称为重置包。一般来说,如果TCP接收到的段显然不是与主机的连接,则将重传包发送到远端。

URG:急救数据的迹象。如果是1,就意味着这个包中包含的数据急救,急救数据指针是有效的在这个时候。

ACK:确认符号位置。如果是1,代表包中的确认号是有效的。否则,包中的确认号无效。

朴施厚:如果一个位置放置,接收方应将数据发送到应用层尽快无需等待缓冲区再次发送。

2.3 UDP消息结构


2.4 ICMP消息结构














三。DDoS攻击模式

3.1次洪水攻击

SYN Flood攻击是目前网络上常见的DDoS攻击,也是最经典的拒绝服务攻击,它利用TCP协议实现的缺陷,通过发送大量的端口在网络服务消息的源地址伪造攻击,这可能会导致在半开连接队列目标服务器全是这样,对防止其他合法用户的访问。这类攻击被发现在1996,但它仍然显示出强大的生命力。许多操作系统,甚至防火墙和路由器,不能有效地抵御这种攻击,因为它可以很容易地伪造源地址,它的痕迹是很困难的。它的数据包特征通常,源发送大量的SYN包和缺乏最后一步三次握手的p,ACK应答。

3.1.1原理

例如,攻击者首先伪造发起SYN请求到服务器地址(我可以建立连接),和服务器响应一个ACK + SYN(可证实),和真实的IP会认为我没有发送一个请求,我没有回应。服务器不接受一个响应,重试的3-5倍,等待的时间(一般为30秒,2分钟),并丢弃连接。

如果攻击者发送伪造源地址的SYN请求,服务器将消耗更多的资源来处理半连接,将节省遍历消耗大量的内存和CPU时间,并继续在IP SYN+ACK重试列表。最终的结果是,服务器没有时间注意到正常连接请求mdash;拒绝服务。与服务器上的一个命令netstat ndash;看syn_recv状态,你可以看到:


如果我们捕获视图:


您可以看到大量SYN包没有ACK响应。

3.1.2 SYN Flood保护

目前市场上一些防火墙的SYN代理的功能,这种方法一般是由二指定对象的确定(目标地址和端口,只有目标地址或源地址的SYN片段数阈值时),从同一源地址或发送到同一目标地址的SYN片段数之一这些阈值时,防火墙开始连接请求和代理回复SYN / ACK片段的截取,并将不完整的存储连接队列直到连接完成或请求超时的连接请求。当代理连接队列被填满的防火墙,防火墙拒绝所有新的SYN片段从所有地址在同一安全区域(Z(1)防止网络主机遭受不完全的三次握手攻击,但当攻击流量较大时,连接延迟大,网络负载更高。在许多情况下,它将成为整个网络的瓶颈。

随机丢包:随机丢包的方法可以减少服务器的负载,但正常连接的成功率也可以大大降低。

特征匹配:IPS的一种常见方法是在攻击时计算攻击消息的特征,并定义特征库,如没有TCP选项的SYN包过滤。

早期的攻击工具(如synkiller,XDoS,高清,等)通常发送64字节的TCP SYN报文,而主机的操作系统发送的信息超过64字节时发起的TCP连接请求。因此,你可以设定政策过滤64字节的TCP SYN报文的关键节点,和一些产品宣传的SYN洪水攻击完成。随着工具的改进,发出的TCP SYN报文模拟常见的操作系统,和IP头和TCP报头字段是完全随机的,所以不可能过滤攻击报文的设备按照特定的规则。在这个时候,它是必要的判断IP TTL值在包头根据经验和阻止他们,但我一年一度的方法具有高成本、低efficiency.syn饼干:饼干,分配每个请求的IP地址。如果IP在短时间内接收到重复的SYN消息,它将受到攻击。之后,这个IP地址的包将被丢弃,但是SYN cookie依赖于另一方的真正IP地址。如果攻击者使用sock_raw重写源地址的IP报文,这个方法行不通。

商业产品的保护算法

的SYN Cookie /综合类代理保护算法:所有的SYN包算法的响应检测到SYN包推出的源IP地址是真正的主动;如果IP地址是真的,那么IP响应检测防护装备包,从而建立一个TCP连接;国内大部分外抗拒绝服务产品使用此算法。

safereset算法:所有的SYN数据包的算法是根据探针特意构造错误的分组活动,真正的IP地址会发送RST包的防护设备,并推出了第二环节,从而建立一个TCP连接;使用这种保护方法的一些外国产品。

SYN重传算法:该算法利用tcp/ip协议的重传特性。源IP的第一SYN包在到达时被直接丢弃并记录状态,并在源IP的第二SYN包到达时释放。

综合保护算法:结合上述算法的优点,并引入IP信誉机制。当从一个源IP数据包的第一个SYN到达时,如果IP信誉值较高,用syncookie算法;对于较低的源IP协议栈的信誉是基于行为模型,如果SYN包验证,链接到syncookie检查,一旦IP接收验证来提高其声誉价值。有些设备还采用了表结构存储协议栈的行为模式的特征值,大大减少了存储量。










3.2确认洪水攻击

3.2.1原理

ACK Flood攻击是TCP连接建立以后,TCP报文的数据传输都是带有ACK标志,当主机在接收ACK标志的包,需要检查连接四元组数据包的存在,如果有检查的状态是合法的数据包,然后传送数据包的应用层数据包。如果不检查,发现为例,该数据包的目的端口的机器上是不公开的,那么主机操作系统协议栈会回应RST包告诉对方端口不存在。

在这里,服务器会做两个动作:查表,响应ACK / rst.this类攻击显然没有对服务器的SYN洪水带来的影响,因此攻击者必须使用大流量的ACK包的影响对服务器的影响。根据我们的TCP协议的理解,随机源IP的ACK包应丢弃快服务器,因为服务器的TCP协议栈有没有这些ACK数据包的状态信息。但事实上,通过测试,发现一些TCP服务是ACK洪水更敏感。例如,JSP服务器很难对付小ACK数据包的攻击下正常的连接请求。Apache或者IIS,10kpps ACK的洪水威胁不大,但较高的ACK洪水将导致服务器网络中断频率太高,并将负载太重停止响应。可以肯定的是,确认洪水不仅危害网络设备如路由器,还必须在服务器上的应用程序的一个小的影响。捕获:


如果没有开放端口,服务器将被直接丢弃,这将消耗服务器的CPU资源。

3.2.2 ACK防洪

对称性的判断来分析是否有病。所谓对称的判断是,传出的数据包大于包,因为攻击者通常使用大量的ACK包,为了提高攻击速度,内容基本上是相同的分组传输,这可以作为判断是否生成ACK洪水的基础。然而,在已知情况下,很少使用ACK洪水攻击。它将与其他混合攻击的方法,这样很容易造成误判。

处理一些防火墙的方法是建立一个哈希表来存储的TCP连接状态相对于主机的TCP协议栈的实现,国家检查过程相对简化。例如,我们不检查序列号,不使的报文乱序处理,但只有我们的统计数据是否有ACK包在一定时间内加入;;(即四元),这样我们可以大致确定连接;无论是活动;

3.3 UDP洪水攻击

3.3.1原理

UDP洪水流量的DoS攻击日益猖獗,原理很简单,常见的情况是使用大量的UDP数据包影响DNS服务器或RADIUS认证服务器和流媒体视频server.100k PPS的UDP洪水经常瘫痪整个网段瘫痪骨干设备如上线以来的防火墙。UDP协议是无连接的服务,在UDP洪水攻击,攻击者可以发送大量小的UDP数据包伪造源IP地址。然而,由于UDP协议是无连接的,如果我们打开一个UDP端口提供相关服务,我们可以攻击的相关服务。

在正常情况下,UDP包的双向流基本上是相等的,大小和内容是随机的,变化很大,在UDP泛滥的情况下,同一目标IP的UDP包出现在一侧,内容和大小固定:


53端口UDP洪水攻击捕获:


洪水包攻击(带宽,切片):











3.3.2 UDP Flood保护

UDP协议不同于tcp协议。它是一种无连接的状态协议,UDP应用协议是多种多样的。因此,对UDP洪水的保护十分困难,应根据具体情况加以处理。

要确定包的大小,如果包攻击是大的包攻击,则使用UDP分段方法:根据包大小的大小设置包的包大小,通常不小于1500。在极端情况下,可以丢弃所有UDP片段。

攻击端口是业务端口:根据服务的UDP最大包长度的最大包大小来过滤异常流量,设置UDP的最大包大小。

攻击端口是非业务端口:一个是丢弃所有UDP包,这可能会损害正常业务。一个是建立UDP连接规则,该规则要求所有UDP包都到端口。首先,我们必须与TCP端口建立TCP连接,但这种方法需要专业的防火墙或其他保护设备。

3.4 ICMP洪水攻击

3.4.1原理

ICMP洪水攻击原理与确认洪水原则相似。属于交通类型攻击模式。它还利用大流量给服务器带来沉重的负载,影响服务器的正常服务,因为许多防火墙目前直接过滤ICMP消息,ICMP洪水的频率很低,比较下面两张图片,您应该看看是否有ICMP洪水攻击。

常规ICMP包:


大包攻击时:


3.4.2 ICMP洪水保护

它的防御也很简单,直接过滤ICMP消息,这里没有详细的解释。

3.5连接洪泛攻击

3.5.1原理

连接洪水是一种典型的、有效的小流量宽带网络服务攻击方式。这种攻击方式越来越猖獗。这种攻击的原理是发射大量的连接,使用真实的IP地址的服务器,并建立发布之后很长一段时间的连接,占用了服务器的剩余连接资源(等待)过多,效率降低,甚至资源的枯竭,无法响应其他用户的连接开始。

其中一次袭击是开始大量的连接请求到服务器的每一秒,它类似于固定源IP的SYN Flood攻击,和真正的源IP地址是不同的。通常,这会限制对防火墙的每一源IP地址二连接数达到保护的目的但现在有一种缓慢的连接,这意味着几秒钟的时间与服务器建立连接。成功建立连接后,它不会释放和发送垃圾数据包给服务器定期,以便连接可以维持很长一段时间。这样一个IP地址可以建立与服务器的连接,服务器上,和能承受的连接数是有限的,从而达到拒绝服务的影响。

此外,当蠕虫大规模启动时,蠕虫代码相对简单。在传播过程中,会有大量具有相同源IP地址的包。对于tcp蠕虫,它是一种大规模的扫描行为,在判断连接洪水时应该注意这一点。

使用netstat -在攻击一个服务器:


有大量的连接状态,从几个来源。如果统计,你可以看到连接数较正常异常。当它长到一定值后,它开始波动,这表明它可能接近此时的性能极限。因此,这种攻击判断是不是大或交通量小的连;大量建立状态;总有一些新建立的波动。

3.5.2连接防洪

剩余连接活动间隙。

恶意连接的IP被禁止。

限制每个源IP的连接数。

特定的URL可以被保护。

HTTP溢出源在反查找代理后面。










3.6 HTTP攻击

3.6.1原理

这种攻击主要是针对ASP,JSP,PHP,CGI脚本,设计的存在,并调用MSSQLServer mysqlserver,Oracle数据库系统,并建立一个正常的服务器连接到TCP,并继续提交查询和脚本列表需要很多资源数据库调用,典型小发作的方法。一般来说,提交一个GET或占用客户的成本和带宽的指令后几乎可以忽略不计,但对于处理这个请求的服务器可能会发现在这个过程中成千上万的记录数记录,资源的成本是很常见的,数据库服务器可以支持小调查在执行指令上,为客户做一个简单的工作,所以T他攻击只能通过代理向主机服务器提交一个查询命令,短短几分钟的消耗服务器资源,导致拒绝服务,常见的现象是蜗牛的ASP程序,PHP的网站,失败,没有连接数据库的数据库主程序占用CPU的高。这种攻击的特点是可以完全绕过常见的防火墙的保护,并可以很容易地找到一些代理人进行攻击。缺点是,处理静态页面的网站的效果将大大降低,一些代理将暴露攻击者的IP地址。

根据资源请求捕获服务器上的大量IP,在实际情况下,可以使用代理地址连接。




3.6.2 HTTP得到保护

对于HTTP GET的判断,我们需要计算每个服务器获得每个服务器的GET请求数。如果它远远超出正常值,我们必须解码HTTP协议并找出HTTP GET及其参数(如URL)。

然后确定一个GET请求是从一个代理服务器或恶意请求,响应一个应答请求的关键要求发起人做出相应的反馈。如果人没有回应,这意味着由工具发起的请求是用这样的HTTP GET请求不能到达服务器达到保护作用。

3.7 UDP DNS查询洪水攻击

3.7.1原理

UDP DNS查询洪水攻击本质上是一种UDP洪流,但由于DNS服务器的不可替代的作用,一旦服务器瘫痪,其影响一般是大的。

UDP DNS Query Flood攻击的方法是用于发送请求来攻击服务器大,通常要求一个域名是随机生成的网络没有域名,当攻击DNS服务器的域名解析请求在服务器接收第一看如果你找不到有相应的缓存,该域名不可以直接从服务器解析时,DNS服务器将查询域名信息向上层递归DNS服务器,域名解析的过程带来了很多负载的服务器。每秒的域名请求数超过某个数字,这将导致DNS服务器解析域名超时。

据微软统计,DNS服务器所能承受的动态域名查询的上限是每秒9000个请求,我们知道,在一台P3 PC上,可以轻松地构造数以万计的每秒域名解析请求,足以使具有高硬件配置的DNS服务器瘫痪。这也说明了DNS服务器的脆弱性,同时也要注意蠕虫的泛滥也会带来大量的域名解析请求。

3.7.2 UDP DNS Query Flood保护

基于udp洪水的UDP DNS查询洪水攻击的保护

减轻服务器负载(使用DNS缓存)响应域名IP的自学习结果

大量DNS请求的源IP地址的带宽限制被突然启动,这降低了当攻击发生时DNS请求的源IP地址的优先级。

限制每个源IP地址每秒的域解析请求数

四。总结

读了这篇文章之后,你已经了解了7种主流的DDoS攻击,并了解相应的解决方案。虽然头脑,新的攻击方法也在源源不断地出现。然而,只要你掌握了相应的原则,这是不难破解的DDoS攻击,但前提是,你需要有相应的软件硬件对他们的原则的基础上,在本文的最后,给出几个小问题来帮助你回忆起你在你面前说什么。

1。上述方法概述。

2。如果您的主要业务是UDP音频应用程序,为了维护好处,尽可能减少攻击对其业务的影响,您通常应该如何注意它

三.僵尸是一个征服的矛:如何减轻僵尸网络攻击所带来的影响,如果一个ACK洪水攻击流量是由僵尸网络发送,所以它通常具有什么特点。