UNIT05 TCP SYN Flood

05.1 SYN Flood Overall

一、产生背景

SYN Flood攻击是一种通过向目标服务器发送SYN报文,消耗其系统资源,削弱目标服务器的服务提供能力的行为。一般情况下,SYN Flood攻击是在采用IP源地址欺骗行为的基础上,利用TCP连接建立时的三次握手过程形成的。

众所周知,一个TCP连接的建立需要双方进行三次握手,只有当三次握手都顺利完成之后,一个TCP连接才能成功建立。当一个系统(称为客户端)请求与另一个提供服务的系统(称为服务器)建立一个TCP连接时,双方要进行以下消息交互:

(1)客户端向服务器发送一个SYN消息;

(2)如果服务器同意建立连接,则响应客户端一个对SYN消息的回应消息(SYN/ACK);

(3)客户端收到服务器的SYN/ACK以后,再向服务器发送一个ACK消息进行确认。

当服务器收到客户端的ACK消息以后,一个TCP的连接成功完成。连接的建立过程如图所示:

在上述过程中,当服务器收到SYN报文后,在发送SYN/ACK回应客户端之前,需要分配一个数据区记录这个未完成的TCP连接,这个数据区通常称为TCB资源,此时的TCP连接也称为半开连接。这种半开连接仅在收到客户端响应报文或连接超时后才断开,而客户端在收到SYN/ACK报文之后才会分配TCB资源,因此这种不对称的资源分配模式会被攻击者所利用形成SYN Flood攻击。

如图所示,攻击者使用一个并不存在的源IP地址向目标服务器发起连接,该服务器回应SYN/ACK消息作为响应,由于应答消息的目的地址并不是攻击者的实际地址,所以这个地址将无法对服务器进行响应。因此,TCP握手的最后一个步骤将永远不可能发生,该连接就一直处于半开状态直到连接超时后被删除。如果攻击者用快于服务器TCP连接超时的速度,连续对目标服务器开放的端口发送SYN报文,服务器的所有TCB资源都将被消耗,以至于不能再接受其他客户端的正常连接请求。

为保证服务器能够正常提供基于TCP协议的业务,防火墙必须能够利用有效的技术瓦解以及主动防御SYN Flood攻击。

二、SYN Flood防火墙技术

在检测到针对服务器的SYN Flood攻击行为后,防火墙可以支持选择多种应对攻击的防范措施,主要包括两大类:

1、连接限制技术

采用SYN Flood攻击防范检测技术,对网络中的新建TCP半开连接数和新建TCP连接速率进行实时检测,通过设置检测阈值来有效地发现攻击流量,然后通过阻断新建连接或释放无效连接来抵御SYN Flood攻击。

2、连接代理技术

采用SYN Cookie或Safe Reset技术对网络中的TCP连接进行代理,通过精确的验证来准确的发现攻击报文,实现为服务器过滤掉恶意连接报文的同时保证常规业务的正常运行。连接代理技术除了可以对已检测到攻击的服务器进行代理防范,也可以对可能的攻击对象事先配置,做到全部流量代理,而非攻击发生后再代理,这样可以避免攻击报文已经造成一定损失。

05.2 SYN Flood Attack Prevention

DMZ

De-Militarized Zone

非军事区域

TCB

Transmission Control Block

传输控制块

TCP

Transmission Control Protocol

传输层控制协议

一、阻断新建连接

通过随时阻断服务器处理能力之外的新建连接来减轻服务器的被攻击程度。

下面是分别通过两种检测技术发现攻击后的连接阻断处理过程。

1、半开连接数限制

如图所示,防火墙检测到客户端与服务器之间的当前半开连接数目超过半开连接数阈值时,所有后续的新建连接请求报文都会被丢弃,直到服务器完成当前的半开连接处理,或当前的半开连接数降低到安全阈值时,防火墙才会放开限制,重新允许客户端向服务器发起新建连接请求。

2、新建连接数限制

如图所示,防火墙对新建连接报文的速率进行统计,只允许新建连接速率不超过阈值情况下的新建连接报文通过,超过阈值之后的新建连接报文都被丢弃。直到每秒客户端向服务器发起的连接请求降低到安全阈值以下时,防火墙才会放开限制,重新允许客户端向服务器发起新建连接请求。

二、释放无效连接

通过在攻击发生后通知服务器释放无效连接来协助服务器及时恢复服务能力。

