网络层(TCP/UDP)攻击与防御原理

栏目: 服务器 · 发布时间: 5年前

内容简介:在TCP/IP协议中,TCP协议提供可靠的连接服务,SYN flood攻击是虚假源攻击典型代表,此类攻击的最显著特点就是发送海量变源或变源端口的报文到受害主机,耗尽受害主机资源或网络资源。

TCP正常的交互过程:

网络层(TCP/UDP)攻击与防御原理

图:TCP正常交互过程

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

  1. 第一次握手:建立连接时,客户端发送SYN包到服务器,等待服务器确认。
  2. 第二次握手:服务器收到SYN包,回应一个SYN-ACK包。
  3. 第三次握手:客户端收到服务器的SYN-ACK包,向服务器发送确认包ACK,此包发送完毕,完成三次握手。

如果服务器发出的SYN-ACK包异常,客户端会发送一个RST包给服务器,服务器重新回到等待状态。

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

  1. 第一次握手:客户端发送FIN包到服务器,表示客户端没有数据要向服务器发送了,等待服务器确认。
  2. 第二次握手:服务器收到FIN包,发送ACK包来确认客户端的FIN包,如果服务器数据还没传完,则不发送FIN包。
  3. 第三次握手:当服务器没有数据要向客户端发送时,服务器发送FIN包到客户端,并等待客户端最终确认。
  4. 第四次握手:客户端收到FIN包,发出ACK包来确认服务器的FIN包,此包发送完毕,完成四次握手,双方连接断开。

SYN Flood攻击原理与防御:

SYN flood攻击是虚假源攻击典型代表,此类攻击的最显著特点就是发送海量变源或变源端口的报文到受害主机,耗尽受害主机资源或网络资源。

攻击原理:

SYN Flood攻击是通过伪造一个源地址的SYN报文,发送给受害主机,受害主机回复SYN-ACK报文给这些地址后,不会收到ACK报文,导致受害主机保持了大量的半连接,直到超时。这些半连接可以耗尽主机资源,使受害主机无法建立正常TCP连接,从而达到攻击的目的。

制造大量半开连接(SYN SYN+ACK), 造成服务器资源消耗,形成拒绝服务攻击。

伪造报文一般源IP地址不存在或者不可达,大量的半开连接消耗了服务器的资源,是服务器无法处理正常的连接请求。

防火墙和Anti-DDoS设备防御方式简要对比:

针对虚假源,NGFW(防火墙)

  • 方法一: TCP代理 (proxy)

    缺点:大量的半开连接都在防火墙建立。看防火墙性能。

  • 方法二: TCP源探测

    伪装SYN ————-回应错误的SYN+ACK

    RST——————-证明是真实源

  • 方法三:首包丢弃+TCP源探测

> 配置:
> 全局开启
>  anti-ddos syn-flood source-detect alert-rate 3000 
> 接口调用
> interface GigabitEthernet0/0/2
>  anti-ddos flow-statistic enable 
>

针对虚假源,Anti-ddos 防御方法:

  • (1).首包丢弃

  • (2).源认证

    伪装SYN ————-达到阈值,触发源认证——发送正确SYN+ACK

    如果是伪装源SYN,回应不了ACK

    如果是真实的源回ACK,加入白名单 ,再发RST

针对于真实源,限速:

  • (1) TCP异常限速 (比例限速 非ACK与ACK设置比例)
  • (2) 始终限速,除了ACK以后其它都限速

以下为各自详细防御原理介绍。

Anti-DDoS防御方法:

针对虚假源攻击防御原理:

Anti-DDoS设备基于目的地址对SYN报文速率进行统计,当SYN报文速率超过阈值时,启动源认证防御。

基本源认证(Error-seq):

网络层(TCP/UDP)攻击与防御原理

