什么是DDOS攻击?

5月 17, 202467 mins read

什么是DDOS攻击?分布式拒绝服务(DDoS)攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。

什么是DDOS攻击  
 

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

34.png

基本定义

首先从一个比方来深入理解什么是DDOS。

一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?(只为举例,切勿模仿)恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;或者总是和营业员有一搭没一搭的东扯西扯,让工作人员不能正常服务客户;也可以为商铺的经营者提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客户,损失惨重。此外恶霸们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。嗯,网络安全领域中DoS和DDoS攻击就遵循着这些思路。


 

在信息安全的三要素--"保密性"、"完整性"和"可用性"中,DoS(Denial of Service),即拒绝服务攻击,针对的目标正是"可用性"。该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。


 

DdoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项指标不高的性能,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了-目标对恶意攻击包的"消化能力"加强了不少。这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。DDoS就是利用更多的傀儡机(肉鸡)来发起进攻,比从前更大的规模来进攻受害者

 

DDOS攻击方式

DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。 这种攻击方式可分为以下几种:

  • IP Spoofing

IP欺骗攻击是一种黑客通过向服务端发送虚假的包以欺骗服务器

的做法。具体说,就是将包中的源IP地址设置为不存在或不合法的值。服务器一旦接受到该包便会返回接受请求包,但实际上这个包永远返回不到来源处的计算机。这种做法使服务器必需开启自己的监听端口不断等待,也就浪费了系统各方面的资源。

  • LAND attack

这种攻击方式与SYN floods类似,不过在LAND attack攻击包中的原地址和目标地址都是攻击对象的IP。这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。

  • ICMP floods

ICMPfloods是通过向未良好设置的路由器发送广播信息占用系统资源的做法。

  • Application

与前面叙说的攻击方式不同,Application level floods主要是针对应用软件层的,也就是高于OSI的。它同样是以大量消耗系统资源为目的,通过向IIS这样的网络服务程序提出无节制的资源申请来迫害正常的网络服务。

  

攻击现象

  1. 被攻击主机上有大量等待的TCP连接;

  2. 网络中充斥着大量的无用的数据包;

  3. 源地址为假 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯;

  4. 利用受害主机提供的传输协议上的缺陷反复高速的发出特定的服务请求,使主机无法处理所有正常请求;

  5. 严重时会造成系统死机。

攻击特点

分布式拒绝服务攻击采取的攻击手段就是分布式的,在攻击的模式改变了传统的点对点的攻击模式,使攻击方式出现了没有规律的情况,而且在进行攻击的时候,通常使用的也是常见的协议和服务,这样只是从协议和服务的类型上是很难对攻击进行区分的。在进行攻击的时候,攻击数据包都是经过伪装的,在源IP 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的。这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的。

攻击特性

对分布式攻击进行必要的分析,就可以得到这种攻击的特性。分布式拒绝服务在进行攻击的时候,要对攻击目标的流量地址进行集中,然后在攻击的时候不会出现拥塞控制。在进行攻击的时候会选择使用随机的端口来进行攻击,会通过数千端口对攻击的目标发送大量的数据包,使用固定的端口进行攻击的时候,会向同一个端口发送大量的数据包。

攻击分类

按照TCP/IP协议的层次可将DDOS攻击分为基于ARP的攻击、基于ICMP的攻击、基于IP的攻击、基于UDP的攻击、基于TCP的攻击和基于应用层的攻击。

基于ARP

ARP是无连接的协议,当收到攻击者发送来的ARP应答时。它将接收ARP应答包中所提供的信息。更新ARP缓存。因此,含有错误源地址信息的ARP请求和含有错误目标地址信息的ARP应答均会使上层应用忙于处理这种异常而无法响应外来请求,使得目标主机丧失网络通信能力。产生拒绝服务,如ARP重定向攻击。

基于ICMP

攻击者向一个子网的广播地址发送多个ICMP Echo请求数据包。并将源地址伪装成想要攻击的目标主机的地址。这样,该子网上的所有主机均对此ICMP Echo请求包作出答复,向被攻击的目标主机发送数据包,使该主机受到攻击,导致网络阻塞。

基于IP