当服务器上的半开连接过多时,其正在处理的半开连接中可能存在恶意客户端仿冒源IP发起的无效连接。为了不让仿冒源IP发起的无效连接占用服务器的资源,防火墙需要在所有半开连接中识别出无效连接,通知服务器释放这这些无效连接。

防火墙通过模拟无效连接的五元组信息(源IP地址、目的IP地址、源端口号、目的端口号、协议类型),向服务器发送RST报文(连接重置报文)通知服务器释放无效连接。

三、SYN Cookie和Safe Reset

通过验证发起连接的客户端的合法性,使服务器免受SYN Flood攻击。这两种技术适用于不同的组网需求。

1. SYN Cookie技术具体过程如下:

→客户端向服务器发送一个SYN消息。

→SYN消息经过防火墙时,防火墙截取该消息,并模拟服务器向客户端回应SYN/ACK消息。其中,SYN/ACK消息中的序列号为防火墙计算的Cookie,此Cookie值是对加密索引与本次连接的客户端信息(如:IP地址、端口号)进行加密运算的结果。

→客户端收到SYN/ACK报文后向服务器发送ACK消息进行确认。防火墙截取这个消息后,提取该消息中的ACK序列号,并再次使用客户端信息与加密索引计算Cookie。如果计算结果与ACK序列号相符,就可以确认发起连接请求的是一个真实的客户端。如果客户端不回应ACK消息,就意味着现实中并不存在这个客户端,此连接是一个仿冒客户端的攻击连接;如果客户端回应的是一个无法通过检测的ACK消息,就意味着此客户端非法,它仅想通过模拟简单的TCP协议栈来耗费服务器的连接资源。来自仿冒客户端或非法客户端的后续报文都会被防火墙丢弃,而且防火墙也不会为此分配TCB资源。

→如果防火墙确认客户端的ACK消息合法,则模拟客户端向服务器发送一个SYN消息进行连接请求,同时分配TCB资源记录此连接的描述信息。此TCB记录了防火墙向服务器发起的连接请求的信息,同时记录步骤(2)中客户端向服务器发起的连接请求的信息。

→服务器向防火墙回应SYN/ACK消息。

防火墙收到服务器的SYN/ACK回应消息后,根据已有的连接描述信息,模拟客户端向服务器发送ACK消息进行确认。

→完成以上过程之后,客户端与防火墙之间建立了连接,防火墙与服务器之间也建立了连接,客户端与服务器间关于此次连接的后续数据报文都将通过防火墙进行代理转发。

防火墙的SYN Cookie技术利用SYN/ACK报文携带的认证信息,对握手协商的ACK报文进行了认证,从而避免了防火墙过早分配TCB资源。当客户端向服务器发送恶意SYN报文时,既不会造成服务器上TCB资源和带宽的消耗,也不会造成防火墙TCB资源的消耗,可以有效防范SYN Flood攻击。在防范SYN Flood攻击的过程中,防火墙作为虚拟的服务器与客户端交互,同时也作为虚拟的客户端与服务器交互,在为服务器过滤掉恶意连接报文的同时保证了常规业务的正常运行。

2、Safe Reset技术实现过程如下:

→客户端向服务器发送一个SYN消息。

SYN消息经过防火墙时,防火墙截取该消息,并模拟服务器向客户端回应SYN/ACK消息。其中,SYN/ACK消息中的ACK序列号与客户端期望的值不一致,同时携带Cookie值。此Cookie值是对加密索引与本次连接的客户端信息(包括:IP地址、端口号)进行加密运算的结果。

客户端按照协议规定向服务器回应RST消息。防火墙中途截取这个消息后,提取消息中的序列号,并对该序列号进行Cookie校验。成功通过校验的连接被认为是可信的连接,防火墙会分配TCB资源记录此连接的描述信息,而不可信连接的后续报文会被防火墙丢弃。

→完成以上过程之后,客户端再次发起连接请求,防火墙根据已有的连接描述信息判断报文的合法性,对可信连接的所有合法报文直接放行。

由于防火墙仅通过对客户端向服务器首次发起连接的报文进行认证,就能够完成对客户端到服务器的连接检验,而服务器向客户端回应的报文即使不经过防火墙也不会影响正常的业务处理,因此Safe Reset技术也称为单向代理技术。

一般而言,应用服务器不会主动对客户端发起恶意连接,因此服务器响应客户端的报文可以不需要经过防火墙的检查。防火墙仅需要对客户端发往应用服务器的报文进行实时监控。服务器响应客户端的报文可以根据实际需要选择是否经过防火墙,因此Safe Reset能够支持更灵活的组网方式。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值