图:Anti-DDoS基本源认证防御SYN Flood原理
  1. Anti-DDoS设备接收到SYN报文,发送SYN-ACK探测报文到SYN报文中的源IP地址。

  2. Anti-DDoS设备通过校验接收到的对探测报文的响应报文的真实性来确认源IP地址的真实性,以防止虚假源攻击。

    • 如果没有响应报文,则表示之前的SYN报文为攻击,Anti-DDoS设备不会将该SYN报文发给被防护服务器,有效终止了攻击。

    • 如果有响应报文,Anti-DDoS设备验证响应报文是否为真实的报文,如果真实,则表示该源IP地址通过源认证,Anti-DDoS设备将该源IP地址加入白名单,在白名单老化前,从此源IP地址发出的SYN报文都直接被Anti-DDoS设备转发。白名单老化时间可配置。

      未匹配白名单的源IP地址发出的SYN报文则继续被探测。

高级源认证(Right-seq):

网络层(TCP/UDP)攻击与防御原理

图:Anti-DDoS设备高级源认证防御SYN Flood的处理过程

针对真实源攻击防御方式:

真实源IP限速。

源IP加入白名单之后将继续对真实源IP进行统计分析,对异常的源IP进行限速,以防止真实源发起攻击。

SYN-Ratio异常限速:基于加入白名单的源来统计SYN报文与SYN报文+ACK报文的比例,当这个比例在配置时间内超过“SYN-Ratio比例阈值”时,判定源IP地址异常,则开始对单位时间内该源的SYN报文进行限制,具体机制如下:

  1. 在配置的检测duration时间段内,基于加入白名单的源IP来统计SYN报文和SYN报文+ACK报文的比例。如果该时间段内没有SYN报文或者ACK报文,则不刷新该时间段内SYN报文和ACK报文的比例以及各自的报文数,该检测时间段为无效统计duration区间。SYN报文和ACK报文的有效比例值仍按照上一有效duration区间的比值来判断当前是否仍然存在攻击,是否需要继续执行限速。
  2. 当SYN-Ratio检测出异常,则需要执行限速。

限速:

(1) TCP异常限速 (比例限速 非ACK与ACK设置比例)

(2) 始终限速,除了ACK以后其它都限速

防火墙防御方法:

(1)TCP代理(proxy):

TCP代理是指我们的FW部署在客户端和服务器中间,当客户端向服务器发送的SYN报文经过FW时,FW代替服务器与客户端建立三次握手。一般用于报文来回路径一致的场景。

网络层(TCP/UDP)攻击与防御原理

图:TCP代理报文交互过程
  • 如上图所示,FW收到SYN报文,对SYN报文进行拦截,代替服务器回应SYN-ACK报文。
  • 如果客户端不能正常回应ACK报文,则判定此SYN报文为非正常报文,FW代替服务器保持半连接一定时间后,放弃此连接。
  • 如果客户端正常回应ACK报文,FW与客户端建立正常的三次握手,则判定此SYN报文为正常业务报文,非攻击报文。FW立即与服务器再建立三次握手,此连接的后续报文直接送到服务器。

整个TCP代理的过程对于客户端和服务器都是透明的。

TCP代理过程中,FW会对收到的每一个SYN报文进行代理和回应,并保持半连接,所以当SYN报文流量很大时,对FW的性能要求非常的高。

但是TCP代理只能应用在报文来回路径一致的场景中,如果来回路径不一致,代理就会失败。

缺点:大量的半开连接都在防火墙建立。看防火墙性能。

(2)TCP源探测:

TCP源认证是FW防御SYN flood攻击的另一种方式,没有报文来回路径必须一致的限制,所以应用更普遍。

网络层(TCP/UDP)攻击与防御原理

图:TCP源探测报文交互图

TCP源认证对客户端的源只做一次验证通过后,就加入白名单,后续就不会每次都对这个源的SYN报文做验证,这样大大提高了TCP源认证的防御效率和防御性能,可以有效缓解FW性能压力。

(3)方法三:首包丢弃+TCP源探测

SYN-ACK Flood攻击与防御:

简要笔记:

SYN+ACK flood 攻击原理:

  • 发送大量伪造SYN+ACK,消耗依赖于会话表的设备性能

防御原理: 源认证:

  • 伪装SYN+ACK ———-触发阈值以后——SYN

    如果能回SYN+ACK 加入白名单

    如果不能SYN+ACK,那就虚假源

