基于轻量级检测和混合连接策略的SYN Flood防御方法
2016-12-26刘云
刘 云
(贵阳学院数学与信息科学学院 贵州 贵阳 550005)
基于轻量级检测和混合连接策略的SYN Flood防御方法
刘 云
(贵阳学院数学与信息科学学院 贵州 贵阳 550005)
为了有效防御分布式SYN Flood 攻击,提出一种基于轻量级检测和混合连接策略的防御模型。该防御模型使用客户端IP地址和TCP端口的熵、SYN和ACK报文的径向基进行SYN Flood攻击检测,并根据检测结果选择标准TCP连接模式和基于防火墙代理的连接模式。基于防火墙代理的连接模式能够避免SYN Proxy防御模型中频繁修改TCP报文序列号、确认号的操作。实验结果表明,该防御模型能够有效降低防火墙的资源消耗,具有更好的防御效果。
SYN Flood攻击 熵 径向基函数 防火墙代理
0 引 言
SYN Flood攻击是DDoS攻击的主要方式,也是最严重的资源匮乏型攻击。它通过向目标服务器发送大量含伪造IP地址的SYN报文,使目标服务器的TCP半连接队列被迅速占满而不能及时释放,造成无法建立正常的TCP连接,从而导致拒绝服务。目前,针对SYN Flood攻击的研究主要包括SYN Flood攻击检测技术和SYN Flood防御技术两个方面[1,2]。
完整的TCP连接包括连接的建立和终止两个过程。在这些过程中,SYN报文、ACK报文、SYN/ACK报文、FIN报文、RST报文的数量具有一定对称性。当网络中存在SYN Flood攻击时,这种对称性会被破坏。文献[1-4]通过各种算法判断这些特性是否被破坏,以判断网络中是否存在SYN Flood攻击。另外,文献[5]根据正常网络流量符合重尾分布的特性,检测网络中是否存在SYN Flood攻击。
从SYN Flood攻击原理可以看出,它主要利用TCP协议三次握手缺陷,通过在第一次握手后建立大量半连接,耗尽服务器资源。因此,所有SYN Flood防御策略最终目的都是保护服务器用于创建TCP半连接的资源,不因恶意客户端发送的大量非法SYN报文而耗尽。据此,可以将现有的防御SYN Flood的策略分为以下两种:其一,在第一次握手时减少服务器半连接状态的资源消耗。例如文献[4]提出利用携带数据的TCP报文建立连接;文献[6]提出将SYN Flood防御转换为一个最优化问题,以减少连接占用的资源;文献[7]提出基于SYN Cookie的防御模型,当服务器收到SYN报文时计算一个Cookie值,填充到SYN/ACK报文中发送给客户端,当收到ACK报文时进行有效性验证后再建立连接[4,6,7]。其二,由代理服务器、路由器、防火墙等预先与客户端完成三次握手,再由代理设备与服务器建立连接。例如文献[8,9]提出的SYN Gateway防御模型,文献[10]提出的SYN Proxy防御模型[8-10]。
针对分布式SYN Flood攻击的严重破坏力,以及呈几何级增长的攻击规模,信息安全防护人员需要从新角度看待SYN Flood攻击,并寻找更有效的解决方案,以降低防火墙和服务器工作压力。本文提出一种基于轻量级检测和混合连接策略的防御模型。该防御模型使用客户端IP地址和TCP端口的熵、SYN和ACK报文的径向基进行SYN Flood攻击检测,并根据检测结果在基于标准SYN报文的连接和基于防火墙代理的连接之间进行灵活切换。基于防火墙代理的连接能够避免SYN Proxy防御模型中修改TCP报文序列号和确认号的操作,从而降低防火墙的压力,提高防御SYN Flood的效果。
1 检测方法和防御策略
目前,所有针对SYN Flood 攻击的研究都是在攻击的流量没有超过服务器接入网络带宽的前提下,以减少服务器资源消耗并保证服务器能够正常提供服务为目的。本文提出的防御技术也是在攻击流量没有超过网络带宽的前提下,提高检测的准确性,提升防御效果。
SYN Flood攻击具有以下两个特点:其一,在网络层对IP地址伪造,在传输层对端口伪造;其二,利用TCP三次握手协议缺陷,向服务器传输大量SYN报文。针对SYN Flood攻击以上两个特点,本文在SYN Flood攻击检测和防御两个方面提出针对性的改进。
1.1 基于熵函数和径向基函数的检测方法
大量的研究已表明,正常网络行为产生的流量是相对稳定的,流量的统计特征在一个有限的范围内平稳波动,而当网络中存在攻击时会使这些统计特征出现异常波动[4]。当网络中存在SYN Flood攻击时,网络层IP地址和传输层端口号会相对集中,传输层SYN报文急剧增加。据此,本文选取网络层IP地址、传输层端口号、SYN报文和ACK报文作为统计参数,根据它们的统计特征判断网络中是否存在SYN Flood攻击,其判断流程如图1所示。
图1 基于熵函数和径向基函数的SYN Flood检测方法
获取指定时间间隔t内防火墙收到的所有客户端发送的TCP报文,分别提取网络层和传输层信息,其信息集合Info(t)表示为如下形式:
Info(t)={infot,1,infot,2,…,infot,n}
(1)
在式(1)中,infot,i表示在时间间隔t内,第i个报文的信息;n表示在时间间隔t内,收到客户端发送TCP报文的总数。
infot,i={ ipt,i, Tcpt,i} 1≤i≤n
(2)
在式(2)中,ipt,i表示在时间间隔t内,第i个报文的网络层IP地址;Tcpt,i表示在时间间隔t内,第i个报文传输层信息。
Tcpt,i={synt,i, ackt,i, interfacet,i} 1≤i≤n
(3)
在式(3)中,synt,i表示在时间间隔t内,第i个报文传输层SYN标志位的值;ackt,i表示在时间间隔t内,第i个报文传输层ACK标志位的值;interfacet,i表示在时间间隔t内,第i个报文的网络层端口号。
1) 基于熵函数的SYN Flood检测(1) 计算网络层IP地址熵
如果网络中存在大规模SYN Flood攻击,将导致网络层IP地址相对集中,使得IP地址熵偏离正常范围,据此可以判断网络中是否存在网络攻击。
从信息集合Info(t)提取客户端IP地址集合IP(t),表示为如下形式:
IP(t) ={ipt,1, ipt,2,…,ipt,l} l≤n
(4)
在式(4)中,ipt,j表示在时间间隔t内,出现的第j个非重复IP地址(1≤j≤l);l表示在时间间隔t内,网络层出现的非重复IP地址个数。再从信息集合Info(t)提取每个客户端IP地址的出现次数,表示为如下形式:
Countip(t) ={ countt,1,countt,2,…,countt,l}
(5)
在式(5)中,countt,j表示在时间间隔t内,第j个IP地址出现的次数(1≤j≤l)。IP地址熵的计算如下:
(6)
其中:
(7)
(2) 计算传输层端口号熵
与网络层IP地址的统计类似,本文还对客户端传输层端口进行统计分析。首先,从信息集合Info(t)提取客户端传输层端口号集合Interface(t),表示为如下形式:
Interface(t) ={interfacet,1,interfacet,2,…,interfacet,f} f≤n
(8)
在式(8)中,interfacet,k表示在时间间隔t内,第k个非重复客户端的端口号(1≤k≤f);f表示在时间间隔t内,传输层出现的非重复端口号的个数。再从信息集合Info(t)提取每个客户端端口号的出现次数,表示为如下形式:
Countinterface(t) ={ countt,1, countt,2,…,countt,f} f≤n
(9)
在式(9)中,countt,k表示在时间间隔t内,第k个客户端端口号的出现次数。与网络层IP地址的熵函数计算形式类似,传输层端口号的熵计算如下:
(10)
其中:
(11)
通过对正常网络中报文进行统计分析可以获得客户端IP地址、端口号熵的阈值Eip、Einterface。
2) 基于径向基函数的SYN Flood检测
从信息集合Info(t)统计以下数据:
(1) 从客户端发给服务器的标志位SYN=1,ACK=0报文的总数packetsyn=1,ack=0(t);
(2) 从客户端发送给服务器的标志位SYN=0,ACK=1报文总数packetsyn=0,ack=1(t)。
计算网络中SYN报文和ACK报文的差值βt:
βt=packetsyn=1,ack=0(t)-packetsyn=0,ack=1(t)
(12)
在大量采集数据的前提下,在时间间隔t内,βt值基本满足高斯分布,这一结论在文献[11]中已经得到验证。径向基函数是一个取值只依赖于离中心点距离的实值函数,一般距离选择欧式距离。因此,可以选择高斯函数作为径向基函数,表示如下:
(13)
(14)
1.2 基于混合连接策略的防御技术
根据上一节SYN Flood攻击检测结果,采用不同的SYN Flood攻击防御策略。当网络中不存在SYN Flood攻击时,采用基于标准SYN报文的连接策略,如图2(a)所示;当网络中存在SYN Flood攻击时,采用本文提出的基于防火墙代理的连接策略,如图2(b)所示。
图2 SYN Flood攻击防御策略
在基于标准SYN报文的连接策略中,防火墙对TCP的三次握手不进行任何干预,严格按照标准TCP三次握手建立连接。基于防火墙代理的连接策略是对SYN Proxy机制的一种改进,该策略能够避免防火墙频繁修改报文的序列号和确认号,从而大幅降低防火墙压力,提高防御效果。
1) 基于防火墙代理的连接原理
基于防火墙代理的连接策略工作流程:
(1) 客户端与防火墙通过标准三次握手建立TCP连接;
(2) 防火墙根据TCP连接信息构建TCP Create报文,并将其推送到服务器;
(3) 服务器根据TCP Create报文创建与客户端的TCP连接。
至此,客户端与服务器之间的TCP连接建立完成,其他数据传输、连接断开与标准TCP协议相同。
2) 基于防火墙代理的连接实现
基于防火墙代理的连接,一方面要求防火墙支持自定义的TCP Create报文,另一方面要求服务器同时支持标准三次握手和TCP Create报文创建TCP连接。因此,本文选择基于开源Linux 操作系统的防火墙和服务器实现基于防火墙代理的连接。
为了与TCP协议的其他类型报文进行区分,本文将TCP Create报文首部的16位保留bit全部填充1。另外,TCP Create报文有效负载的结构体如下:
typedef struct _TcpLinkPackage
{
__u32 cip;
//客户端IP地址
__u16 cport;
//客户端传输层端口号
__u16 sport;
//服务器端口号
__u32 seq;
//客户端的序列号
__u32 ack;
//客户端发送给服务器的确认号
__u32 *pdata;
//客户端ACK报文携带的数据
__u32 size;
//客户端ACK报文的大小
} TcpLinkPackage;
由客户端发送给服务器的ACK报文可能携带应用层数据,而这些数据大多是应用层协议的很多特征信息,这些数据的丢失将导致应用层的处理失败。为了防止服务器丢失这些数据和方便服务器生成ACK报文的确认号,在TCP Create报文里增加了ACK报文携带的数据和ACK报文大小信息。
Netfilter是从Linux 2.4版本之后提供的一个通用防火墙框架,该框架在报文流经的几个关键点定义了大量HOOK,以方便用户注册钩子函数,实现对报文的自定义处理[12,13]。本文在Netfilter防火墙中实现对TCP Create报文的创建,并推送到服务器。NF_IP_LOCAL_IN是Netfilter在报文流入防火墙网络层处定义的HOOK。在NF_IP_LOCAL_IN处可以增加钩子函数,实现对报文自定义处理。本文在NF_IP_LOCAL_IN处增加以下处理过程:如果是传输层ACK报文,则返回NF_ACCEPT,同时本地进程根据连接信息构造TCP Create报文并发送给服务器;否则按照标准TCP/IP协议处理该报文。
为了使服务器同时支持标准三次握手和TCP Create报文创建TCP连接,需要对Linux系统的TCP/IP协议栈进行修改。在Linux操作系统TCP/IP协议栈中,icsk_accept_queue是用于保存TCP全连接的队列,tcp_v4_do_rcv()是TCP模块接受报文的入口函数,tcp_check_req()用于创建socket[12,13]。在tcp_v4_do_rcv()函数中,增加对接收报文类型的判断。若是TCP Create报文,则调用tcp_conn_hand()方法获取TCP Create报文中的相关信息;然后调用tcp_check_req()生成socket,并将其置为TCP_ESTABLISHED状态;最后存入icsk_accept_queue队列。
2 实验环境
为了最大程度模仿分布式SYN Flood攻击场景,实验选择贵阳学院实验大楼3楼312网络实验室。该实验室除50台计算机外,还有大量交换机、路由器、防火墙等网络设备,使用这些设备足以模似分布式SYN Flood攻击网络。实验中搭建的分布式攻击网络如图3所示,主要分为攻击者、主控端、代理端3层。分别在主控端和代理端安装后门程序和攻击程序,它们在攻击者的统一调遣下对服务器发动SYN Flood攻击。
图3 分布式SYN Flood攻击网络
在实验中,将内网地址192.168.1.*划分为8个子网络,如表1所示,包括一个服务器子网络,7个客户端子网络。服务器的操作系统为Linux,IP地址为192.168.1.2,向外提供Web服务,端口号为80。攻击者的计算机操作系统为Windows,IP地址为192.168.1.33;其他6个子网络均包含1个主控端计算机、7个代理端计算机,其操作系统全部为Windows。测试本文提出的SYN Flood检测技术和防御策略在不同攻击强度下检测的准确性和防御的有效性。
表1 网络划分和主机分布情况表
3 实验结果与分析
1) 检测技术的实验结果
为了评价检测方法的有效性,本文选择检测的误报率和漏报率作为评价标准,并与文献[3]提出基于TCP分组比例的检测方法、文献[4]提出基于TCP缓存的检测方法、文献[5]提出基于重尾特性的检测方法进行对比[3-5]。在实验中,攻击者通过控制主控端和代理端向服务器发动不同强度的SYN Flood攻击,统计各种方法的误报率和漏报率,其结果如表2所示。
表2 SYN Flood攻击的检测效果
通过表2可以看出,本文检测方法相对于文献[3]、文献[4]、文献[5]无论是在误报率还是在漏报率方面均有不同程度的降低。通过以上实验结果可以看出,本文提出的检测方法相对于已有的SYN Flood攻击检测方法具有更好的检测效果。
2) 防御策略的实验结果
在实验中,攻击者通过控制主控端和代理端向服务器发动不同强度的SYN Flood攻击,统计防火墙的CPU、内存消耗情况。同时,为了说明本文方法的有效性,选择与文献[8]提出的SYN Gateway防御模型、文献[10]提出的SYN Proxy防御模型及其未防御的情形进行对比分析,结果如表3和表4所示。
表3 防火墙CPU利用率
表4 防火墙内存利用率
由表3和表4中数据可以看出,在未开启任何防御功能时,防火墙只负责对报文进行转发,CPU和内存资源消耗不大;在SYN Gateway防御模型中,防火墙存储服务器TCP空连接的相关信息,并实时遍历超时的空连接,消耗了较多的CPU和内存资源;在SYN Proxy防御模型,防火墙负责抵御SYN Flood攻击,并对TCP报文的序列号和确认号进行修改,同样消耗了较多的CPU和内存资源;在本文防御模型中,省略了防火墙与服务器之间的三次握手过程,避免了修改TCP报文序列号和确认号的操作。因此,本文模型防火墙资源消耗较之SYN 网关和SYN Proxy明显减少。
防御效果可以通过在SYN Flood攻击情况下服务器成功创建的TCP连接数与正常客户端发起连接的请求数比例来反映。为了评估本文防御模型对服务器的保护效果,在实验中统计在不同攻击强度下服务器成功创建的TCP连接数与正常客户端连接请求数的比例,其结果如表5所示。
表5 防御效果
由表5可以看出,在SYN Gateway和SYN Proxy防御模型下,防御效果比未防御时有显著提高,但在攻击强度超过10×103时防御效果迅速减弱;而本文提出的防御模型防御效果明显好于SYN Gateway和SYN Proxy防御模型。根据以上数据可以看出,在攻击强度超过15×103时,相对于SYN Gateway和SYN Proxy防御模型,本文防御模型能够成功创建的TCP连接数分别提高了15.4%和18.1%。
通过上述统计数据的分析可以看出,相对于现有SYN Gateway和SYN Proxy防御模型,本文提出的防御模型能够大幅降低防火墙的资源消耗,同时具有更好的防御效果。
4 结 语
为了有效防御分布式SYN Flood 攻击,本文提出一种轻量级检测和混合连接策略的防御模型。该防御模型分别使用IP地址和TCP端口号的熵、SYN和ACK报文的径向基进行SYN Flood攻击检测,并根据检测结果在标准TCP三次握手建立连接模式和基于防火墙代理的连接模式之间进行灵活切换。实验结果表明,该防御模型能够有效降低防火墙的资源消耗,提升服务器的防御效果。
[1] Ming Yu.An adaptive method for source-end detection of pulsing Dos attacks[J].International Journal of Security and Its Applications,2013,7(5):279-288.
[2] Bogdanoski M,Shuminoski T,Risteski A.Analysis of the syn flood Dos attack[J].International Journal of Computer Network and Information Security,2013,8:1-11.
[3] 陶建喜,周立,周舟,等.非对称路由环境下SYN flood攻击防御方法[J].通信学报,2013,34(S1):285-291.
[4] 胡鸿,袁津生,郭敏哲.基于TCP缓存的DDoS攻击检测算法[J].计算机工程,2009,35(16):112-114.
[5] 许晓东,杨海亮,朱士瑞.基于重尾特征的SYN洪流检测方法[J].计算机工程,2008,34(22):179-181.
[6] Shahram J,Vahid S.Defense against syn flooding attacks:a particle swarm optimization approach[J].Computer and Electrical Engineering,2014,40(6):2013-2025.
[7] Hang B,Hu R M,Shi W.An enhanced SYN cookie defence method for TCP DDoS attack[J].Journal of Networks,2011,6(8):1206-1213.
[8] 赵广利,江杨.Linux平台下防御SYN Flood攻击策略的研究[J].计算机工程与设计,2009,30(10):2394-2397.
[9] 曾小荟,冷明,刘冬生,等.一个新的SYN Flood攻击防御模型的研究[J].计算机工程与科学,2011,33(4):35-39.
[10] 龙恒.SYN代理防御syn-flood攻击的原理及实现[J].计算机系统应用,2011,20(3):214-217.
[11] Kavisankar L,Chellappan C,Sivasankar P,et al.A pionner scheme in the detection and defense of DrDos attack involving spoofed flooding packets[J].KSII Transactions on Internet and Information Systems,2014,8(5):1726-1743.
[12] Behrouz A Forouzan.TCP/IP protocol suite[M].4th ed.Beijing:Tsinghua University Press,2013.
[13] Gary R Wright,W Richard Stevens.TCP/IP ILLustrated volume 2:the implementation[M].2nd ed.Beijing:China Machine Press,2013.
SYN FLOOD DEFENSE METHOD BASED ON LIGHT-WEIGHT DETECTION AND MIXED CONNECTION STRATEGY
Liu Yun
(College of Mathematics and Information Science,Guiyang University,Guiyang 550005,Guizhou,China)
To effectively defense distributed SYN flood attacks, we proposed a defense model, which is based on light-weight detection and mixed connection strategy. The defense model uses client IP address entropy, TCP port entropy and the radial basis of SYN packet and ACK packet to detect SYN Flood attack, and selects either the standard TCP connection mode or firewall proxy-based connection mode according to detection result. The firewall proxy-based connection mode can avoid the operations of frequently modifying the sequence number and acknowledgement number of TCP packets in SYN Proxy defense model. Experimental results showed that the defense model can effectively reduce resources consumption of the firewall and has better defense effect.
SYN flood attack Entropy Radial basis function Firewall proxy
2015-05-27。贵州省科学技术基金项目(黔科合J字LKG[2013]51号)。刘云,副教授,主研领域:信息安全。
TP393.08
A
10.3969/j.issn.1000-386x.2016.11.070