searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

抗DDOS防御简介

2024-06-17 09:28:27
18
0

          DDOS,即分布式拒绝服务攻击(Distributed Denial-of-Service attack),是一种网络安全威胁,DDOS攻击利用多台主机(通常是被黑客入侵或控制的“僵尸”计算机)对目标服务器发起大量的请求。这些请求通常是恶意的、重复的和占用大量带宽的,目的是使目标服务器过载,无法处理正常的网络流量,从而导致服务不可用。DDOS攻击可以导致目标网站或服务器无法访问,给网站运营者和用户带来严重影响。近年来,DDOS攻击的规模、频率和影响力都在不断增加,成为网络安全领域的一个重大问题。近年来发生了多起严重的DDOS攻击事件,如2020年美国金融服务公司Akamai遭到的2.3Tbps DDOS攻击,创下了当时的世界纪录。

一、攻击原理

分布式拒绝服务攻击是基于拒绝服务攻击衍生出的一种攻击。拒绝服务攻击的攻击

者与受害者之间关系是一对一的,当服务器的性能如CPU性能、内存较低时攻击效果 非常明显,导致服务器超负荷运转而拒绝其他正常服务[22]。但由于拒绝服务攻击可以轻 易发现攻击者,且对攻击方设备的性能要求同样很高,随着提供网络服务设备性能的不断提升,此种攻击效果已经不够明显。所以近年来DDoS攻击的数量和威胁逐渐增大,其利用了客户端/服务器技术,源攻击者将网络中众多代理服务器联合起来组成僵尸网络,共同对受害目标发起攻击,所以攻击能力成倍提升,且由于众多代理服务器的存在,让真实的攻击源端很难被发现

DDOS攻击示意图

       客户端:客户端是DDoS攻击的发起方,客户端通过非法入侵主控端并在主控端运行控制程序来下达攻击指令,从而操控攻击的整个过程,客户端设备可以是网络中的任 意节点。

主控端:主控端是客户端非法入侵的主机,客户端在主控端运行控制程序来控制其 动作,每个被入侵的主控端会继续寻找可入侵主机来扩大入侵主机数目。主控端会将客户端发送的攻击指令传达至代理端。

代理端:代理端在主控端的控制下对受害端发动攻击,攻击形式为向受害端发送攻 击报文。