SYN-ACK Flood攻击的最大特点是报文源属于虚假源,且目的经常为现网存在的对外提供的服务器IP地址。通过对报文源的真实性检查来防御SYN-ACK Flood攻击。

攻击原理:

SYN-ACK Flood攻击源会假冒服务器,发送大量SYN-ACK报文到攻击目标网络,如果网络出口有依靠会话转发的网络设备,比如防火墙、IPS等设备,则大量的SYN-ACK报文会导致这类网络设备处理性能降低,甚至会话耗尽。

另外,SYN Flood的反射攻击也可能造成服务器发送大量的SYN-ACK报文。

防御原理:

对于防护对象SYN-ACK Flood防御,Anti-DDoS设备基于目的地址对SYN-ACK报文速率进行统计,当SYN-ACK报文速率超过告警阈值时,启动 源认证防御

对于服务的SYN-ACK Flood防御,当超过告警阈值时,Anti-DDoS设备直接丢弃SYN-ACK报文。

网络层(TCP/UDP)攻击与防御原理

图:源认证防御SYN-ACK Flood
  1. Anti-DDoS设备接收到SYN-ACK报文,发送SYN探测报文到SYN-ACK报文中的源IP地址。

  2. Anti-DDoS设备通过源IP地址对探测报文的响应报文校验源是否真实存在,以防止虚假源攻击。

    • 如果没有响应报文,则表示之前的SYN-ACK报文为攻击,Anti-DDoS设备不会将该SYN-ACK报文发给被防护目标,有效终止了攻击。

    • 如果有响应报文,Anti-DDoS设备验证响应报文是否为探测报文的回应报文,如果是,则Anti-DDoS设备将该源IP地址加入白名单,在白名单老化前,从此源IP地址发出的SYN-ACK报文都直接被Anti-DDoS设备转发。白名单老化时间可配置。

      未匹配白名单的SYN-ACK报文则继续被探测

ACK Flood攻击与防御原理:

简要笔记:

攻击原理:

  • 伪造大量ACK报文,拥塞链路,消耗依赖于会话转发设备性能,服务器资源耗尽

防御方法:

  • (1)会话检查

    严格模式—–Anti-ddos部署直路模式

    必须匹配会话表,匹配通过,不匹配丢弃

    基本模式—–Anti-ddos部署旁路模式

    匹配会话——-需要检查序列号,序列号正确通过

    不匹配会话——-第一个ACK可以通过,建立会话表,后续ACK匹配源地址

  • 2)载荷检查

攻击原理:

攻击者利用僵尸网络发送大量的ACK报文,通常会造成以下三种情况的危害。

  • 如果是带有超大载荷的ACK Flood攻击,会导致 链路拥塞
  • 如果是极高速率的变源变端口ACK Flood攻击,很容易导致依靠会话转发的设备转发性能降低,甚至会话耗尽造成 网络瘫痪
  • 如果攻击报文到达服务器,则导致服务器处理性能耗尽,从而 拒绝正常服务。

防御原理:

会话检查:

通常情况下,当ACK报文速率超过阈值时,Anti-DDoS设备启动对ACK报文的会话检查。

会话检查成功的源加入白名单。白名单可以减少会话检查对正常业务的转发延迟影响。

  • 严格模式

    直路部署组网中建议采用“严格模式”。

    • 如果ACK报文没有命中会话表,则Anti-DDoS设备直接丢弃ACK报文。
    • 如果ACK报文命中会话表,则继续检查报文序列号,序列号正确的报文允许通过,不正确的报文则被丢弃。
  • 基本模式

    旁路部署动态引流时,由于报文来回路径不一致,对于引流前已经建立的会话,Anti-DDoS设备上检查不到会话,此时建议采用“基本模式”。当连续一段时间内ACK报文速率超过阈值时,启动会话检查“基本模式”。

    • 如果ACK报文没有命中会话表,Anti-DDoS设备会允许第一个ACK报文通过,并建立会话,然后对后续ACK报文进行会话检查,以确定是否允许后续同源IP发送的ACK报文通过。
    • 如果ACK报文命中会话表,则继续检查报文序列号,序列号正确的报文允许通过,不正确的报文则被丢弃。

