SYN Flood攻击防范技术(转)

个人感觉这篇文章介绍的非常好,为了以后看着方便,转来看看
概述
1.1  产生背景
SYN Flood 攻击是一种通过向目标服务器发送SYN 报文,消耗其系统资源,削弱目标服务器的服务提供能力的行为。一般情况下,SYN Flood 攻击是在采用IP 源地址欺骗行为的基础上,利用TCP 连接建立时的三次握手过程形成的。
众所周知,一个TCP 连接的建立需要双方进行三次握手,只有当三次握手都顺利完成之后,一个TCP 连接才能成功建立。当一个系统(称为客户端)请求与另一个提供服务的系统(称为服务器)建立一个TCP 连接时,双方要进行以下消息交互:
(1)        客户端向服务器发送一个SYN 消息;
(2)        如果服务器同意建立连接,则响应客户端一个对SYN 消息的回应消息(SYN/ACK );
(3)        客户端收到服务器的SYN/ACK 以后,再向服务器发送一个ACK 消息进行确认。
当服务器收到客户端的ACK 消息以后,一个TCP 的连接成功完成。连接的建立过程如 1 所示:

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

图2 SYN Flood 攻击原理图
2 所示,攻击者使用一个并不存在的源IP 地址向目标服务器发起连接,该服务器回应SYN/ACK 消息作为响应,由于应答消息的目的地址并不是攻击者的实际地址,所以这个地址将无法对服务器进行响应。因此,TCP 握手的最后一个步骤将永远不可能发生,该连接就一直处于半开状态直到连接超时后被删除。如果攻击者用快于服务器TCP 连接超时的速度,连续对目标服务器开放的端口发送SYN 报文,服务器的所有TCB 资源都将被消耗,以至于不能再接受其他客户端的正常连接请求。
为保证服务器能够正常提供基于TCP 协议的业务,防火墙必须能够利用有效的技术瓦解以及主动防御SYN Flood 攻击。
1.2  技术优点
H3C SYN Flood 攻击防范技术的实现上具有以下四个方面的特色。
1. 支持基于安全区域的配置方式
H3C 实现的SYN Flood 攻击防范支持基于安全区域的配置方式,所有攻击检测策略均配置在安全区域上,配置简洁又不失灵活性,既降低网络管理员配置负担,又能满足复杂组网情况下针对安全区域实施不同攻击防范策略的要求。
2. 提供丰富的告警日志信息
H3C 实现的SYN Flood 攻击防范功能可提供丰富的告警日志信息,可以与第三方软件配合使用,其日志和审计功能不仅能够针对攻击进行实时监测,还能对攻击的历史日志进行方便的查询和统计分析,便于对攻击事件进行有效的跟踪和追查。
3. 精确阻断攻击流量
H3C 实现的SYN Flood 攻击防范功能采用基于行为模式的异常检测算法对目标服务器的网络流量进行检测,通过实时跟踪TCP 服务器连接的状态机协商过程,能够有效区分攻击流量和正常流量,从而精确阻断攻击流量。
4. 提供灵活的防范措施
针对SYN Flood 攻击,H3C 防火墙提供了灵活的防范措施,可根据用户的实际需要,选择对攻击行为进行日志输出、报文丢弃、启用SYN Cookie 防护功能、启用Safe Reset 防护功能、通知服务器释放无效半开连接等防范动作。
技术实现
Internet 上,公共服务器是SYN Flood 攻击实施的主要对象。Internet 上任何客户端向某个特定的公共服务器发起访问时,其目的IP 地址必定是公共服务器对外公开的IP 地址。H3C 防火墙通过攻击检测技术,统计和分析向公共服务器发起的所有连接的行为特征,来检测和识别攻击报文。
在检测到针对服务器的SYN Flood 攻击行为后,H3C 防火墙可以支持选择多种应对攻击的防范措施,主要包括两大类:
l              连接限制技术:采用SYN Flood 攻击防范检测技术,对网络中的新建TCP 半开连接数和新建TCP 连接速率进行实时检测,通过设置检测阈值来有效地发现攻击流量,然后通过阻断新建连接或释放无效连接来抵御SYN Flood 攻击。
l              连接代理技术:采用SYN Cookie Safe Reset 技术对网络中的TCP 连接进行代理,通过精确的验证来准确的发现攻击报文,实现为服务器过滤掉恶意连接报文的同时保证常规业务的正常运行。连接代理技术除了可以对已检测到攻击的服务器进行代理防范,也可以对可能的攻击对象事先配置,做到全部流量代理,而非攻击发生后再代理,这样可以避免攻击报文已经造成一定损失。
2.1  SYN Flood攻击检测技术
根据统计对象的不同特征,SYN Flood 攻击检测可分为两种类型:半开连接数检测、新建连接速率检测。
2.1.1  半开连接数检测
1. 原理介绍
当恶意客户端向目标服务器发起SYN Flood 攻击时,如果恶意客户端采用了仿冒的源IP ,那么在目标服务器上会存在大量半开连接。
这类半开连接与正常的半开连接的区别在于,正常半开连接会随着客户端和服务器端握手报文的交互完成而转变成全连接,而仿冒源IP 的半开连接永远不会完成握手报文的交互。
为有效区分仿冒半开连接和正常半开连接,防火墙就需要实时记录所有客户端向服务器发起的所有半开连接数和完成了握手交互且转变为全连接的半开连接数,二者之差(即未完成的半连接数)在服务器未受到攻击时会保持在一个相对恒定的范围内。如果未完成的半连接数突然增多,甚至接近服务器的资源分配上限时就可以怀疑此时服务器正受到异常流量的攻击。