采用以上多层级结构的原因有两个,一个是为了提高DDoS攻击的隐蔽性,使真正的攻击源很难被发现。攻击者为了更好的隐蔽自身,在发送攻击控制命令时往往采用单向通信,并且使用伪造攻击源IP地址和加密攻击命令等手段。中继聊天(Internet Relay Chat,IRC)协议也经常被DDoS攻击所利用,以达到在较难被发现的前提下控制代理端 的目的。近年来,对等网络(Peer to Peer,P2P)结构开始在某些DDoS攻击系统中出现, P2P的多节点结构使得攻击源更容易隐蔽起来[。二是为了增强攻击的效果,越多的主机被入侵控制意味着攻击发生时攻击效果越强

    典型的DDoS攻击步骤如下:

1、通过扫描大量主机寻找存在漏洞的主机;

2、入侵这些存在漏洞的主机获得主机控制权;

3、将攻击程序安装至入侵的主机;

4、已入侵的主机继续扫描入侵更多的主机;

5、在客户端执行攻击脚本;

6、向受害端发送攻击报文;

二、攻击特点

    1、攻击门槛低

由于DDoS攻击门槛低导致攻击非常活跃。通过不完全的统计数据来看,目前DDoS攻击仍处于高发期,并且攻击规模的大小、速度、持续时间和复杂性上仍在持续明显的增长。造成DDoS攻击操作简单门槛低的原因有两方面:一方面网络中存在着大量的 DDoS攻击工具及详细的指导教程,降低了攻击者的门槛,即使在不熟悉网络底层知识的基础上也可以根据工具进行攻击,使得攻击变成了一种简单、极易实施的行为;另一 方面是由于网络中大量的计算机、游戏服务器、开发代理服务器缺乏安全保护措施,这些设备一旦遭到攻击,很可能会被控制变为DDoS攻击的代理端,并且它们的性能较高,会对受害端产生较大的危害。Dos攻击分为单包攻击、流量型攻击以及应用层攻击;

    2、攻击目标清晰

DDoS攻击目标多为企业数据中心、公有云计算服务商、网络基础服务提供商如DNS服务商、新型的游戏服务商、政务基础网络等,因为攻击以上服务商具有较高的价值回 报。另外由于竞争对手之间的恶意竞争而出现的电子商务和游戏服务商之间的攻击也屡见不鲜。对于攻击DNS服务商而言,通过简单的小流量的DNS泛洪攻击就可能导致互联网基础框架大面积的拒绝服务。归结起来,政治上的恶意动机、对手之间的恶意竞争、敲诈勒索等经济犯罪是发起DDoS的主要动机。

3、攻击形式多样

分析现有的DDoS攻击形式,可以发现以SYN Flood为代表的大流量型攻击和以 HTTP Flood为代表的资源消耗型应用层攻击成为了主体。根据第三方的的攻击统计显示,SYN/UDP/ICMP Flood的攻击形式占据超过56%HTTPDNS的 应用层攻击占据了超过30%;针对诸如在线游戏和电子商务等对象,使用大流量冲击可以在短时间内令其网络拥塞,业务停滞;针对诸如网页游戏、对外网站、数据库应用服务器等,则可以通过HTTP Flood等应用层攻击形式,在流量较小的情况下实现精确打击,造成服务器拒绝服务;对于DNS之类的特殊业务系统则可以使用频繁的DNS查询进行攻击,使得DNS服务器拒绝服务从而影响互联网的正常访问。来自Prolexic的统计报告也显示出在当前阶段,以SYN Flood为代表的大流量攻击、以HTTP Flood为代表的应用层资源消耗型攻击是目前的防护重点。

 

三、典型DDoS攻击方式与防御方法

单包攻击

分为以下3类,畸形报文攻击、扫描类攻击、特殊控制类报文攻击:

l  畸形报文攻击:通常指的是攻击者发送大量有缺陷的报文,从而造成被攻击的系统在处理这类报文时崩溃;

l  扫描类攻击:是一种潜在的攻击行为,不直接造成破坏结果,通常是在进行攻击之前的扫描探测行为;

l  特殊控制类报文:也是一种潜在的攻击行为,不直接造成破坏结果,通常是在进行攻击之前通过发送特殊的报文探测网络结构,为后续发送真正的攻击做准备。

单包攻击主要是堵住各种漏洞,攻击者需要时间和精力进行漏洞发掘,并进行攻击;可以利用如下策略酌情应对:

      a.畸形报文攻击防御:

  1. 防火墙配置:部署具有防御畸形报文攻击功能的防火墙,这类防火墙能够识别并过滤掉有缺陷的报文,从而防止系统崩溃。
  2. 更新和打补丁:定期更新系统和应用程序,以修复可能存在的漏洞,减少被畸形报文攻击的风险。
  3. 监控和日志记录:实施网络监控,记录所有传入的报文,以便及时发现并应对畸形报文攻击。

     b.扫描类攻击防御

  1. 入侵检测系统(IDS):部署IDS来及时发现网络扫描行为和攻击IP,IDS可以实时监控网络流量,一旦发现异常扫描行为,即可发出警报。
  2. 防火墙阻断:一旦IDS检测到扫描行为并确定攻击IP,防火墙可以对这些IP进行阻断,防止进一步的攻击。
  3. WAF和IPS设备:应用Web应用防火墙(WAF)和入侵防御系统(IPS)来识别并阻断网络扫描类攻击。

    c.特殊控制类报文防御

  1. 报文过滤:通过配置防火墙规则,对特殊控制报文进行过滤,防止攻击者通过发送特殊报文来探测网络结构。
  2. 网络隔离:实施网络隔离策略,将关键网络区域与非关键区域隔离开来,降低特殊控制报文对网络整体安全的影响。
  3. 安全审计和监控:定期对网络进行安全审计,及时发现潜在的安全风险。同时,实施实时监控,一旦发现异常报文,立即进行处理。

      综上所述,针对单包攻击的防御需要从多个方面入手,包括部署防火墙、更新系统和应用程序、实施网络监控和日志记录、使用IDS和WAF/IPS设备等措施。这些措施可以相互配合,形成一个多层次的安全防护体系,有效地应对单包攻击带来的威胁。

2.   流量攻击

这种攻击的特点是无脑但有效;下面就介绍流量攻击

Asyn flood攻击

Syn flood攻击原理:

上图是TCP建立连接的三次握手,攻击者向服务器发送大量的syn报文,这些报文的源地址大多是不存在或者不可达的。当服务器恢复syn+ack后,不会收到ack。导致服务器上建立大量的半连接。这样服务器的资源就会耗尽,导致不能处理正常需求。

防火墙对syn攻击,一般采取三种方式,即简单限速,cookietcp代理,tcp源探测等方式;

l  简单限速:对超过阈值的流进行上报,并且将将其加入黑名单,以后遇到这种报文简单丢弃;

l  TCP cookieSYN Cookie是对TCP服务器端的三次握手做一些修改,专门用来防范SYN Flood攻击的一种手段。

它的原理是,在TCP服务器接收到TCP SYN包并返回TCP SYN + ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。这个cookie作为将要返回的SYN ACK包的初始序列号。当客户端返回一个ACK包时,根据包头信息计算cookie,与返回的确认序列号(初始序列号 + 1)进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接。

Tcp实现的具体过程详见文章:《TCP cookie原理及实现》

l  TCP proxyTCP代理指的是防护期部署在客户端和服务器中间,当客户端向服务器发送的SYN报文经过防火墙时,防火墙代替服务器与客户端建立TCP三次握手。如所示,防火墙先对SYN报文进行统计,如果发现链接一段时间内去往同一目的地址的SYN报文超过预先设置的阈值,则启动TCP代理。

启动TCP代理后,防火墙收到SYN报文,将会代替服务器回应SYN+ACK报文,接下来如果防火墙没有收到客户端回应的ACK报文,则判定此SYN报文为非正常报文。防火墙代替服务器保持半连接一定时间后,放弃此连接;如果防火墙收到了客户端回应的ACK报文,咋判定此SYN报文为正常业务报文,此时防火墙会代替客户端与服务器建立TCP三次握手,该客户端的后续报文都将直接送到服务器。整个TCP大力的过程对于客户端和服务器都是透明的。

TCP代理过程,防火墙对每一个SYN报文进行代理和回应,并保持半连接,所以当SYN报文流量很大时,对防火墙性能要求非常的高,其实,TCP代理的本质就是利用防火墙的高性能,代替服务器承受半连接带来的资源消耗。由于防火墙的性能一般比服务器高很多,所以可以有效防止这种资源消耗性的攻击;

l  TCP 源探测

通常情况下,使用TCP代理可以防御SYN flood攻击,但是在报文来回路径不一致的网络环境中,不能使用TCP代理方式防御 syn flood,可是在现网中,报文来回路径不一致的场景也是很常见地,那这种情况下如果发生了SYN flood,防火墙应该怎们防御呢?

   启动TCP源探测后,防火墙收到SYN报文,将会回应一个带有错误确认好的SYN+ACK报文。接下来如果防火墙没有收到客户端回应的RST报文,则判定此SYN报文为非正常报文,客户端为虚假源。如果防火墙收到了客户端回应的RST报文,则判定此SYN报文为正常报文,客户端为真实源,防火墙将该客户端加入白名单。在白名单老化前,这个客户端发出的报文都被认为是合法的报文。

目前作为防火墙来说,应该使用proxy来缓冲服务器遭受攻击的压力,并且结合cookie技术,来减轻防火墙半连接的资源消耗。

防火墙端的syn flood具体技术实现详见《云防火墙 syn flood设计》。

       B)   udp flood

              Udp flood 防御方式有两种:限流和指纹学习;