TCP/IP中的IP数据包在网络传递时,数据包可以分成更小的片段。到达目的地后再进行合并重装。在实现分段重新组装的进程中存在漏洞,缺乏必要的检查。利用IP报文分片后重组的重叠现象攻击服务器,进而引起服务器内核崩溃。如Teardrop是基于IP的攻击。

基于应用层

应用层包括SMTP,HTTP,DNS等各种应用协议。其中SMTP定义了如何在两个主机间传输邮件的过程,基于标准SMTP的邮件服务器,在客户端请求发送邮件时,是不对其身份进行验证的。另外,许多邮件服务器都允许邮件中继。攻击者利用邮件服务器持续不断地向攻击目标发送垃圾邮件,大量侵占服务器资源。

DDOS攻击流程

DDoS并不像入侵一台主机那样简单。了解这些原理之后,你便会更加明白入侵者的意图,从此便掌握了预防的技巧。一般来说,黑客进行DDoS攻击时会经过这样的步骤:

 

搜集资料

下列情况是黑客非常关心的情报:被攻击目标主机数目、地址情况 目标主机的配置、性能 目标的宽带。  
 

对于DDoS攻击者来说,攻击互联网上的某个站点,有一个重点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的www服务。  
 

如果要进行DDoS攻击的话,应该攻击哪一个地址呢?使这台机器瘫痪,但其他的主机还是能向外提供www服务,所以想让别人访问不到网站的话,要所有这些IP地址的机器都瘫掉才行。在实际的应用中,一个IP地址往往还代表着数台机器:网站维护者使用了四层或七层交换机来做负载均衡,把对一个IP地址的访问以特定的算法分配到下属的每个主机上去。这时对于DDoS攻击者来说情况就更复杂了,他面对的任务可能是让几十台主机的服务都不正常。  
 

所以说事先搜集情报对DDoS攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题。简单地考虑一下,在相同的条件下,攻击同一站点的2台主机需要2台傀儡机的话,攻击5台主机可能就需要5台以上的傀儡机。有人说做攻击的傀儡机越多越好,不管你有多少台主机我都用尽量多的傀儡机来攻就是了,反正傀儡机超过了时候效果更好。  
 

但在实际过程中,有很多黑客并不进行情报的搜集而直接进行DDoS的攻击,这时候攻击的盲目性就很大了,效果如何也要靠运气。其实做黑客也像网管员一样,是不能偷懒的。一件事做得好与坏,态度最重要,水平还在其次。

 

占领

黑客最感兴趣的是有下列情况的主机:网络状态好的主机 性能好的主机 安全管理水平差的主机

 

这一部分实际上是使用了另一大类的攻击手段:利用形攻击。这是和DDoS并列的攻击方式。简单地说,就是占领和控制被攻击的主机。取得最高的管理权限,或者至少得到一个有权限完成DDoS攻击任务的帐号。对于一个DDoS攻击者来说,准备好一定数量的傀儡机是一个必要的条件,下面说一下他是如何攻击并占领它们。  
 

首先,黑客做的工作一般是扫描,随机地或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,像程序的溢出漏洞、cgi、Unicode、ftp、数据库漏洞…(简直举不胜举啊),都是黑客希望看到的扫描结果。随后就是尝试入侵了,具体的手段就不在这里多说了,感兴趣的话网上有很多关于这些内容的文章。  
 

总之黑客占领了一台傀儡机了!然后他做什么呢?除了上面说过留后门擦脚印这些基本工作之外,他会把DDoS攻击用的程序上载过去,一般是利用ftp。在攻击机上,会有一个DDoS的发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。


 

实际攻击

经过前2个阶段的精心准备之后,黑客就开始瞄准目标准备发射了。前面的准备做得好的话,实际攻击过程反而是比较简单的。就象图示里的那样,黑客登录到做为控制台的傀儡机,向所有的攻击机发出命令:"预备~ ,瞄准~,开火!"。这时候埋伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。黑客一般会以远远超出受害方处理能力的速度进行攻击,他们不会"怜香惜玉"。


 

老道的攻击者一边攻击,还会用各种手段来监视攻击的效果,在需要的时候进行一些调整。简单些就是开个窗口不断地ping目标主机,在能接到回应的时候就再加大一些流量或是再命令更多的傀儡机来加入攻击。


 