图3 半开连接数检测示意图
3 所示,管理员可以根据被保护服务器的处理能力设置半开连接数阈值。如果服务器无法处理客户端所有连接请求,就会导致未完成的半开连接数(即客户端向服务器发起的所有半开连接数和完成了握手交互变成全连接的半开连接数之差)超过指定阈值,此时防火墙可以判定服务器正在遭受SYN Flood 攻击。
2. 应用限制
半开连接数统计要求防火墙能够记录客户端到服务器端的所有连接状态。即,客户端和服务器端的报文都需要经过防火墙处理。因此,基于半开连接数的统计检测需要防火墙部署在所保护的服务器出口和入口的关键路径上。
2.1.2  新建连接速率检测
1. 原理介绍
当恶意客户端向目标服务器发起SYN Flood 攻击时,不管恶意客户端采用仿冒源IP 手段还是使用真实的客户端,其呈现的结果就是发往服务器的报文会在短时间内大量增加。
恶意客户端发向服务器的报文中,一部分是新建连接的报文,一部分是已建立连接的后续数据报文。H3C 防火墙通过记录每秒新建连接的数量,并与设定的阈值进行比较来判断向目标服务器发起SYN Flood 攻击行为是否发生,若达到或超过,则认为攻击行为发生。
 
图4 新建连接速率检测示意图
4 所示,在对被保护服务器进行监测时,防火墙在一秒的时间间隔内统计客户端向服务器发起的新建连接请求数量,作为当前的新建请求速率。当新建连接请求速率超过指定阈值时,防火墙设备可以认为服务器可能遭受了SYN Flood 攻击。
2. 应用限制
新建连接数统计要求防火墙能够记录客户端到服务器端的所有新建连接个数。即,客户端发往服务器端的报文必须要经过防火墙处理。因此,基于新建连接数的统计检测需要防火墙部署在所保护的服务器入口的关键路径上。
2.2  SYN Flood攻击防范技术
H3C 防火墙可以支持选择多种应对攻击的防范措施,主要包括以下四种技术:
l              阻断新建连接——通过随时阻断服务器处理能力之外的新建连接来减轻服务器的被攻击程度。
l              释放无效连接——通过在攻击发生后通知服务器释放无效连接来协助服务器及时恢复服务能力。
l              SYN Cookie Safe Reset ——通过验证发起连接的客户端的合法性,使服务器免受SYN Flood 攻击。这两种技术适用于不同的组网需求。
2.2.1  阻断新建连接
1. 原理介绍
实际上,最简单的防范方法就是暂时阻止任何客户端向服务器发起的新建连接请求。阻断新建连接的时机是由SYN Flood 攻击检测发现攻击决定的,只要防火墙发现连接数阈值(半开连接数阈值、新建连接数阈值)被超过时,就开始阻断新建连接来防范攻击行为。关于SYN Flood 攻击检测技术的详细介绍请参见“2.1  SYN Flood 攻击检测技术 ”。
下面是分别通过两种检测技术发现攻击后的连接阻断处理过程。
l              半开连接数限制
5 所示,防火墙检测到客户端与服务器之间的当前半开连接数目超过半开连接数阈值时,所有后续的新建连接请求报文都会被丢弃,直到服务器完成当前的半开连接处理,或当前的半开连接数降低到安全阈值时,防火墙才会放开限制,重新允许客户端向服务器发起新建连接请求。

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