1、限流是指通过限流将链路中的UDP报文控制在合理的带宽范围之内,防火墙上针对UDP Flood 攻击的限流有4种方式;

l  基于流量入接口的限流:以某个 接口流量作为统计对象,对通过这个接口的流量进行统计并限流,超出的流量将被丢弃。

l  基于目的IP地址的限流:以某个IP地址作为统计对象,对达到这个IP地址的的UDP流量进行统计并限流,超出流量江北丢弃;

l  基于目的安全区域的限流;同上;

l  基于会话的限流:对每条UDP会话上的报文速率进行统计;如果绘画上的UDP报文速率达到了告警阈值,这条会话就被锁定后续命中这条会话的UDP报文都将被丢弃。等这条会话3S或者3S以上没有流量时,防火墙会解锁此会话,后续命中此会话的报文可以继续通过;

2、指纹学习;限流虽然可以有效缓解链路的压力,但是这种简单粗暴地方式会导致误判,可能会影响正常业务。为了解决这个问题,防火墙推出了针对udp flood的指纹学习。

       指纹学习是通过分析客户端向服务器发送的大量报文里面的载荷是否有大量一致的内容,来判定这个UDP报文是否异常。防火墙对去往目标服务器的UDP报文进行统计,当UDP脑文达到告警阈值时,开始对UDP报文进行指纹学习。如果相同的特征频繁出现,就会被学习成指纹。后续匹配指纹的UDP报文将被判定为攻击报文而被丢弃,没有匹配指纹的UDP报文将被防火强转发。

