SYN Flooding网络攻击的原理、检测及防御技术*

2010-06-13 03:30赵开新李晓月
河南工学院学报 2010年3期
关键词:服务器端攻击者报文

赵开新,李晓月

(河南机电高等专科学校计算机科学与技术系,河南 新乡 453002)

随着Internet的迅速发展和普及,给人们带来方便的同时也带来了严峻的网络安全问题,网络上充满了泛洪攻击,尤其是DoS(Denial of Service Attack),即拒绝服务攻击,这种攻击的目的是使被攻击的主机、服务器等网络设备无法提供正常的服务,而近年来在DoS技术基础上发展起来的DDoS(Distributed Denial of Service),即分布式拒绝服务攻击,更使被攻击者防不胜防,目前DDos攻击中最常见的攻击方式是TCP SYN泛洪攻击。

1 SYN Flooding攻击原理

SYN Flooding利用了TCP/IP协议固有的漏洞,实施对网络中的客户机、服务器进行攻击,它的攻击原理是通过伪造一个SYN报文向服务器发起连接,其源地址是伪造的或者是一个不存在的地址,服务器接收到报文后发送SYN ACK报文应答,由于攻击报文的源地址不可达,因此应答报文发出后,不会收到ACK报文,造成一个半开连接,如果攻击者发送大量的报文,会在被攻击主机上出现大量的半开连接,从而消耗其系统资源,使正常的用户无法访问。

正常的TCP建立连接的三次握手流程如图1所示,具体过程如下:

1)A的TCP向B发出连接请求报文段,其首部中的同步比特SYN应置为1,并选择序号x,表明传送数据时的第一个数据字节的序号是x。

2)B的TCP收到连接请求报文段后,如果同意,则发回确认,B在确认报文段中应将SYN置为1,其确认号应为x+1,同时也为自己选择序号y。

3)A收到此报文段后,向B给出确认,其确认号应为y+1,A的TCP通知上层应用进程,连接已经建立。

4)当运行服务器进程的主机B的TCP收到主机A的确认后,通知其上层应用进程,连接已经建立。

图1 TCP连接的建立过程

在上述过程中,服务器收到SYN报文后,在发送SYN/ACK回应客户端之前,需要分配一个数据区记录这个未完成的TCP连接,这个数据区通常称为TCB(Transmission Control Block)资源,此时的TCP连接也称为半开连接。这种半开连接仅在收到客户端响应报文或者连接超时后才断开,而客户端在收到SYN/ACK报文之后才会分配TCB资源,因此这种不对称的资源分配模式会被攻击者所利用形成SYN Flooding攻击。如果使用一个不存在的源IP地址向目标服务器发起连接,该服务器回应SYN/ACK消息作为响应,由于应答消息的目的地址并不是攻击者的实际地址,并且这个地址也可能不存在,所以服务器无法收到响应信息。因此,TCP握手的最后一个步骤将永远不能发生,该连接就一直处于半开状态,直到连接超时被删除,如果攻击者在一个时间段内发动许多客户机与服务器进行连接,这样会使服务器的TCB资源被消耗殆尽,以至于不能再接受其他客户端正常的连接请求[1]。

2 SYN Flooding攻击的检测

SYN Flooding攻击的检测,可以通过防火墙来进行检测,检测的方法有两种,分别是半开连接数检测和新建连接速率检测。

2.1 半开连接数检测

当客户端向服务器发起SYN Flooding攻击时,如果客户端采用假冒一个不存在的源IP,那么服务器端就会存在大量半开连接。为了有效区分假冒的半开连接和正常连接,可以在防火墙上设置一个半开连接数的阈值,防火墙实时记录所有客户端向服务器发起的所有半开连接数和能够完成三次握手的正常连接数,如果所有半开连接数减去正常连接数大于这个半开连接阈值,并不断增加,这时服务器有可能正在受SYN Flooding的攻击。

2.2 新建连接速率检测