图6 新建连接速率限制示意图
2. 应用限制
阻断新建连接功能为防火墙检测到SYN Flood 攻击后的基本处理手段。在服务器受到SYN Flood 攻击时,防火墙能在服务器处理新建连接报文之前将其阻断,削弱了网络攻击对服务器的影响,但无法在服务器被攻击时有效提升服务器的服务能力。因此,该功能一般用于配合防火墙SYN Flood 攻击检测,避免瞬间高强度攻击使服务器系统崩溃。
2.2.2  释放无效连接
1. 原理介绍
正如2.1.1  半开连接数 检测 中所描述,当服务器上的半开连接过多时,其正在处理的半开连接中可能存在恶意客户端仿冒源IP 发起的无效连接。为了不让仿冒源IP 发起的无效连接占用服务器的资源,防火墙需要在所有半开连接中识别出无效连接,通知服务器释放这这些无效连接。
防火墙通过模拟无效连接的五元组信息(源IP 地址、目的IP 地址、源端口号、目的端口号、协议类型),向服务器发送RST 报文(连接重置报文)通知服务器释放无效连接。
2. 应用限制
释放无效连接功能是一种防火墙检测到攻击后的基本处理手段,在服务器受到SYN Flood 攻击的情况下,能够通知服务器释放被恶意攻击报文占用的资源,使服务器得以恢复正常服务。在服务器受到SYN Flood 攻击时,此功能主要用于加速被攻击服务器的恢复速度,却无法阻止恶意客户端继续攻击服务器。因此,该功能一般用于配合防火墙SYN Flood 检测,在攻击发生后减轻已发生的攻击对服务器的影响。
2.2.3  SYN Cookie技术
1. 原理介绍
SYN Cookie 借鉴了HTTP Cookie 的概念。SYN Cookie 技术可理解为,防火墙对TCP 新建连接的协商报文进行处理,使其携带认证信息(称之为Cookie ),再通过验证客户端回应的协商报文中携带的信息来进行报文有效性确认的一种技术。如 7 所示,该技术的实现机制是防火墙在客户端与服务器之间做连接代理,具体过程如下:

图7 防火墙使用SYN Cookie 防范SYN Flood 攻击
(1)        客户端向服务器发送一个SYN 消息。
(2)        SYN 消息经过防火墙时,防火墙截取该消息,并模拟服务器向客户端回应SYN/ACK 消息。其中,SYN/ACK 消息中的序列号为防火墙计算的Cookie ,此Cookie 值是对加密索引与本次连接的客户端信息(如:IP 地址、端口号)进行加密运算的结果。
(3)        客户端收到SYN/ACK 报文后向服务器发送ACK 消息进行确认。防火墙截取这个消息后,提取该消息中的ACK 序列号,并再次使用客户端信息与加密索引计算Cookie 。如果计算结果与ACK 序列号相符,就可以确认发起连接请求的是一个真实的客户端。如果客户端不回应ACK 消息,就意味着现实中并不存在这个客户端,此连接是一个仿冒客户端的攻击连接;如果客户端回应的是一个无法通过检测的ACK 消息,就意味着此客户端非法,它仅想通过模拟简单的TCP 协议栈来耗费服务器的连接资源。来自仿冒客户端或非法客户端的后续报文都会被防火墙丢弃,而且防火墙也不会为此分配TCB 资源。
(4)        如果防火墙确认客户端的ACK 消息合法,则模拟客户端向服务器发送一个SYN 消息进行连接请求,同时分配TCB 资源记录此连接的描述信息。此TCB 记录了防火墙向服务器发起的连接请求的信息,同时记录了步骤(2 )中客户端向服务器发起的连接请求的信息。
(5)        服务器向防火墙回应SYN/ACK 消息。
(6)        防火墙收到服务器的SYN/ACK 回应消息后,根据已有的连接描述信息,模拟客户端向服务器发送ACK 消息进行确认。
(7)        完成以上过程之后,客户端与防火墙之间建立了连接,防火墙与服务器之间也建立了连接,客户端与服务器间关于此次连接的后续数据报文都将通过防火墙进行代理转发。
防火墙的SYN Cookie 技术利用SYN/ACK 报文携带的认证信息,对握手协商的ACK 报文进行了认证,从而避免了防火墙过早分配TCB 资源。当客户端向服务器发送恶意SYN 报文时,既不会造成服务器上TCB 资源和带宽的消耗,也不会造成防火墙TCB 资源的消耗,可以有效防范SYN Flood 攻击。在防范SYN Flood 攻击的过程中,防火墙作为虚拟的服务器与客户端交互,同时也作为虚拟的客户端与服务器交互,在为服务器过滤掉恶意连接报文的同时保证了常规业务的正常运行。
2. 应用限制
由于SYN Cookie 技术最终是依靠防火墙对客户端与服务器之间的所有连接报文进行代理实现的,因此要求防火墙设备必须部署在所保护的服务器入口和出口的关键路径上,保证所有客户端向服务器发送的报文以及服务器向客户端回应的报文都需要经过该设备。
2.2.4  Safe Reset技术
1. 原理介绍
Safe Reset 技术是防火墙通过对正常TCP 连接进行干预来识别合法客户端的一种技术。防火墙对TCP 新建连接的协商报文进行处理,修改响应报文的序列号并使其携带认证信息(称之为Cookie ),再通过验证客户端回应的协商报文中携带的信息来进行报文有效性确认。
防火墙在利用Safe Reset 技术认证新建连接的过程中,对合法客户端的报文进行正常转发,对仿冒客户端以及简单模拟TCP 协议栈的恶意客户端发起的新建连接报文进行丢弃,这样服务器就不会为仿冒客户端发起的SYN 报文分配连接资源,从而避免了SYN Flood 攻击。如 8 所示,Safe Reset 技术的实现过程如下:
 
