防火墙 | DDos攻击防范技术

防火墙 | DDos攻击防范技术

DDos通用技术防范技术

静态过滤:直接丢弃位于黑名单中的IP地址发出的流量,或者直接让位于白名单的IP地址发出的流量通过。

畸形报文过滤:过滤利用协议栈漏洞的畸形报文攻击。

扫描窥探报文过滤:过滤探测网络结构的扫描型报文和特殊控制报文。

源合法性认证:基于应用来认证报文源地址的合法性,这些应用支持协议交互。清洗设备通过发送源探测报文及检查响应报文来防范虚假源或工具发出的攻击流量。

基于会话防范:基于会话来防御并发连接、新建连接或异常连接超过阈值的连接耗尽类攻击。
特征识别过滤:主要靠指纹学习和抓包分析来获得流量特征,防范僵尸工具或通过代理发起的攻击流量,以区别正常用户的访问行为。

其中抓包分析是指对异常/攻击流量抓包以生成抓包文件,通过对抓包文件进行解析和提取指纹,能够获取流量特征。

流量整形:流量经过此前各分层过滤之后,流量依然很大,超过用户实际带宽,此时采用流量整形技术,确保用户网络带宽可用。

在这里插入图片描述

  • 基于接口的防御
    在配置防御策略时,管理员应该首先配置基于接口的防御策略,以应对大流量攻击。Anti-DDoS设备在收到报文时,首先在接口板对报文进行合法性检查。通过认证的报文允许通过;没有认证通过的报文禁止通过。

  • 基于全局的防御
    配置全局防御方式后,设备对流经的所有流量进行检测和清洗,不区分流量属于哪个防护对象。

  • 基于防护对象的防御

  • 基于网段的防御。基于网段的防御是指针对整个防护对象设置防御阈值,将每个防护对象的所有目的IP流量集中统计,一旦流量达到告警阈值则触发防御。

  • 基于服务的防御。清洗设备将到达防护对象的流量按照目的IP地址、协议类型和目的端口,定义为不同的服务类型,针对不同类型的服务配置不同的防御策略,进行精细化防御和差异化防御。

  • 基于防护对象的默认防御策略。默认防御策略中的各种防御方式主要是针对非服务流量进行防御的。到达防护对象的流量中,通常除了服务流量外,还有很多非服务流量。这些非服务的流量有的是用户操作产生的流量(比如:Telnet、Ping等),有的是冗余或者攻击流量,针对不同类型的流量,可以配置不同的防御手段。

在这里插入图片描述

首包丢弃

处理过程

开启首包丢弃功能后,SYN、TCP、DNS、UDP、ICMP各类流量超过阈值后,设备会丢弃报文首包。

基于三元组(源IP地址、源端口和协议)来匹配报文,并通过报文的时间间隔来判断首包:
当报文没有匹配到任何三元组时,认为该报文是首包,将其丢弃。

当报文匹配到某三元组,则计算该报文与匹配该三元组的上一个报文到达的时间间隔。
如果时间间隔低于设定的下限,或者高于设定的上限,则认为是首包,将其丢弃;如果时间间隔落在配置的上限和下限之间,则认为是后续包,将其放行
在这里插入图片描述

阻断和限流

  • 阻断:在自定义服务策略中表示将匹配自定义服务的报文全部丢弃;在默认防御策略中表示将自定义服务以外的此协议报文全部丢弃。

  • 限流:在自定义服务策略中表示将匹配自定义服务的报文限制在阈值内,丢弃超过阈值的部分报文;在默认防御策略中表示将自定义服务以外的此协议报文限制在阈值内,丢弃超过阈值的部分报文

静态指纹过滤

通过配置静态指纹,对命中指纹的报文进行相应的处理,从而对攻击流量进行防御

  • TCP/UDP/自定义服务可基于载荷(即报文的数据段)提取指纹

  • DNS报文针对域名提取指纹

  • HTTP报文针对通用资源标识符URI(Uniform Resource Identifier)提取指纹。

流量型攻击