当下DDoS攻击规模不断突破上限,攻击方式越发复杂。面对复杂的攻击形式,对于企业和组织来说依靠传统的解决方法并不能做到一劳永逸,无疑需要更完备的DDoS防护方案。本文将针对常见的攻击场景,聊聊DDoS防御手段有哪些。对这个内容感兴趣的小伙伴,可以接着往下阅读。

 

与访问控制一样,DDoS防御过去都是通过速率限制等技术在网络层进行观察和应用的。但对于如今的超大规模公有云提供商,网络层攻击需要更大的规模,并且应用通常与网络层相分离。因此,攻击者将在堆栈中“上移”;现代DDoS攻击针对的是HTTP层或应用本身的逻辑。例如,攻击者可能会利用公共图书馆提供的图书搜索API,反复请求图书馆中所有图书的完整列表,从而占用大量的数据库资源和网络带宽。  
 

说到DDoS防御手段有哪些,有几种可供选择的安全解决方案,如部署高防IP、定期检查服务器安全、使用防火墙和入侵检测系统以及使用云服务商的防御措施,这些解决方案都可发挥一定作用。未雨绸缪是DDoS防御的最佳方式。防止此类攻击的关键是要具备一种可以区分恶意和合法流量的系统。为了保护客户免遭DDoS攻击,F5分布式云平台高效运营着一个全球安全网络,该解决方案将本地防御与基于分布式云的DDoS防护相结合,以强大的控制力抵御具有针对性的网络和应用层攻击。  
 

实际上,在面对本地防护、云清洗服务和混合解决方案等选择,问题不在于是否应该部署DDoS防御架构,而是哪一种架构可以最有效地帮助公司确保服务的连续性,并在面临攻击时将损失降至最低。F5 DDoS缓解可以部署在业务所需的架构和运营模型中,提供架构和运营模式的拒绝服务防御,根据应用在云端、本地或两者混合的托管位置,以及所倾向的实际管理水平,提供最适合业务的保护模式。

098765.png

 

 如何抵御DDOS攻击  
 

ddoS分布式拒绝服务,简单来说是向服务器同时发布大量请求,让被攻击的服务器资源耗尽,服务器资源当然包括计算、网络、存储等,也就是通过一些手段使得服务器的计算性能达到上限、网络带宽被占满或者存储空间被用完,这样服务器就无法响应正常的请求了。用户可通过以下措施预防ddos攻击。

 

1、减少暴露面  
 

尽可能少的把端口暴露在公网上,减少可能的攻击点。  
 

配置安全组、acl访问控制或者iptables防火墙规则,这三种操作的目的其实都是一样的,都是为了限制不明客户端的访问,只是生效的地方不一样。一般来说,我们肯定希望把这些流量在离服务器更远的地方限制住。  
 

将服务器放在cdn、负载均衡后面,目的其实是和第二点一样。cdn可以缓存服务器资源到各个边缘节点上,让用户就近访问最近的边缘节点,从而缓解服务器的压力。负载均衡可以配置调度算法,将流量按需分配给后端服务器,并且对后端进行个性化的健康监测,将不健康的服务器踢出,不继续处理请求。

 

2、服务器安全加固  
 

及时更新安全补丁。

 

优化内核参数如半连接timeout时间、全连接队列长度、禁用icmp广播等等。  
 

3、及时止损  
 

如果没有防御成功,需要及时止损,将影响降到最低。  
 

在部署服务的阶段,我们就应该尽可能一个集群只部署一个服务,让服务之间互不影响,即使某个服务受到了攻击,也可以把影响降到最小。

建立完善的监控告警机制。这个公司内部应该都有,监控cpu使用率、连接数之类的,如果达到阈值,就会发出告警,交由专人处理。  
 

对系统进行压测,配置限速机制。我们需要对业务架构进行完善的压力测试,以评估现有架构的吞吐能力。并根据系统性能对业务进行限速,避免ddos攻击将服务器打挂。  
 

集群具有可伸缩性。当集群某些指标达到阈值时,为了让业务不受损,应该及时对集群进行扩容。  
 

4、识别异常流量  
 

预防ddos攻击的关键其实就是怎么识别正常流量和异常流量。这需要我们对ddos攻击的方法非常了解,对不同的ddos攻击类型做出相应的防御动作。  
 