指纹学医原理基于一个这样的客观事实,即UDP LOOD攻击报文通常都拥有相同的特征字段,比如都包含某一个字符串,或者整个UDP报文的内容一致。这是因为攻击者在发起UDP FLOOD攻击时,为了加大攻击频率,通常都会使用攻击工具构造相同的UDP报文,然后高频发送到攻击目标,所以攻击报文具有很高的相似性。

而正常业务的UDP报文一般每个报文中的内容都是不一样的,所以通过指纹学习,防火墙就可以区分攻击报文和正常报文,减少误判。

从下面两张抓包截图中可以看到。到达相同目的IP地址的两个UDP报文的载荷是完全一样的,如果防火墙收到大量的类似这样的UDP报文,那么就可以判定发生了UDP FLOOD攻击。

 

       C)   icmp flood

ICMP(Internet Control Message Protocol)INPInternet Protocal Suite)中的一个主 要协议,其全称为互联网控制报文协议。其主要在网络设备间使用,例如:路由器,PC 主机及移动客户端等。ICMP被用来发送错误报文,例如某个主机的服务申请被拒绝或 是某个路由器无法到达。ICMPTCPUDP不同,它不直接应用在系统间交互数据信息过程,但其判断系统可达性的功能却对数据传输起到了重要的作用。ICMP协议实现的众多功能中最常用的是探测主机是否可达,也就是Ping功能Ping的过程就是网络中一个节点向任意其他节点发送类型值为8、代码值为0ICMP请求回显报文,若请求报文在传输过程中未被其他原因丢弃,目标节点会相应的返回类型值为0、代码值为0的回显应答报文,如果可以完成这个Ping过程则表示该网络节点可到达。ICMP报文首部结构如图所示:

ICMP头部

ICMP Flood攻击正是利用Ping的原理,利用工具向网络中某节点高速率发送大量 ICMP请求报文,使得网络设备忙于回复这些请求导致设备负担过重而无法处理正常业 务,此种攻击的应对方法为关闭Ping业务或在攻击发生时丢弃ICMP请求报文。

 

       D http  flood

HTTP(HyperText Transfer Protocol)是超文本传输协议,它规定WWW文件传输的标准。HTTP的基本概念最初由美国人Ted Nelson提出,它将计算机处理文本的方法命名为超文本,这成为超文本传输协议标准框架和发展基础,此后人们将其发展为一种发布和接收HTML页面的方法。HTTP在消息传输时使用客户端/服务器模式通信,客户端发送的请求报文与服务器回应的响应报文如图所示。

                                HTTP请求报文和响应报文

              HTTP协议使用TCP进行可靠的数据传输,其具体的通信过程如下:

1、客户端与服务器经过TCP三次握手建立稳定的连接。

2、客户端发送HTTP请求报文。

3、服务器回应客户端请求。

4、关闭TCP连接,本次数据请求结束

HTTP Flood攻击正是利用上述HTTP协议交互过程特征,客户端发送大量的HTTP GET请求,由于每响应一次GET请求,服务器都需要查询一次数据库,当客户端大量持续性的向服务器发送请求数据,服务器会将请求消息放入缓存队列,但由于请求数量 远超过缓存队列数量,服务器不断访问数据库回应缓存队列中的请求消息,导致其资源 耗尽无法应对正常用户请求。

HTTP Flood防御方法如图所示,代理设备位于客 户端与服务器之间处理报文,当客户端向服务器发起HTTP请求时,代理对客户端进行 两次重定向验证。第一次重定向验证,当代理设备收到HTTP GET请求后向其发送返回 HTTP重定向报文,重定向报文中包含一组随机的字符串,并设置标记要求客户端结束本次TCP连接。第二次重定向验证客户端访问的是否为第一次重定向中的URI+随机字符串地址。通过两次重定向验证请求报文真实性,经过验证的客户端才可以进行后续数据交互。

HTTP flood攻击防御图

 

0条评论
0 / 1000
六爻
1文章数
0粉丝数
六爻
1 文章 | 0 粉丝