TCP类型报文攻击防御

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

  • 第一次握手:建立连接时,客户端发送SYN包(SYN=J)到服务器,并进入SYN_SENT状态,等待服务器确认。

  • 第二次握手:服务器收到SYN包,必须发出ACK包(ACK=J+1)来确认客户端的SYN包,同时自己也发送一个SYN包(SYN=K),即SYN-ACK包,此时服务器进入SYN_RCVD状态。

  • 第三次握手:客户端收到服务器的SYN-ACK包,向服务器发送确认包ACK(ACK=K+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
    如果服务器发出的SYN-ACK包异常,客户端会发送一个RST包给服务器,服务器重新回到LISTEN监听状态。

TCP采用四次握手来关闭一个连接。

  • 第一次握手:客户端发送FIN包(FIN=M)到服务器,表示客户端没有数据要向服务器发送了,同时进入FIN_WAIT_1状态,等待服务器确认。

  • 第二次握手:服务器收到FIN包,必须发送ACK包(ACK=M+1)来确认客户端的FIN包,但服务器数据还没传完,所以不发送FIN包,此时服务器进入LAST_WAIT状态。

  • 第三次握手:当服务器没有数据要向客户端发送时,服务器发送FIN包(FIN=N)到客户端,并进入LAST_ACK状态,等待客户端最终确认。

  • 第四次握手:客户端收到FIN包,发出ACK包(ACK=N+1)来确认服务器的FIN包,进入TIME_WAIT状态,等待连接完全断掉。此包发送完毕,服务器进入CLOSED状态,完成四次握手,双方连接断开。

在这里插入图片描述

SYN Flood攻击

是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

SYN Flood攻击防御——源合法性验证技术

internet来的流量访问应用服务器,清洗设备通过各种源探测技术,鉴别哪些是正常流量,哪些是攻击流量,对此有针对性的防范。

基于传输协议层的源合法性验证技术

利用TCP协议原理,针对TCP类Flood进行检测和防御。用户进行TCP连接,清洗设备回应经过的SYN-ACK报文,通过用户的反应来判断此用户是否正常。主要用于来回路径不一致的情况下。

  • 正常用户会发送:非此链接,关闭,我将重新尝试…
  • 攻击者不会分析返回的报文,还是继续发送访问请求

ACK Flood攻击与防御原理(ACK的全称为Acknowledge character,即确认字符,表示接收到的字符无错误)

  • 攻击原理:攻击者利用僵尸网络发送大量的ACK报文,冲击网络带宽,造成网络链路拥塞;同时被攻击服务器接收到攻击报文后需要检查会话以确认报文是否属于某个会话,如果攻击报文数量庞大,服务器处理性能耗尽,从而拒绝正常服务。

  • 防御原理:当ACK报文速率超过阈值时,启动会话检查。
    如果清洗设备检查到ACK报文没有命中会话,则有两种处理模式:
    “严格模式”:直路部署组网中建议采用“严格模式”。如果清洗设备没有检查到已经建立的会话,直接丢弃报文。
    “基本模式”:旁路部署动态引流时,对于引流前已经建立的会话,清洗设备上会检查不到会话,此时建议采用“基本模式”,即当连续一段时间内ACK报文速率超过阈值时,启动会话检查,设备会先让几个ACK报文通过,建立会话,然后对会话进行检查,确定是否丢弃报文。
    如果清洗设备检查到ACK报文命中会话,则检查会话创建原因。
    如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。
    如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,***正确的报文允许通过,不正确的报文则被丢弃。
    载荷检查是清洗设备对ACK报文的载荷进行检查,如果载荷内容全一致(如载荷内容全为1等),则丢弃该报文。
    只有启用了“会话检查”,才能启用“载荷检查”,对会话检查通过的报文进行载荷检查。

SYN-ACK Flood攻击与防御原理(SYN:同步序列编号Synchronize Sequence Numbers)

  • 攻击原理:SYN-ACK Flood攻击源会假冒服务器,发送大量SYN-ACK报文到攻击目标网络或服务器,如果网络出口有状态防火墙,引起状态防火墙处理异常;如果报文目的端口是被攻击服务器的TCP服务端口,会引起服务器TCP协议栈处理异常。

  • 防御原理:清洗设备基于目的地址对SYN-ACK报文速率进行统计,当SYN-ACK报文速率超过阈值时,启动源认证防御。

FIN/RST Flood攻击与防御原理

  • 防御原理:当FIN/RST报文速率超过阈值时,启动会话检查。
    如果清洗设备检查到FIN/RST报文没有命中会话,直接丢弃报文。
    如果清洗设备检查到FIN/RST报文命中会话,则检查会话创建原因。
    如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。
    如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,***正确的报文允许通过,不正确的报文则被丢弃。

UDP类型报文攻击防御

UDP Flood关联TCP类服务防范

  • 当UDP流量与TCP类服务有关联时,通过防御TCP类服务来防御UDP Flood
  • 攻击原理:攻击者通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包,且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
  • 防御原理:UDP是无连接的协议,因此无法通过源认证的方法防御UDP Flood攻击。但是有些服务例如游戏类服务,是先通过TCP协议对用户进行认证,认证通过后使用UDP协议传输业务数据,此时可以通过防御UDP Flood关联的TCP类服务来达到防御UDP Flood攻击的目的,当发现源IP异常时,将TCP服务和UDP服务流量都丢弃或限速。

载荷检查和指纹学习

使用载荷检查和指纹学习方法防御具有规律的UDP Flood攻击。

  • 攻击原理:攻击者通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包,且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
  • 防御原理:载荷检查:当UDP流量超过阈值时,会触发载荷检查。如果UDP报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
    指纹学习:当UDP流量超过阈值时,会触发指纹学习。指纹由清洗设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。

UDP分片攻击与防御原理

使用载荷检查和指纹学习方法防御具有规律的UDP分片报文攻击。

  • 攻击原理:攻击者向攻击目标发送大量的UDP分片报文,消耗带宽资源,造成被攻击者的响应缓慢甚至无法正常回应。
  • 防御原理:载荷检查丶指纹学习

DNS类报文攻击防御

DNS交互过程
在这里插入图片描述
DNS Request Flood攻击

  • 攻击原理:针对缓存服务器攻击
    针对授权服务器攻击
  • DNS Request Flood攻击源可能是虚假源,也可能是真实源。针对不同类型的攻击源,采取的防御方式也不同。

DNS Requestrian Flood防御原理
源认证方式可以有效防御DNS Request Flood虚假源攻击。Anti-DDoS设备基于目的地址对DNS Request报文的速率进行统计,当DNS Request报文的速率超过阈值时,启动源认证防御。源认证只针对访问受攻击域名的源IP地址实施,以减少误判和避免对正常业务的访问延时。源认证包括以下三种模式:
基本模式:在源认证过程中Anti-DDoS设备会触发客户端以TCP报文发送DNS请求,用以验证源IP的合法性,但在一定程度上会消耗DNS缓存服务器的TCP连接资源。“基本”模式源认证防御的处理过程如上图所示。
增强模式:原理和基本模式相同,但在源认证过程中,Anti-DDoS设备还充当代理的角色,使用一个与DNS缓存服务器路由可达的代理IP地址,将客户端发送的TCP格式的DNS请求报文转换为UDP格式并发送到DNS缓存服务器,从而减少消耗DNS缓存服务器的TCP连接资源。“增强”模式源认证防御的处理过程如上图所示。
当DNS缓存服务器被人为禁止提供基于TCP的DNS域名服务时,需要选择“增强”模式。
被动模式:对不支持以TCP报文发送DNS请求的客户端进行合法性认证,例如一些代理设备不响应DNS源探测报文或者在NAT场景下NAT设备不响应源探测报文。“被动”模式是将每个源IP地址发送的首包丢弃,触发重新请求,然后对DNS重传报文进行域名检查,如果后续报文和首包请求的域名相同则将源IP地址加入白名单。
这种被动模式防御方法在现网上是防御DNS缓存服务器的虚假源Request flood攻击的首选。

HTTP&HTTPS类报文攻击防御

HTTP Flood攻击与防御原理
防御HTTP Flood攻击的方法包括源认证、目的IP的URI检测和指纹学习
攻击原理

  • 攻击者通过代理或僵尸向目标服务器发起大量的HTTP报文,请求涉及数据库操作的URI或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。
    防御原理
  • HTTP Flood源认证
  • 目的IP的URI检测
  • 指纹学习

HTTP慢速攻击与防御原理
攻击原理

  • HTTP慢速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后,尽量长时间保持该连接,不释放,达到对HTTP服务器的攻击。常见的攻击有两种:
    Slow POST: 攻击者发送Post报文向服务器请求提交数据,将总报文长度设置为一个很大的数值,但是在随后的数据发送中,每次只发送很小的报文,这样导致服务器端一直等待攻击者发送数据。
  • Slow headers: 攻击者通过GET或者POST向服务器建立连接,但是HTTP头字段不发送结束符,之后发送其他字段进行保活。服务器会一直等待头信息中结束符而导致连接始终被占用。
    防御原理
  • 针对HTTP慢速攻击的特点,Anti-DDoS设备对每秒钟HTTP并发连接数进行检查,当每秒钟HTTP并发连接数超过设定值时,会触发HTTP报文检查,检查出以下任意一种情况,都认定受到HTTP慢速连接攻击,则将该源IP地址判定为攻击源,加入动态黑名单,同时断开此IP地址与HTTP服务器的连接。
  • 连续多个HTTP POST报文的总长度都很大,但是其HTTP载荷长度都很小。
  • 连续多个HTTP GET/POST报文的报文头都没有结束标识。

HTTPS类报文攻击防御
通过源认证方法来防御HTTPS Flood攻击
攻击原理

  • 攻击者通过代理、僵尸网络或者直接向目标服务器发起大量的HTTPS连接,造成服务器资源耗尽,无法响应正常的请求。
    防御原理
  • 通过源认证对HTTPS攻击进行防御,清洗设备基于目的地址对HTTPS请求报文速率进行统计,当HTTPS请求速率超过阈值时,启动源认证防御。

SSL DOS攻击与防御原理
通过源认证和SSL防御结合防御SSL DoS攻击。
攻击原理

  • SSL握手的过程中,在协商加密算法时服务器CPU的开销是客户端开销的15倍左右。攻击者利用这一特点,在一个TCP连接中不停地快速重新协商。
    防御原理
  • 源认证
  • SSL防御