当客户端向服务器发起SYN Flooding攻击时,不管客户端采用假冒的IP地址还是采用真实的IP地址,服务器在短时间内的SYN报文会快速增加。可以通过在防火墙上设置一个新建连接的阈值,服务器收到的报文中一部分是新建连接报文,一部分是已建立连接的后续报文,防火墙实时记录每秒新建连接的数量,然后和设定的新建连接阈值相比较,如果超过这个阈值,服务器有可能正在受SYN Flooding的攻击。

3 SYN Flooding攻击的防御技术

SYN Flooding的防御技术,主要通过防火墙、路由器等过滤网关防御和SYN Cookie技术。

3.1 防火墙防御技术

3.1.1 防火墙阈值设置

防火墙可以采用SYN Flooding攻击检测技术,对网络中新建TCP半开连接数和新建TCP连接速率进行实时检测,通过设置阈值来有效地发现攻击服务器的客户机,然后通过阻断新建连接或者释放无效连接来抵御SYN Flooding攻击。

3.1.2 SYN 网关

防火墙收到客户端的SYN包时,直接转发给服务器,防火墙收到服务器的SYN/ACK包后,一方面将SYN/ACK包转发给客户端,另一方面以客户端的名义给服务器回送一个ACK包完成TCP的三次握手,让服务器端由半开连接状态进入连接状态,当客户端真正的ACK包到达时,有数据则转发给服务器,否则丢弃该包。由于服务器能承受连接状态要比半开连接状态高得多,所以这种方法能有效地减轻对服务器的攻击[2]。

3.1.3 SYN 代理

防火墙在收到客户端的SYN包后,并不向服务器转发而是记录该状态信息,然后主动给客户端回送SYN/ACK包,如果收到客户端的ACK包表明是正常访问,由防火墙向服务器发送SYN包并完成三次握手,这样由防火墙作为代理来实现客户端和服务器端的连接,可以完全过滤不可用连接发往服务器。

3.2 SYN Cookie

SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flooding攻击的一种手段。它的原理是:在TCP服务器收到SYN包并返回SYN/ACK包时,不分配TCB资源,而是根据这个SYN包计算出一个Cookie值。在收到ACK包时,服务器再根据Cookie值检查这个ACK包的合法性。如果合法,再分配 TCB资源进行处理未来的TCP连接[3]。

4 SYN Flooding攻击防范实例

如图2所示,防火墙的内网属于Trust区域,内部服务器的网络属于DMZ(Demilitarized Zone)区域,外网属于Untrust区域。对DMZ内的服务器进行SYN Flooding攻击防范检测配置,根据服务器的正常流量,配置服务器的最大新建连接速率的阈值和最大半开连接的阈值,若服务器受到SYN Flooding的攻击,防火墙就会检测到,这样防火墙可以选择对后续向DMZ域内的服务器发起的访问,进行SYN代理,保证到达服务器的TCP连接请求都是正常的。

图2 SYN Flooding攻击防范应用

5 结束语

本文针对典型的DDOS型的SYN Flooding攻击特点,分析了常见的SYN Flooding攻击检测和防范技术的特点,并在此基础上提出了一个很好的保护内网服务器,减少其被SYN Flooding攻击的安全防范方案。但任何的防范技术都不会万无一失,为了更好地提高网络安全,需要网络管理人员学习研究更多的防范SYN Flooding攻击的技术,综合采用多种安全技术来尽量降低网络中的SYN Flooding攻击。

[1]熊忠阳,张科,等.一种提高状态检测防火墙抵御SYN Flood攻击的方法[J].小型微型计算机系统,2008,29(5):929 -932.

[2]刘双强.SYN Flooding攻击原理及防范措施[J].电脑知识与技术,2009,15(7):1567 -1568.

[3]刘艳,陈雷霆.在路由器上应用SYN Cookie实现Syn Flooding的防御[J].计算机应用与软件,2008,29(5):272 -273.

猜你喜欢
服务器端攻击者报文
基于J1939 协议多包报文的时序研究及应用
机动能力受限的目标-攻击-防御定性微分对策
Linux环境下基于Socket的数据传输软件设计
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
正面迎接批判
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
ATS与列车通信报文分析
有限次重复博弈下的网络攻击行为研究