载荷检查:

载荷检查是Anti-DDoS设备对会话检查通过的报文进行的进一步验证,如果ACK报文载荷内容全一致(如载荷内容全为1等),则丢弃该报文,因为正常报文的载荷内容不会完全一致。

只有启用了“会话检查”,才能启用“载荷检查”。

FIN/RST Flood攻击与防御原理:

简要笔记:

攻击原理:

  • 同ACK

防御方法:

  • 会话检查

    (1) 不能匹配会话,丢弃

    (2)匹配会话,分2种情况

    • 第一种情况 会话由SYN或SYN+ACK创建的,通过
    • 第二种情况 会话由ACK创建,需要检查序列号,正确通过

攻击原理:

攻击者利用僵尸网络发送大量的 变源变端口FIN/RST报文攻击 ,这些攻击到达依靠会话转发的设备上,很容易导致转发设备性能降低甚至会话耗尽造成网络瘫痪,从而拒绝正常服务。

防御原理:

当FIN/RST报文速率超过阈值时,启动 会话检查。

  • 如果Anti-DDoS设备检查到FIN/RST报文没有命中会话,直接丢弃报文。
  • 如果Anti-DDoS设备检查到FIN/RST报文命中会话,则根据会话创建原因和会话检查结果来判断该报文是否通过。
    • 如果会话是由SYN或SYN-ACK报文创建的,则允许该FIN/RST报文通过。
    • 如果会话是由其他报文创建的(例如ACK报文),则进一步检查报文序列号是否正确,序列号正确的报文允许通过,不正确的报文则被丢弃。

TCP连接耗尽攻击与防御原理:

攻击原理

连接耗尽攻击是指攻击者通过僵尸网络,向服务器发起大量的TCP连接,耗尽服务器的TCP连接资源。连接耗尽一般有以下几种攻击类型:

  • 完成三次握手后,不发送任何报文,一直维持这些TCP连接。
  • 完成三次握手后,立刻发送FIN或RST报文,释放本端连接,同时快速发起新的连接。
  • 连接过程中呈现给服务器端很小的TCP windows size,导致服务器TCP协议栈资源耗尽。
  • 发送大量TCP重传请求,以很小的流量即可导致被攻击网络上行链路拥塞。

防御原理

针对此攻击会耗尽服务器的TCP连接资源的特点, Anti-DDoS设备对目的IP地址的新建连接速率和并发连接数分布进行统计 ,当新建连接速率或并发连接数大于阈值时,则触发对源IP地址的相应检查,当检查发现异常时,将异常源IP地址加入黑名单,切断其TCP流量。

  • 源IP地址新建连接速率检查:启动源IP地址新建连接速率检查后,如果某个源IP地址在检查周期内发起的TCP新建连接数大于阈值,则将该源IP地址判定为攻击源。

  • 源IP地址并发连接数检查:启动源IP地址并发连接数检查后,如果某个源IP地址的TCP并发连接数大于阈值,则将该源IP地址判定为攻击源。

  • 慢速连接速率检查:启动慢速连接速率检查后,统计同一源IP地址对同一目的IP地址的连接次数,在各统计时间间隔内,如果连续多次连接数相同,则判定为TCP慢速连接攻击。

  • 异常会话检查:如果在检查周期内,某个源IP地址发起的TCP异常会话的连接数大于阈值时,则将该源IP地址判定为攻击源。判定TCP异常会话依据如下:

    • 空连接检查:如果在检查周期内,在某条TCP连接上通过的报文数小于阈值,则判定该连接为异常连接。
    • 重传会话检查:当某条TCP连接上重传报文数量大于阈值时,则判定该连接为异常连接。
    • 慢启动连接检查:当某条TCP连接上通过的报文窗口小于阈值时,则判定该连接为异常连接。

    当异常会话数超过一定数量时,将此源加入黑名单。异常会话数量可配置。