服务器本身几乎没有识别异常流量的能力,所以大部分企业都会购买anti-ddos服务或者waf这样的专业设备来防御ddos攻击。  
 

anti-ddos当然也分为硬件设备和软件。硬件anti-ddos一般会旁挂到汇聚或者核心交换机上,交换机将流量镜像一份发给ddos,ddos识别出异常流量后会做一些流量清洗动作。  
 

软件antiddos可能会直接安装到四七层网关上,对经过四七层网关的流量进行过滤。显而易见,软件anti-ddos的优点就是便宜,简单;缺点是可能会拖累四七层网关的性能,可防护的ddos类型和防御能力肯定不如硬件anti-ddos。  
 

但其实有的地方硬件和软件anti-ddos都会用,硬件antiddos主要是进行一个流量清洗的功能,软件antiddos在硬件的后面,主要做一个兜底的作用。

 

5、syn flood

 

syn flood是最常见的一种ddos攻击,在服务器、网关、anti-ddos每一个环节都有相应的手段可以进行防御。  
 

syn cookie。syn cookie已集成到了linux内核,是在服务器上防御syn flood的方法。服务器每当收到一个syn,就会创建一个半连接队列,来缓存连接信息,当半连接队列满了之后,服务器就无法处理正常请求了。所以我们需要找到一种方法,不用记录全部的连接信息。我们知道,服务器发出的第二次握手的序列号是服务器自己生成的,syn cookie将连接的部分信息(mss、时间戳、四元组)通过某种算法生成一个唯一的序列号给客户端,并且这个序列号是可以解码的。服务器收到第三次握手的确认序列号后,将这个值减1,就可以还原出之前的序列号。可以看到,服务器巧妙地通过这种方式间接保存了一部分SYN报文的信息,节省了服务器的部分资源,但是同时也增加了加解密的计算。

 

syn proxy。syn proxy在四层网关中用的比较多,用法也比较简单。网关收到syn后,并不直接发送给后端服务器,而是代替后端,与客户端进行三次握手,当握手成功之后,再与后端服务器进行三次握手。syn proxy经常与syn cookie结合起来用,网关在于客户端三次握手的过程中可以使用syn cookie。syn proxy有一个问题就是两次握手的序列号不一样,所以网关在后续的数据传输阶段还要继续调整序列号和确认序列号。

首包丢弃。这种方法比较暴力,syn flood不会重传,所以我们只要把第一个syn包都丢弃了,正常请求后进行重传,异常请求就被丢弃了。


 

算法。antiddos可以通过统计syn包占到所有流量的比例,当这个比例达到某个阈值时,即判定受到了ddos攻击。然后就到了识别异常流量的时候了,如果antiddos可以查到会话信息,那就简单了,那些在几分钟内完成过三次握手的源ip地址,是ddos攻击的可能性较小,可以直接放行。剩下的ip地址是ddos攻击的可能性就比较大了。我们知道ddos攻击可以分为随机源ip和真实源ip两种。antiddos可以将syn包的个数除以源ip的数目,如果大于某个阈值,则可以判定为真实源ip攻击,直接将这几个源ip地址的syn包全部丢弃就可以了;如果小与某个阈值,则判定为随机源ip攻击,这时可以利用上面说的首包丢弃的方法,判断出正常流量,将正常的源ip地址放行。  
 

6、ack/fin/rst flood  
 

这三种ddos攻击比较类似,都依赖于会话。如果没有建立会话,那不管是在服务器还是在网关都会直接被丢弃的。判断是否收到攻击也比较简单,就比较命中会话的报文和没命中的比例就好了。  
 

7、其他  
 

其他的一些攻击比如udp reflect、http flood、ssl flood,都是一些接近正常流量的请求,感觉识别异常流量比较复杂,应该只能通过算法来识别。也可以借鉴syn flood的防御方法,主要还是得识别出异常流量和正常流量的源ip地址。  
 

最后如果有条件的话,可以使用hping3模拟三四层的ddos攻击,测试antiddos的功能。hping3不支持ipv6,不过网上有很多开源的ipv6 ddos测试工具如thcsyn6。

 

7、接入CDN5防护,直接接入,打不死,随便打,无效退款,支持测试,打死赔钱  

 

图像通讯
图标主要
通讯

订阅我们的时事消息

单击按钮即表示您同意我们的条款和条件