TCP类报文攻击防御
目录
TCP类报文攻击防御
TCP交互过程
SYN Flood攻击
特点:
概念:
攻击原理
防御原理:
一 针对虚假源:
二 、针对真实源
SYN-ACK Flood攻击
攻击原理
防御原理
ACK Flood攻击
定义:
攻击原理
防御原理
FIN/RST Flood攻击与防御原理
攻击原理
防御原理
TCP连接耗尽攻击与防御原理
攻击原理
防御原理
TCP分片攻击与防御原理
攻击原理
防御原理
TCP异常报文攻击与防御原理
攻击原理
防御原理
UDP类报文攻击防御
UDP Flood攻击与防御原理
攻击原理
防御原理
UDP分片攻击与防御原理
攻击原理
防御原理
TCP交互过程
TCP正常建立连接和断开连接的过程如图1所示。
图1TCP正常建立连接和断开连接的过程
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送SYN包到服务器,等待服务器确认。第二次握手:服务器收到SYN包,回应一个SYN-ACK包。第三次握手:客户端收到服务器的SYN-ACK包,向服务器发送确认包ACK,此包发送完毕,完成三次握手。
如果服务器发出的SYN-ACK包异常,客户端会发送一个RST包给服务器,服务器重新回到监听状态。
TCP采用四次握手来关闭一个连接。
第一次握手:客户端发送FIN包到服务器,表示客户端没有数据要向服务器发送了,等待服务器确认。第二次握手:服务器收到FIN包,发送ACK包来确认客户端的FIN包,如果服务器数据还没传完,则不发送FIN包。第三次握手:当服务器没有数据要向客户端发送时,服务器发送FIN包到客户端,并等待客户端最终确认。第四次握手:客户端收到FIN包,发出ACK包来确认服务器的FIN包,此包发送完毕,完成四次握手,双方连接断开。
SYN Flood攻击
特点:
没有明显攻击特征的报文,工程师不能根据特征识别或者指纹的方式对SYN的报文进行过滤。但可以从SYN报文建立连接的“行为入手”。
对于面向连接的DDos攻击最有效的防御方式是源认证。
概念:
SYN flood攻击是虚假源攻击典型代表,此类攻击的最显著特点就是发送海量变源或变源端口的报文到受害主机,耗尽受害主机资源或网络资源。Anti-DDoS设备通过对报文源的真实性检查来防御SYN Flood攻击。
攻击原理
SYN Flood攻击是通过伪造一个源地址的SYN报文,发送给受害主机,受害主机回复SYN-ACK报文给这些地址后,不会收到ACK报文,导致受害主机保持了大量的半连接,直到超时。这些半连接可以耗尽主机资源,使受害主机无法建立正常TCP连接,从而达到攻击的目的
注意:伪造报文一般为源ip地址不存在或不可达,大量的半连接消耗了服务器的资源,使服务器无法处理正常的请求。
防御原理:
一 针对虚假源:
Anti-DDoS设备基于目的地址对SYN报文速率进行统计,当SYN报文速率超过阈值时,启动源认证防御。
基本源认证(Error-seq)
Anti-DDoS设备基本源认证防御的处理过程如图2所示。
原理:Anti-DDoS 系统代替 Web服务器向客户端响应 SYN-ACK报文,报文中带有错误的确认序号。当真实的客户端收到带有错误确认序号的 SYN-ACK后,会向服务器发送RST报文要求重新建立连接。而虚假源收到带有错误确认序号的SYN-ACK后,不会做任何响应。
图2基本源认证防御SYN Flood
Anti-DDoS设备接收到SYN报文,发送SYN-ACK探测报文到SYN报文中的源IP地址。
Anti-DDoS设备通过校验接收到的对探测报文的响应报文的真实性来确认源IP地址的真实性,以防止虚假源攻击。
如果没有响应报文,则表示之前的SYN报文为攻击,Anti-DDoS设备不会将该SYN报文发给被防护服务器,有效终止了攻击。
如果有响应报文,Anti-DDoS设备验证响应报文是否为真实的报文,如果真实,则表示该源IP地址通过源认证,Anti-DDoS设备将该源IP地址加入白名单,在白名单老化前,从此源IP地址发出的SYN报文都直接被Anti-DDoS设备转发。白名单老化时间可配置。
未匹配白名单的源IP地址发出的SYN报文则继续被探测。
注意:如果网络中存在会丢弃基本源探测报文的设备,则不能使用基本源探测功能,需要选择其他防御方式防范SYN flood攻击。//就是一部分设备会丢弃带有错误确认序号的SYN-ACK报文,或者不响应带有错误确认序号的SYN-ACK报文。
高级源认证(Right-seq)
高级源认证的原理也是Anti-DDoS系统代替Web服务器向客户端响应SYN-ACK报文,但与基本源认证不同的是,SYN-ACK报文中带有正确的确认序号。真实的客户端收到带有正确确认序号的SYN-ACK报文后,它会向服务器发送ACK报文;而虚假源不会做出任何响应。
Anti-DDoS设备高级源认证防御的处理过程如图3所示。
图3高级源认证防御SYN Flood
SYN Flood高级源认证过程有以下4步。
①当在连续一段时间内去往目标服务器的SYN 报文超过告警阈值时,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替Web服务器向客户端响应带有正确确认序号的SYN-ACK报文。
如果这个源是虚假源,是一个不存在的地址或者是存在的地址但却没有发送过SYN报文,其不会做出任何响应。
③如果这个源是真实客户端,其会向服务器发送ACK报文,并对收到的SYN-ACK报文进行确认。Anti-DDoS系统收到ACK报文后,将该客户端的源IP地址加入白名单。同时,Anti-DDoS系统会向客户端发送RST报文,要求重新建立连接。
④后续这个客户端发出的SYN报文命中白名单直接通过。
二 、针对真实源
真实源IP限速
源IP加入白名单之后将继续对真实源IP进行统计分析,对异常的源IP进行限速,以防止真实源发起攻击。
SYN-Ratio异常限速:基于加入白名单的源来统计SYN报文与SYN报文+ACK报文的比例,当这个比例在配置时间内超过“SYN-Ratio比例阈值”时,判定源IP地址异常,则开始对单位时间内该源的SYN报文进行限制,具体机制如下:
在配置的检测duration时间段内,基于加入白名单的源IP来统计SYN报文和SYN报文+ACK报文的比例。如果该时间段内没有SYN报文或者ACK报文,则不刷新该时间段内SYN报文和ACK报文的比例以及各自的报文数,该检测时间段为无效统计duration区间。SYN报文和ACK报文的有效比例值仍按照上一有效duration区间的比值来判断当前是否仍然存在攻击,是否需要继续执行限速。当SYN-Ratio检测出异常,则需要执行限速。
注意:无论是基本源认证还是高级源认证,其原理都是Anti-DDoS系统发送SYN-ACK报文来对源进行认证。Anti-DDoS系统收到SYN报文后会反弹SYN-ACK报文。如果网络中存在海量的SYN报文,同样Anti-DDoS系统也会反弹出去海量的SYN-ACK报文,这样势必会造成网络拥塞更加严重。为了避免这个问题,减少反弹的SYN-ACK报文对网络拥塞的影响,Anti-DDoS系统提供了首包丢弃功能。
SYN-ACK Flood攻击
SYN-ACK Flood攻击的最大特点是报文源属于虚假源,且目的经常为现网存在的对外提供的服务器IP地址。通过对报文源的真实性检查来防御SYN-ACK Flood攻击。
定义:SYN-ACK Flood攻击是攻击者利用工具或者操控僵尸主机,向目标服务器发送大量的SYN-ACK报文,这些报文都属于凭空出现的第二次握手报文,服务器忙于回复RST报文,导致资源耗尽,无法响应正常的请求。
攻击原理
SYN-ACK Flood攻击源会假冒服务器,发送大量SYN-ACK报文到攻击目标网络,如果网络出口有依靠会话转发的网络设备,比如防火墙、IPS等设备,(查询状态表项消耗资源)则大量的SYN-ACK报文会导致这类网络设备处理性能降低,甚至会话耗尽。
另外,SYN Flood的反射攻击也可能造成服务器发送大量的SYN-ACK报文。
防御原理
华为Anti-DDoS 解决方案使用源认证方式防御SYN-ACK Flood 攻击,其原理是Anti-DDoS 系统向发送SYN-ACK报文的源地址发送SYN报文,相当于发起了第-次握手以探测该地址是否真实存在。真实的源会向Anti DDoS系统响应正确的SYN-ACK报文,即第二次握手的报文:而虚假的源则不会响应正确的SYN-ACK报文。
Anti-DDoS设备源认证防御的处理过程如图1所示。
图1源认证防御SYN-ACK Flood
SYN-ACK Flood源认证过程有以下4步。
①在连续一段时间内去往目标服务器的SYN-ACK报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS 系统向发送SYN-ACK报文的源地址发送SYN报文。
②如果这个源是虚假源,其不会向Anti-DDoS系统响应正确的SYN-ACK报文。
③如果这个源是真实源,其会向Anti-DDoS 系统响应正确的SYN-ACK 报文。Anti-DDoS系统收到该SYN-ACK报文后,将该源IP地址加入白名单,同时会向源地址
发送RST报文,断开自己和这个源地址的连接。
④后续这个源发出的SYN-ACK报文命中白名单直接通过,而对于那些未匹配白名单
的SYN-ACK报文则继续进行源认证。
Anti-DDoS系统防御SYN-ACK Flood攻击与防御SYN Flood攻击时所采用的方式类
似,都是源认证的方式。
ACK Flood攻击
定义:
ACK Flood 攻击指的是攻击者利用工具或者操控僵尸主机,向目标服务器发送大量的ACK报文,服务器忙于回复这些凭空出现的第三次握手报文,导致资源耗尽,无法响应正常的请求。
攻击原理
攻击者利用僵尸网络发送大量的ACK报文,通常会造成以下三种情况的危害。
如果是带有超大载荷的ACK Flood攻击,会导致链路拥塞。如果是极高速率的变源变端口ACK Flood攻击,很容易导致依靠会话转发的设备转发性能降低,甚至会话耗尽造成网络瘫痪。如果攻击报文到达服务器,则导致服务器处理性能耗尽,从而拒绝正常服务。
防御原理
会话检查
通常情况下,当ACK报文速率超过阈值时,Anti-DDoS设备启动对ACK报文的会话检查。会话检查成功的源加入白名单。白名单可以减少会话检查对正常业务的转发延迟影响。
华为Anti-DDoS解决方案使用会话检查的方式防御ACKFlood攻击,这与防御SYNFlood和防御SYN-ACK Flood时所采用的方式有所不同。会话是状态检测防火墙的一一个
机制,是防火墙最基本的功能,也是实现安全防护的基础技术。Anti-DDoS系统借鉴了防火墙的会话机制,其通过检查会话来确定ACK报文的真实性。我们可以把Anti-DDoS 系统看作是关闭了链路状态检查功能的防火墙,SYN、SYN-ACK、ACK等报文都会创建会话。一次正常的TCP连接建立过程,必须先有SYN报文,接着是SYN-ACK报文,然后才是ACK报文,所谓有“因”才有“果”。只有ACK报文命中了会话这个“因”,才能说明该报文是正常交互过程中的报文,是真实的报文。
Anti-DDoS系统对ACK报文进行会话检查时,支持基本和严格两种模式,下面我们进行具体讲解。
严格模式
直路部署组网中建议采用“严格模式”。
如果ACK报文没有命中会话表,则Anti-DDoS设备直接丢弃ACK报文。如果ACK报文命中会话表,则继续检查报文序列号,序列号正确的报文允许通过,不正确的报文则被丢弃。
基本模式
旁路部署动态引流时,由于报文来回路径不一致,对于引流前已经建立的会话,Anti-DDoS设备上检查不到会话,此时建议采用“基本模式”。当连续一段时间内ACK报文速率超过阈值时,启动会话检查“基本模式”。
如果ACK报文没有命中会话表,Anti-DDoS设备会允许第一个ACK报文通过,并建立会话,然后对后续ACK报文进行会话检查,以确定是否允许后续同源IP发送的ACK报文通过。如果ACK报文命中会话表,则继续检查报文序列号,序列号正确的报文允许通过,不正确的报文则被丢弃。
注意:
当业务板CPU会话表满规格后,后续未命中会话的流量会被直接丢弃。
基本模式允许第一一个ACK报文通过,检查条件比较宽松。如果攻击者发送变源或变端口的ACK报文,基本模式会允许报文通过并建立会话,导致攻击报文被放过,影响防御效果。为此,Anti-DDoS 系统还提供了严格模式,检查条件更加严格,防御效果也会更好- -些。
载荷检查
载荷检查是Anti-DDoS设备对会话检查通过的报文进行的进一步验证,如果ACK报文载荷内容全一致(如载荷内容全为1等),则丢弃该报文,因为正常报文的载荷内容不会完全一致。
只有启用了“会话检查”,才能启用“载荷检查”。
FIN/RST Flood攻击与防御原理
攻击原理
攻击者利用僵尸网络发送大量的变源变端口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报文,这种UDP报文通常为大包,且速率非常快,通常会造成以下危害。从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
一般攻击效果是消耗网络带宽资源,严重时造成链路拥塞。大量变源变端口的UDP Flood会导致依靠会话转发的网络设备,性能降低甚至会话耗尽,从而导致网络瘫痪。如果攻击报文达到服务器开放的UDP业务端口,服务器检查报文的正确性需要消耗计算资源,影响正常业务。
防御原理
载荷检查和指纹学习
当攻击报文负载有特征时,则可以采用动态指纹学习或特征过滤防御。
载荷检查:当UDP流量超过阈值时,会触发载荷检查。如果UDP报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
指纹学习:当UDP流量超过阈值时,会触发指纹学习。指纹由Anti-DDoS设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。动态指纹学习适用于以下类型的UDP Flood攻击。
报文载荷具有明显特征。报文负载内容完全一致。
指纹防御的原理如图1所示。
图1UDP指纹学习
UDP Flood关联TCP类服务防范
UDP是无连接的协议,因此无法通过源认证的方法防御UDP Flood攻击。如果UDP业务流量需要通过TCP业务流量认证或控制,则当UDP业务受到攻击时,对关联的TCP业务强制启动防御,用此TCP防御产生的白名单决定同一源的UDP报文是丢弃还是转发。
比如,有些服务例如游戏类服务,是先通过TCP协议对用户进行认证,认证通过后使用UDP协议传输业务数据,此时可以通过验证UDP关联的TCP类服务来达到防御UDP Flood攻击的目的。当UDP业务受到攻击时,对关联的TCP业务强制启动防御,通过关联防御产生TCP白名单,以确定同一源的UDP流量的走向,即命中白名单的源的UDP流量允许通过,否则丢弃。具体防御原理如图2所示。
图2UDP Flood关联TCP类服务防范
UDP分片攻击与防御原理
攻击原理
攻击者向攻击目标发送大量的UDP分片报文,通常会造成以下危害。
一般攻击效果是消耗网络带宽资源,严重时造成连路拥塞。大量UDP分片报文会导致具有会话重组功能的网络设备性能急剧降低。大量变源变端口的UDP分片报文会导致依靠会话转发的网络设备性能降低,甚至会话耗尽导致网络瘫痪。如果攻击报文达到服务器开放的UDP业务端口,服务器检查报文的正确性需要消耗计算资源,造成服务器响应缓慢甚至无法正常回应。
防御原理
UDP分片分为首分片和后续分片,Anti-DDoS设备只对首分片执行防御动作,如果首分片异常被丢弃了,后续分片因找不到首分片的会话会直接被后续转发流程丢弃。UDP首分片防御方法和UDP flood防御方法一致。
载荷检查:当UDP首分片流量超过阈值时,会触发载荷检查。如果UDP首分片报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
指纹学习:当UDP首分片流量超过阈值时,会触发指纹学习。指纹由Anti-DDoS设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。指纹防御的原理如图1所示。
图1UDP首分片报文指纹学习
参考文献或资料
----------HedEx Lite