基于用户忠实度的应用层DDoS防御模型
2015-12-20张亚平
孙 未,张亚平
(天津大学 软件学院,天津300072)
0 引 言
近年来,分布式拒绝服务攻击 (distributed denial-ofservice attack,DDoS)已经成为目前互联网最重要的威胁之一[1]。攻击者通过控制大量傀儡机,向攻击目标发送大量请求,消耗其CPU、内存、带宽等计算资源,目的是阻止其为正常用户提供服务。
早期的传统DDoS攻击通常利用网络层的协议漏洞来发起攻击,耗尽网络带宽和目标主机资源,如常见的SYN flooding、UDP flooding、TCP flooding 和ICMP flooding。许多科研人员对其进行了大量的研究[2-4],并取得了很好的效果。攻击者为了达到更好的攻击效果,开始越来越多得选择了应用层DDoS攻击。
App-DDoS攻击与传统的网络层DDoS有很大的不同。其会建立正常的TCP连接,发出的服务请求也都是合法请求,在内容上与正常用户的请求完全相同。因此之前针对网络层DDoS攻击的检测防御方法对App-DDoS不再有效。针对App-DDoS攻击的防御方法还需要进行更多的研究。
1 相关研究
文献 [5]提出了基于验证机制的攻击防御方法,在客户端和服务器的通信过程中嵌入验证码,来识别合法请求,过滤恶意攻击。该算法对通信双方透明并具有较低的资源消耗。
文献 [6]将应用层DDoS攻击分为request flooding攻击、asymmetric攻击和repeated one-shot攻击。基于这3种攻击,提出来一种Session 可疑度计算模型,根据Session建立速度、请求速率和请求消耗来计算Session 可疑度,最后依据Session可疑度大小进行请求转发。
文献 [7]提出了一种应对突发流下应用层DDoS的防御方法。用一个访问矩阵 (access matrix)来描述正常用户的访问模式,该访问矩阵的参数包括HTTP request rate,HTTP session rate和server documents。然后根据每个会话的行为特征跟访问矩阵的差异大小得到可疑分数,并据此决定是否允许继续访问。
文献 [8]使用隐马尔科夫模型来描述正常用户的访问行为,在线测量Web用户访问行为相对于正常访问模型的偏离度,根据偏离度大小判断恶意攻击序列。该方法训练数据和计算过程繁琐,且不能完全涵盖所有喜好习惯不同的用户的访问特征。
文献 [9]提出了基于卡尔曼滤波和信息熵的联合检测模型DFM-FA,文中依据App-DDoS攻击发生时与突发流表现不同的网络流量的异常变化,将应用层的行为异常映射到网络层的流量异常,使检测模型不依赖于系统日志,在系统日志不易获得的情况下也可以进行攻击检测。
文献 [10]提出了一种白名单缓解攻击的方法。与大部分防御策略里将异常用户加入黑名单的方法不同,白名单过滤方法旨在保证在受到攻击的时候,被加入白名单的重要的合法用户不会受到影响,以此来削弱DDoS 攻击。但是在很多情况下,IP是会经常改变的,文中用将一个网段的IP都加入白名单的方法来避免这个问题,但也导致要维护一个很大的表,这会消耗很多资源。
文献 [11]提出ConnectionScore方法,服务器在受到攻击的时候,会根据每个连接的多个行为特征 (request rate and download rate、arrival distribution rate of users、browsing behavior等)进行打分,结合历史记录,得分低的用户会被剥夺资源。
本文提出了一种基于用户忠实度的ULDM (user loyalty defense model)防御模型。该模型使用用户忠实度作为标准来检测攻击。用户忠实度要根据用户长时间的综合表现来评估,包括历史行为表现、当前行为表现和访问频率。攻击者无法改变其历史行为记录,无法轻易逃避检测。因此,在App-DDoS攻击的检测中,用忠实度作为评价标准是更有效的。
2 用户行为分析
2.1 App-DDoS攻击分类
App-DDoS攻击主要通过大量傀儡机不断访问目标主机,以消耗其各种资源,使其不能再为合法用户提供服务。为了达到攻击效果,App-DDoS 攻击一般会通过以下方式[12]:
(1)请求洪泛攻击。这种攻击通过大量傀儡机快速发出大量合法请求来占用目标服务器资源和网络带宽,使得正常用户无法得到服务。
(2)高消耗请求攻击。这种攻击通过不断请求高消耗资源的内容,比如数据库查询、密码验证等来消耗服务器资源。这样就可以只通过少量傀儡机发送低速率的攻击请求就能达到消耗目标服务器资源的目的。这种方式的攻击比请求洪泛攻击更有破坏力,更难以检测。
2.2 行为特征分析
请求速率分析:洪泛攻击中攻击者通过攻击程序不断发出高频率请求来达到将目标主机资源消耗殆尽的目的。而正常用户由于不同的兴趣和阅读习惯,会在不同的页面上驻留不同的时间。因此,洪范攻击用户在会话中的平均请求速率会跟正常用户有很大差异。
负载比例分析:对服务器来说,不同的请求的负载大小是不同的。正常用户在访问网站的过程中会根据各自不同的兴趣,访问不同的页面。攻击者为了逃避请求速率的检测同时为了达到攻击效果,在访问中都会选择低速率访问高负载的请求。因此高消耗攻击中,攻击用户在会话中的高负载请求比例会比正常用户高很多。
如果攻击者为了逃避检测而在访问速率和请求负载比例上都模拟正常用户进行访问,就必须使用大量的傀儡机才能达到攻击效果,这就大大增加了攻击的开销。因此,攻击者势必要通过高负载比例或高请求速率来达到攻击目的。
3 ULDM 模型
ULDM 模型通过用户的忠实度来判断用户是否为忠实用户,并以此为标准来检测异常。对网站的访问频率较高,并且在多次访问过程中没有攻击行为的用户就具有较高的忠实度,相反,如果用户很少访问该网站或者在访问过程中被检测到有攻击行为,则该用户对该网站具有较低的忠实度,如果忠实度值低于阈值,则判断其为攻击用户。
ULDM 模型如图1所示,主要包括身份管理模块、短期黑名单过滤模块、忠实度计算模块和调度模块。其中,模型的核心为忠实度计算模块,其又分为特征检测、访问频率计算和忠实度计算3个子模块。
图1 ULDM 模型
3.1 身份管理
由于代理、动态IP、局域网共享同一公网IP出口等情况的存在,用IP地址来标识用户很难保证其唯一性和准确性。而要想获得一个用户的长时间的行为表现,就需要能唯一确定用户的身份。
本文使用cookie来唯一标识用户。身份管理过程如图2所示,在用户第一次访问网站时,服务器会为新用户分配一个唯一的身份ID,并用cookie将身份ID 写入用户的主机,并将用户加入数据库中的忠实用户表。用户身份ID由两组数字组成:一组是随机生成的一组数字,另一组是用户第一次访问该网站时的时间戳。忠实用户表用于管理用户忠实度信息。在用户再次发出请求时会携带他特有的身份ID,服务器端便可确认其身份。此处ID 表示的不是用户本身,而是终端设备。如果该客户端在长期访问中没有表现异常,则说明其没有成为攻击者的傀儡机,相反,如果该客户端忠实度低于阈值,则认为其已经是被攻击者控制的傀儡机。
Cookie文件是一种很小的文本文件,由服务端将其保存在客户端,并在该客户端对服务器端进行访问的时候将该文本文件发回给服务器。这项技术已经被广泛的应用,大多数操作系统和浏览器都默认允许使用cookie。因此,本文使用cookie将用户的身份ID 保存在客户端以进行用户身份管理。
图2 身份管理过程
3.2 忠实度计算
评估用户的忠实度应该包含两方面:用户行为忠实度和访问频率忠实度。行为忠实度又包括历史行为忠实度和当前行为忠实度。忠实度的取值范围为 [0,100]。用户忠实度低于阈值时会被认定为不忠实用户而被加入短期黑名单,在一段时间内不能再对网站进行访问。用户在第一次访问网站时,访问频率忠实度会很低。且由于新用户没有不良记录,历史行为忠实度初始值设为35。如果一直表现良好,则忠实度会不断上升,成为高忠实度用户
式中:Li——用户i的最终忠实度,LBi——用户i的行为忠实度,LFi——用户的访问频率忠实度。LBi∈(0,50],LFi∈ (0 ,50] 。
3.2.1 访问频率忠实度计算
访问频率忠实度是用户忠实度中很重要的一个方面,用户对网站访问频率反映了用户对网站的喜爱程度。用户对网站的访问频率越高,越能说明用户是该网站的忠实用户。但是,远期的访问无法反映用户当前对网站的喜爱程度。因此,我们只统计最近一段时间内的访问频率。本文设定一个滑动时间窗口T (本文中取T 为20天),随着时间推移,访问次数减去过期的访问记录数,加上新的访问记录数。时间窗口TF固定不变,我们用固定时间窗口TF里的访问频率来计算用户访问频率忠实度。这样保证了当用户长时间不访问时,其时间窗口内的访问频率会随着时间减小,访问频率忠实度也会逐渐衰减。用户只有通过长期较高频率的访问才能得到较高的访问频率忠实度。因此,攻击用户想通过多次低价值的访问来骗取访问频率忠实度的目的难以实现。
对访问频率忠实度的计算应该满足:①访问频率越高,用户访问频率忠实度越大,即单调递增;②为了更好地防止攻击用户骗取访问频率忠实度,访问频率忠实度在访问频率较低时应缓慢上升,且应该有上限。因此,我们使用一个S型函数sigmoid函数来计算用户的访问频率忠实度
式中:Ci、Fi——用户i在滑动时间窗口TF内的访问次数和访问频率,γ——访问频率忠实度上界,此处为50,α——倾斜系数,控制访问频率忠实度的增长率,定为0.8,β——平移距离,定为1.5。访问频率忠实度变化曲线如图3所示。
图3 访问频率忠实度变化曲线
3.2.2 行为忠实度计算
行为忠实度描述了用户在长期访问网站过程中在行为表现上的友好程度。行为忠实度包括当前行为忠实度和历史行为忠实度。当前行为忠实度描述了用户在当前会话中在行为表现上的友好程度。如果用户访问过程中被检测到有攻击行为,则被视为不友好,此次会话的当前行为忠实度较低。历史忠实度描述了用户在之前的访问过程中在行为表现上的友好程度,是用户大量历史行为表现不断累积的结果。因此,历史访问行为对于评定一个用户的行为表现有很重要的意义。必须对长期以来的历史行为表现和当前行为表现进行综合评估,才能得到更可信的行为忠实度。
同时还应考虑到,当用户长期不访问网站时,其历史行为忠实度对其行为忠实度的评估价值会减小。因此,随着访问间隔的增长,历史行为忠实度在行为忠实度计算中的比重应该逐渐减小。用户只有通过大量的正常访问才能使行为忠实度达到较高忠实度。此外,如果用户在访问过程中被判定为有攻击行为,则应该受到对其不忠实行为的惩罚。该惩罚的力度应远远大于行为忠实度增长的速度,以防止攻击者进行忠实度欺骗。
攻击用户被加入黑名单后,也有可能通过丢弃自己身份ID 的方式来换得新用户的身份来重新访问,但新用户的忠实度偏低,如果行为异常,则很快会被重新加入黑名单
式中:LHBi——用户i 的历史行为忠实度,取值范围为(0.50],LCBi——用户当前行为忠实度,取值范围为 (0,50]。f(Δt)——历史行为忠实度在行为忠实度中所占的比重,Δt——用户当前访问与上次访问的时间间隔,a——区间 (0,1)中的一个常数,决定f(Δt)的变化速度,文中定为0.9。A——设定的时间间隔为0时历史行为忠实度的比重,也就是历史行为忠实度的最大比重,本文中设为0.6。P——需要接受的不忠实行为惩罚,文中设为5忠实度值。Flag——根据是否发生攻击产生的标记值,flag ∈{0,1}。如果用户在访问过程中没有攻击行为,则flag=0,行为忠实度由历史行为忠实度和当前行为忠实度加权相加得到。相反,如果用户被检测出有攻击行为,则flag=1,则要在之前基础上减去P忠实度值的惩罚。
(1)正常用户行为特征训练:通过第2节对正常用户和攻击用户在行为特征上的分析可知,正常用户在平均请求频率和负载比例上与洪泛攻击和高负载攻击有很大的差异。因此我们可以统计分析正常用户的行为特征,将统计结果作为正常行为的标准。
会话平均请求速率训练步骤:
步骤1 在无攻击情况下,分析大量正常用户的访问记录,得到所有会话的平均请求速率。
步骤2 分析得到的所有会话平均请求速率,在(0,Vmax]中找到一个合适的值Vst,使得(0,Vst]可以包含90%的会话请求速率。以Vst 作为正常用户平均访问速率的标准值。
会话请求负载比例训练步骤:
步骤1 对服务请求进行分类,将请求按消耗资源大小分为高负载请求和低负载请求。
步骤2 在无攻击情况下,分析大量正常用户的访问记录,得到所有会话的请求负载比例。
步骤3 分析得到的所有会话负载比例,在(0,Lmax]中找到一个合适的值Lst,使得(0,Lst]可以包含90%的会话负载比例。以Lst作为正常用户会话负载比例的标准值。
(2)行为忠实度计算:在用户访问过程中,每隔一个时间段tB(设为5s),特征检测模块会计算一次用户从会话开始到当前时间段内的平均请求速率和负载比例
式中:nik——用户i 在第k 个时间段tB中的请求数量,mik——用户i在第k个时间段tB中的高负载请求数量。Vij和Lij——用户i在从该会话开始到第j 个tB时间段之间的平均请求速率和负载比例。
然后将得到的请求速率和负载比例与训练得到的正常用户的特征数据进行比对,计算用户在请求速率和负载比例上的偏离程度
给用户平均请求速率和负载比例的偏离程度设定阈值dVT和dLT。当DVi≥dVT或者DLi≥dVL时,则判断该会话存在攻击行为,断开会话连接并将flag 值设为1。在会话结束时,计算该用户在该会话中的当前行为忠实度值
式中:B——用户行为特征都在正常范围内时的当前行为忠实度,此处为50,b—— (0,1)区间内的常数,本文中定为0.6。
3.3 请求调度
当一个会话请求到达ULDM 时,首先进行身份认证和黑名单过滤。如果请求通过,便进入忠实度计算模块计算用户当前行为忠实度、访问频率忠实度,并结合数据库中保存的历史行为忠实度计算得到该用户的最终忠实度并据此判断该用户是否为忠实用户。若忠实度小于阈值,则为不忠实用户,直接将其加入短期黑名单,使其在一段时间内不能再对网站进行访问。相反,如果忠实度大于阈值,则可继续对网站进行访问。
短期黑名单的设置也符合现实中的忠实度规律,如果用户在一段时间未对网站进行访问,那么就像之前分析的历史忠实度会衰减一样,不忠实程度也是逐渐减小的。因此在一段时间后,黑名单中用户应该可以以新用户身份再次对网站进行访问。
4 实验结果与分析
在模拟实验中,使用一台3.4GHz双核Inteli7-2600处理器的主机来模拟Web服务器和数据库服务器。在服务器上运行着新闻网站,用MySQL 来实现数据库服务。具体实验分为4个部分:
(1)模拟忠实用户:给10台主机各分配一个忠实度较高的UserID。然后让具有不同兴趣和习惯的10个人在1个小时内多次对网站进行访问。将上述实验过程重复20次,每次重新分配新的较高忠实度UserID。
(2)模拟新用户:给10台主机各分配一个只具有初始忠实度的UserID。然后让具有不同兴趣和习惯的10个人在1个小时内多次对网站进行访问。将上述实验过程重复20次,每次重新分配新的只具有初始忠实度的UserID。
(3)模拟请求洪泛攻击:用另外5台主机充当攻击用户。傀儡机很多情况下为新用户,因此作为新用户进行访问。在每台主机上用程序模拟10个用户快速发送请求给服务端。将上述实验重复6次。
(4)模拟高消耗请求攻击:用另外5台主机充当攻击用户。在每台主机上用程序模拟10个用户以正常速率向服务端不断发送高消耗请求。将上述实验重复6次。
实验结果见表1、表2。忠实度高的用户在正常访问过程中被判定为攻击用户的情况几乎不会发生。忠实度较低的新用户在正常访问过程中有一定概率会被判定为攻击用户,但概率较低。而同样作为新用户的攻击用户,由于忠实度较低,且行为异常,被判定为攻击用户的概率很高。
表1 正常用户判定结果
表2 攻击用户判定结果
5 结束语
本文针对应用层DDoS攻击,提出了一种基于用户忠实度的ULDM 防御模型。该模型结合用户长期的历史表现,对用户长期与网站交互过程中的行为进行评估,得出该用户对网站的忠实度。通过用户忠实度可以更准确地区分正常用户和攻击用户。实验结果表明,该防御模型能很好保证正常用户,尤其是高忠实度用户在攻击发生时可以正常对网站进行访问。与此同时,攻击用户也会因其异常行为表现而被评估为低忠实度,从而被检测为攻击用户。
[1]ZHANG Yongzheng,XIAO Jun,YUN Xiaochun,et al.DDoS attack detection and control methods [J].Journal of Software,2012,23 (8):2058-2072 (in Chinese).[张永铮,肖军,云晓春,等.DDoS攻击检测和控制方法 [J].软件学报,2012,23 (8):2058-2072.]
[2]Beitollahi H,Deconinck G.Analyzing well-known countermeasures against distributed denial of service attacks [J].Computer Communications,2012,35 (11):1312-1332.
[3]Ehrlich W K,Futamura K,Liu D.An entropy based method to detect spoofed denial of service (dos)attacks [M]//Telecommunications Modeling,Policy,and Technology.USA:Springer,2008:101-122.
[4]Yu S,Zhou W,Doss R,et al.Traceback of DDoS attacks using entropy variations[J].IEEE Transactions on Parallel and Distributed Systems,2011,22 (3):412-425.
[5]WEI Bing,XU Zhen.Defense application layer DDoS attacks based authentication mechanism [J].Computer Engineering and Design,2010,31 (2):231-234 (in Chinese). [魏 冰,徐震.基于验证机制的应用层DDoS攻击防御方法 [J].计算机工程与设计,2010,31 (2):231-234.]
[6]Ranjan S,Swaminathan R,Uysal M,et al.DDoS-shield:DDoS-resilient scheduling to counter application layer attacks[J].IEEE/ACM Transactions on Networking,2009,17(1):26-39.
[7]Devi S R,Yogesh P.An effective approach to counter application layer DDoS attacks[C]//Third International Conference on Computing Communication & Networking Technologies.IEEE,2012:1-4.
[8]Xie Yi,Yu Shun Zheng.A large-scale hidden semi-Markov model for anomaly detection on user browsing behaviors [J].IEEE/ACM Transactions on Networking,2009,17 (1):54-65.
[9]LI Jinling,WANG Binqiang,ZHANG Zhen.Attack detection of App-DDoS based on traffic analysis [J].Application Research of Computers,2013,30 (2):487-490 (in Chinese).[李锦玲,汪斌强,张震.基于流量分析的App-DDoS攻击检测 [J].计算机应用研究,2013,30 (2):487-490.]
[10]Yoon M K.Using whitelisting to mitigate DDoS attacks on critical internet sites [J].IEEE Communications Magazine,2010,48 (7):110-115. binary translator based on godson CPU [J].Computer Engineering,2009,35 (7):280-282 (in Chinese). [蔡嵩松,刘奇,王剑,等.基于龙芯处理器的二进制翻译器优化 [J].计算机工程,2009,35 (7):280-282.]
[3]ZHANG Ji,LI Ningbo.Key technology research of simulator based on binary translation [J].Computer Engineering,2010,36 (16):246-248 (in Chinese).[张激,李宁波.基于二进制翻译的仿真器关键技术研究 [J].计算机工程,2010,36(16):246-248.]
[4]Wondracek G,Comparetti PM,Kruegel C,et al.Automatic network protocol analysis[C]//Proceedings of the 15th Annual Network and Distributed System Security Symposium,2008.
[5]Wang Z,Jiang X,Cui W,et al.ReFormat:Automatic reverse engineering of encrypted messages[C]//Proceedings of the European Symposium on Research in Computer Security,2009.
[6]FANG Xia,YIN Qing,JIANG Liehui,et al.Register parameter recovery method based on dataflow analysis [J].Computer Engineering,2009,35 (22):62-64 (in Chinese). [方霞,尹青,蒋烈辉,等.基于数据流分析的寄存器参数恢复方法 [J].计算机工程,2009,35 (22):62-64.]
[7]ZHANG Youwei,LIU Xiaochun,WANG Yonghong.Study of recognition algorithm for program section [J].Computer Engineering,2009,35 (5):72-73 (in Chinese). [张有为,刘小春,汪永红.程序段识别算法研究 [J].计算机工程,2009,35 (5):72-73.]
[8]Mike Van Emmerik.Static single assignment for decompilation[M].USA:The University of Queensland School of Information Technology and Electrical Engineering,2007.
[9]WEN Yanhua,TANG Daguo,QI Fengbin.Register mapping and register function cutting out implementation in binary translation [J].Journal of Software,2009,20 (zk):1-7 (in Chinese).[文延华,唐大国,漆锋滨.二进制翻译中的寄存器映射与剪裁的实现 [J].软件学报,2009,20 (zk):1-7.][10]LIAO Yin,SUN Guangzhong,JIANG Haitao,et al.All registers direct mapping method in dynamic binary translation[J].Computer Applications and Software,2011,28 (11):21-24 (in Chinese). [廖银,孙广中,姜海涛,等.动态二进制翻译中全寄存器直接映射方法 [J].计算机应用与软件,2011,28 (11):21-24.]
[11] WANG Ronghua,MENG Jianyi,CHEN Zhijian,et al.Condition code optimization in dynamic binary translation [J].Journal of Zhejiang University(Engineering Science),2014,48 (1):124-129 (in Chinese).[王荣华,孟建熠,陈志坚,等.动态二进翻译中的标志位优化算法 [J].浙江大学学报(工学版),2014,48 (1):124-129.]
[12]TANG Feng,WU Chenggang,FENG Xiaobing,et al.Ef-LA algorithm based on dynamic feedback [J].Journal of Software,2007,18 (7):1603-1611 (in Chinese). [唐锋,武成岗,冯晓兵,等.基于动态反馈的标志位线性分析算法[J].软件学报,2007,18 (7):1603-1611.]