图8 防火墙使用Safe Reset 防范SYN Flood 攻击
(1)        客户端向服务器发送一个SYN 消息。
(2)        SYN 消息经过防火墙时,防火墙截取该消息,并模拟服务器向客户端回应SYN/ACK 消息。其中,SYN/ACK 消息中的ACK 序列号与客户端期望的值不一致,同时携带Cookie 值。此Cookie 值是对加密索引与本次连接的客户端信息(包括:IP 地址、端口号)进行加密运算的结果。
(3)        客户端按照协议规定向服务器回应RST 消息。防火墙中途截取这个消息后,提取消息中的序列号,并对该序列号进行Cookie 校验。成功通过校验的连接被认为是可信的连接,防火墙会分配TCB 资源记录此连接的描述信息,而不可信连接的后续报文会被防火墙丢弃。
(4)        完成以上过程之后,客户端再次发起连接请求,防火墙根据已有的连接描述信息判断报文的合法性,对可信连接的所有合法报文直接放行。
由于防火墙仅通过对客户端向服务器首次发起连接的报文进行认证,就能够完成对客户端到服务器的连接检验,而服务器向客户端回应的报文即使不经过防火墙也不会影响正常的业务处理,因此Safe Reset 技术也称为单向代理技术。
一般而言,应用服务器不会主动对客户端发起恶意连接,因此服务器响应客户端的报文可以不需要经过防火墙的检查。防火墙仅需要对客户端发往应用服务器的报文进行实时监控。服务器响应客户端的报文可以根据实际需要选择是否经过防火墙,因此Safe Reset 能够支持更灵活的组网方式。
2. 应用限制
l              Safe Reset 技术要求防火墙设备部署在所保护的服务器入口的关键路径上。但仅需保证所有客户端到服务器报文都必须经过该设备,对服务器端发出的报文是否经该设备没有严格要求。从组网要求来看,Safe Reset SYN Cookie 适应性更强。
l              由于防火墙对客户端发起的TCP 连接进行了干预,因此Safe Reset 技术的实现要求客户端的实现严格遵守TCP 协议栈的规定,如果客户端的TCP 协议栈实现不完善,即便是合法用户,也可能由于未通过防火墙的严格检查而无法访问服务器。
l              Safe Reset 技术依赖于客户端向服务器发送RST 报文后再次发起请求的功能,因此应用Safe Reset 技术后,客户端发起的每个TCP 连接的建立时间会有相应增加,增加的程度因客户端的TCP 协议栈实现而有所不同。
典型组网应用
3.1  SYN Cookie典型组网应用

图9 SYN Cooke 典型组网应用图
9 所示,Internet 上存在潜在的攻击者和正常使用各种网络服务的客户端。来自Internet 的目的IP 为应用服务器的IP 报文,以及应用服务器回应的报文都会经过防火墙处理。在防火墙上使能SYN Cookie 功能后,合法客户端与应用服务器之间TCP 连接的交互报文在通过SYN Cookie 验证后由防火墙进行代理发送,而攻击者向应用服务器发起的连接报文因无法通过SYN Cookie 的检查而被防火墙过滤,应用服务器因此得到保护。
3.2  Safe Reset典型组网应用

图10 Safe Reset 典型组网应用图
10 所示,Internet 上存在潜在的攻击者和正常使用各种网络服务的客户端。来自Internet 的目的IP 为应用服务器的IP 报文都会经过防火墙处理,但服务器回应的报文并不一定经过防火墙。在防火墙上配置Safe Reset 功能后,合法的客户端向应用服务器发起的TCP 请求报文在通过Safe Reset 检查后由防火墙允许放行,攻击者向应用服务器发起的连接报文因无法通过防火墙Safe Reset 的检查而被丢弃,应用服务器因此得到保护。
3.3  SYN Flood攻击防范综合组网应用

图11 SYN Flood 攻击防范综合 组网应用
11 所示,防火墙的内网属于Trust 域,内部服务器的网络属于DMZ 域,外部网络属于Untrust 域,Untrust 域中存在潜在的攻击者。
在防火墙上采用基于域的配置,对DMZ 域内的服务器进行SYN Flood 攻击防范检测配置,根据服务器的实际流量,配置服务器允许的新建连接速率阈值及半开连接数阈值。若服务器受到SYN Flood 攻击,防火墙输出SYN Flood 告警日志,并且可以选择对后续向DMZ 域内的服务器发起的访问进行(单向或双向)TCP 代理,保证到达服务器的TCP 连接请求都是正常的。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值