TCP分片攻击与防御原理:

攻击原理

正常的网络流量中很少出现TCP分片报文,如果网络中TCP分片报文增多,则很可能正受到DDoS攻击 。攻击者向攻击目标发送大量的TCP分片报文 ,通常会造成以下危害:

  • 大量的TCP分片报文消耗带宽资源,造成被攻击者的响应缓慢甚至无法正常回应。
  • 网络设备或服务 器收到大量的TCP分片报文,会进行分片重组,这样会导致网络设备或服务器的性能降低 ,甚至无法正常工作。

防御原理

TCP分片分为首分片和后续分片, Anti-DDoS设备只对首分片执行防御动作 ,如果首分片异常被丢弃了,后续分片因找不到首分片的会话会直接被后续转发流程丢弃。Anti-DDoS设备基于目的地址对TCP首分片报文速率进行统计,当TCP首分片报文速率超过阈值时,按照以下处理方式:

  • 首先检查报文源IP地址是否命中白名单,如果没有命中白名单,则将该源IP所有发送的TCP分片报文直接丢弃。
  • 如果命中白名单,则报文允许通过。
  • 对于 真实源 发送的分片报文攻击,Anti-DDoS设备还支持对分片报文 限速。

TCP异常报文攻击与防御原理:

攻击原理

TCP报文标志位包括URG、ACK、PSH、RST、SYN、FIN六位,攻击者通过发送非法TCP flag组合的报文,对主机造成危害。

防御原理

检查TCP报文的各个标志位URG、ACK、PSH、RST、SYN、FIN,如果标志位异常,则认为是TCP异常报文。 当TCP异常报文的速率大于告警阈值时,将所有TCP异常报文全部丢弃,并记录攻击日志。

  • 6个标志位全为1。
  • 6个标志位全为0。
  • SYN和FIN位同时为1。
  • SYN和RST位同时为1。
  • FIN和RST位同时为1。
  • PSH、FIN和URG位同时为1。
  • 仅FIN位为1。
  • 仅URG位为1。
  • 仅PSH位为1。
  • SYN/RST/FIN标记位为1的分片报文。
  • 带有载荷的SYN、SYN-ACK报文。

UDP类报文攻击与防御

UDP Flood攻击与防御原理:

UDP类攻击中的报文源IP和源端口变化频繁,但报文负载一般保持不变或具有规律的变化。防御有效方法是使用 关联防御和指纹学习

简要笔记:

攻击原理:

  • 发送大量伪造UDP报文来拥塞链路,消耗设备和服务器性能。

Anti-ddos:

防御方法:

  • (1) 关联TCP防御

    想法:发UDP报文,触发阈值,启动TCP报文

  • (2) 指纹学习

UDP分片攻击

  • 防御方法:指纹学习

NGFW

防御方法:

  • 指纹学习 分片指纹学习 限流

攻击原理:

攻击者通过僵尸网络向目标服务器发起 大量的UDP报文这种UDP报文通常为大包,且速率非常快 ,通常会造成以下危害。从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。

  • 一般攻击效果是消耗网络带宽资源,严重时造成链路拥塞。
  • 大量变源变端口的UDP Flood会导致依靠会话转发的网络设备,性能降低甚至会话耗尽,从而导致网络瘫痪。
  • 如果攻击报文达到服务器开放的UDP业务端口,服务器检查报文的正确性需要消耗计算资源,影响正常业务。

Anti-DDoS防御原理:

载荷检查和指纹学习

当攻击报文负载有特征时,则可以采用动态指纹学习或特征过滤防御。

  • 载荷检查:当UDP流量超过阈值时,会触发载荷检查。如果UDP报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
  • 指纹学习:当UDP流量超过阈值时,会触发指纹学习。指纹由Anti-DDoS设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。 动态指纹学习适用于以下类型的UDP Flood攻击。
    • 报文载荷具有明显特征。
    • 报文负载内容完全一致。

网络层(TCP/UDP)攻击与防御原理

图:UDP指纹学习

UDP Flood关联TCP类服务防范:

UDP是无连接的协议,因此无法通过源认证的方法防御UDP Flood攻击。 如果UDP业务流量需要通过TCP业务流量认证或控制,则当UDP业务受到攻击时,对关联的TCP业务强制启动防御 ,用此TCP防御产生的白名单决定同一源的UDP报文是丢弃还是转发。

比如,有些服务例如游戏类服务,是先通过TCP协议对用户进行认证,认证通过后使用UDP协议传输业务数据,此时可以通过验证UDP关联的TCP类服务来达到防御UDP Flood攻击的目的。当UDP业务受到攻击时,对关联的TCP业务强制启动防御,通过关联防御产生TCP白名单,以确定同一源的UDP流量的走向,即命中白名单的源的UDP流量允许通过,否则丢弃。

网络层(TCP/UDP)攻击与防御原理

图:UDP Flood关联TCP类服务防御过程

防火墙防御原理:

  1. UDP指纹学习

  2. TCP关联防御

  3. 限流

    FW采用限流技术对UDP flood攻击进行防范,将去往同一目的地址的UDP报文限制在阈值之内,直接丢弃超过阈值的UDP报文,以避免网络拥塞。

    由于限流技术本身无法区分正常转发报文还是攻击报文,故建议在指纹防范技术和关联防御无法防住UDP flood时,才采用限流技术防范UDP flood。

UDP分片攻击与防御原理:

攻击原理

攻击者向攻击目标发送大量的UDP分片报文,通常会造成以下危害。

  • 一般攻击效果是消耗网络带宽资源,严重时造成链路拥塞。
  • 大量UDP分片报文会导致具有会话重组功能的网络设备性能急剧降低。
  • 大量变源变端口的UDP分片报文会导致依靠会话转发的网络设备性能降低,甚至会话耗尽导致网络瘫痪。
  • 如果攻击报文达到服务器开放的UDP业务端口,服务器检查报文的正确性需要消耗计算资源,造成服务器响应缓慢甚至无法正常回应。

防御原理

UDP分片分为首分片和后续分片, Anti-DDoS设备只对首分片执行防御动作 ,如果首分片异常被丢弃了,后续分片因找不到首分片的会话会直接被后续转发流程丢弃。 UDP首分片防御方法和UDP flood防御方法一致。

  • 载荷检查
  • 指纹学习

防火墙针对UDP分片攻击:支持 指纹学习限流 两种防御方式

ICMP Flood攻击与防御

攻击原理

攻击者短时间内发送大量的ICMP报文到被攻击目标,导致依靠会话转发的网络设备会话耗尽引起网络瘫痪,如果采用超 大报文攻击也会导致网络链路拥塞。

防御原理

本上没有业务承载在ICMP协议上,而ICMP flood至今仍旧是DDoS攻击的一大类,因此直接限流即可 ,将流量限制在较小范围内,超过阈值部分的报文直接丢弃。

限流:FW针对目的IP进行统计,当到达同一目的IP地址的ICMP流量达到告警阈值时,启动限流策略,丢弃超过上限的ICMP报文。

阻断:同时,FW支持在入接口上阻断ICMP报文。当FW发现对同一目的地址的ICMP报文超过阈值就认为发生攻击,FW将没有命中白名单的ICMP报文全部丢弃,从而保证不被ICMP Flood攻击影响正常服务。

参考文档:华为HedEx文档


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

轻量级Django

轻量级Django

茱莉亚·埃尔曼 (Julia Elman)、马克·拉温 (Mark Lavin) / 侯荣涛、吴磊 / 中国电力出版社; 第1版 / 2016-11-1 / 35.6

自Django 创建以来,各种各样的开源社区已经构建了很多Web 框架,比如JavaScript 社区创建的Angular.js 、Ember.js 和Backbone.js 之类面向前端的Web 框架,它们是现代Web 开发中的先驱。Django 从哪里入手来适应这些框架呢?我们如何将客户端MVC 框架整合成为当前的Django 基础架构? 本书讲述如何利用Django 强大的“自支持”功......一起来看看 《轻量级Django》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换