蒋亚平,郭梦佳,张安康
(郑州轻工业大学 计算机与通信工程学院,郑州 450002)
美国国家科学技术委员会(NITRD)在2011年发布了《可信网络空间:联邦网络安全研发战略规划》,提出发展“改变游戏规则”的革命性技术,移动目标防御即是其一[1].移动目标防御是一种通过不断改变攻击面的某种或几种特质以增加防御能力的防御方式[2].移动目标防御使系统减少了静态性、同构性和确定性,增加了系统的安全性,基于移动目标防御的研究逐渐成为信息安全领域的热点之一[3].
美国乔治梅森大学的Wang Huangxin等[4]设计了一种针对DDoS攻击(分布式拒绝服务攻击)的移动目标防御策略(MOTAG);运用一组动态隐藏的代理防御客户机受到DDoS攻击,代理作为通信交流中继,通过不断备份新代理替换已经受攻击的代理,并将客户端到代理的分配进行重组,以隔离泄漏秘密代理服务器位置的内部攻击者.然而,MOTAG用于隔离内部人员的洗牌过程中没有考虑实例化和维护新代理所需的相关开销.美国普渡大学的Paul Wood等[5]提出一种基于云的架构,它提供了一种拒绝服务规避(DoSE)机制来隔离内部人员并确定对少数代理的攻击、实例化新的代理以减少攻击的影响.DoSE虽降低了维护成本,但限制了内部人员所需的代理数量,且该防御策略中没有针对代理的保护策略,代理压力过重.密歇根大学的Sridhar Venkatesan等[6]为了解决DDoS攻击问题和代理间的负载均衡问题,提出了一种新的轻量级防御技术(PROTAG),针对代理捕获攻击设计了一种绑定分割策略,但该防御机制存在以下弊端:如果恶意内部攻击者发现代理被重新分配后不再进行攻击,那么绑定分割策略将起不到辨别恶意内部攻击者的作用,且每次生成两个新服务器增加系统负担.引入代理增强了系统的安全性,但忽略了对代理的保护.在已有防御架构的基础上提出代理保护策略,将更大限度发挥移动目标防御的防御效果.
图1 现有防御架构Fig.1 Existing defense framework
图2 PPMTD防御架构Fig.2 PPMTD defense framework
移动目标防御架构多为图1所示,如文献[4,7]中的MOTAG.整个架构主要由4部分构成:客户(合法或非法)、身份验证服务器、代理服务器和应用服务器.
通信过程:①首先客户请求访问应用服务器;②身份验证服务器提问验证客户身份,将合法用户和非法用户隔离开来;③客户回复;④经过身份验证的合法用户会被分配代理,代理充当着客户机与应用服务器之间的中间层;⑤伪装的内部攻击者发起攻击;⑥一旦遭受攻击,为客户重新分配代理;⑦客户通过代理连接应用服务器.整个服务过程,客户的一切请求通过代理传达给应用服务器,代理作为中间层保护应用服务器.
基于已有防御架构,通过增加代理保护实现增强移动目标防御效果的目的.本文提出代理保护移动目标防御(protect proxy moving target defense,PPMTD).其整体结构如图2所示.
1)身份验证服务器.它是防御过程的第一步,身份验证服务器首先将合法用户和非法用户隔离开来,经过身份验证的合法用户才会被分配代理进而访问应用服务器.这个过程可以过滤掉未被授权的非法客户及通过IP欺骗冒充的客户机.
2)代理服务器.代理充当着客户机与应用服务器之间的中间层,客户的请求通过代理传达给应用服务器,因此保障代理的安全是移动目标防御中重要的一环.本文将代理服务器划分为四个模块:管理模块、状态模块及决策模块.代理服务器结构如图2所示,管理模块负责统筹管理通讯模块、状态模块和决策模块.通讯模块负责服务器对外通信,负责代理与服务器之间的连接交互.状态模块显示代理的即时状态,当代理数量不够时,适当激活一定数目代理.当代理遭受到攻击时,将客户连接转移,判定代理死亡.决策模块会定期更新所有代理.当状态模块检测到代理遭受捕获攻击时,决策模块进行危机处理,启动代理保护算法,反馈生成的虚拟代理地址,使攻击者无法捕获到真实的代理地址.通讯模块、状态模块和决策模块受管理模块管理,也可逆向将自己的状态进行反馈.同时状态模块和决策模块之间可以相互通信,代理的状态模块影响决策模块的决策,决策模块的工作结果决定代理的状态.
3)应用服务器.应用服务器主要为客户提供服务,应用服务器同时负责多个服务.服务器承载所有的会话信息同时服务器负责维护与客户机之间的连接状态,所以应用服务器必须受到良好的保护.移动代理正是为了更好的保护应用服务器,使应用服务器为客户提供正常、连续的服务.
本文提出的PPMTD防御架构与先前的MOTAG防御架构相比,完善了代理服务器功能,对代理服务器中的代理进行模块化管理,增强了对代理的保护,在防御DDoS攻击的同时可以防御代理捕获攻击,增加了系统的安全性.
表1 安全系数与客户服务水平的关系Tab.1 Relationship between safety factor and customer service level
安全代理数是指在给定期间内,为满足需求而持有的超过预期数量的代理数.安全代理数是影响防御效果的重要一环.合理的代理数量可以使防御系统最大地发挥防御效果.本文借助统计学知识来确定需要激活代理的数量.假设对代理的库存需求量服从正态分布.用L表示提前期,即客户发出代理需求与客户连接上代理之间的时间间隔,将L设置为定值.客户库存需求服从正态分布N(u,σ2)那么前L期总客户需求的期望为Lu,方差为Lσ2.用a表示客户服务水平,即客户的满意程度.a越大,代表系统中的代理数越合理.与客户服务水平a相应的安全系数z可由安全系数表查得,见表1.
将安全代理库存记为SS(Safety Stock),公式为:
(1)
安全代理数=(客户总数/平均每个代理连接的客户数)+安全代理库存.安全代理数用A表示,客户总数用K表示,平均每个代理连接的客户数用n表示.即有:
A=(K/n)+SS.
(2)
易知安全代理数A由以下因素决定:系统中的客户总数K;平均每个代理连接的客户数用n;安全系数z;提前期内客户需求方差Lσ2.一个系统中服务的客户数是变化的.可根据公式2在代理需求数量发生变化、提前期发生变化及两者都发生变化的情况下,分别求出各自的需要激活的代理数量.代理数目确定的意义在于激活适当数量的代理可以既不影响正常防御需要,又不无限度的增加代理以致增加防御系统的负担.
本文设计了一种代理保护方案,隐藏实际代理的位置,用一组虚拟的代理地址来迷惑攻击者.由于实施代理轮转切换,用B表示一个客户在不同时刻连接的代理地址.B={C,Dt1,Dt2,Dt3,…,Dtn},其中C表示客户,Dti表示客户Ci在ti时刻所连接的代理位置.为了保证所隐藏代理的合理性又要保证虚拟代理地址与真实地址有一定的差异,生成的虚拟代理地址不应与客户真实连接的代理地址有明显偏离.因此提出以下地址合理性概念.
(3)
地址合理性可保证生成的虚拟代理地址不会过分偏离真实代理地址.当生成一组虚拟代理地址时,还需要从整体考虑所生成代理的合理性.信息熵在信息论中被用于度量信息量,系统越混乱其信息熵越高,信息熵可以作为对系统有序化的度量.本文扩展信息熵这个概念,提出k-匿名集信息熵.
(4)
易知,Hti越大,虚拟地址的隐藏性越好.根据本文提出的地址合理性概念及k-匿名集信息熵概念设计如下算法,生成虚拟代理地址达到受到攻击时隐藏代理的效果.
代理隐藏算法虚拟代理地址生成过程描述如下.
输入:最小隐藏距离Rmin,代理真实位置Tti,系统中被激活的代理总数A,单位距离m
输出:虚拟代理位置
Step1:生成一个随机数d,d属于[1,A];
Step 4:生成随机数α和β,α∈[0,a]和β∈[0,b];
Step 5:构造隐藏区域S,其中长为a*m,宽为b*m;
Step 6:构造概率集Q={q1,q2,…,qa*b},其中qi表示第i个虚拟地址被攻击的概率;
Step 7:生成虚拟代理地址集LIST1;
Step 8:利用公式(4)计算匿名集信息熵,选出k-1个信息熵较大的匿名集生成虚拟代理地址集LIST2;
Step 9:从LIST2中随机选取一个虚拟代理地址作为返回结果.
设计如上代理隐藏算法算法来描述虚拟代理地址生成的步骤,根据代理真实位置Tti和最小匿名区域Rmin来确定匿名区域S的位置和大小(1~5行).然后计算匿名区域中所有虚拟代理地址被攻击概率;最后调用算法返回ti时刻的虚拟地址集合,并随机选取一个虚拟代理地址作为返回结果(6~9行).
代理动态演化过程如图3所示.该过程描述了代理从被激活到受到攻击死亡的过程.代理服务器根据公式(5)~(7)定期更新代理.
A(t)=A(t-1)+Anew(t)+Adeath(t),
(5)
Anew(t)={x|x=Knew/n},
(6)
Adeath={y∈N|y为t时刻死亡的代理数}.
(7)
其中A(t)表示t时刻代理数;A(t-1)表示t-1时刻代理数;Anew(t)为t时刻新产生的代理;Adeath(t)为t时刻死亡代理;Knew为t时刻新连接的客户数;n为平均每个代理连接的客户数.代理通过动态演化过程清除死亡代理,补充代理池中不足代理,使代理自身得到完善并及时更新代理服务器.为代理在系统中的后续工作提供了保障.
假设整个系统可能面临DDoS攻击及代理捕获攻击,攻击者为已通过身份验证的伪装的内部攻击者,内部攻击者意图攻击应用服务器,但受到代理阻隔,此时内部攻击者对代理进行探测侦查代理地址——代理面临捕获攻击,当内部攻击者捕获到一定数量的代理地址后即可对代理发起DDoS攻击,也可对应用服务器发起DDoS攻击.
根据试验所需,搭建如图4所示网络拓扑结构.本文试验采用Nmap 7.7作为探测工具,对代理地址进行不断探测.
图3 代理动态演化过程 图4 网络拓扑图Fig.3 Agent dynamic evolution process Fig.4 Network topology diagram
用d表示检测到内部攻击者所花费的成本,Q(n)表示进行n次探测的可能性,Q(n)=(1-e-(α*n)),D(n)=Q(n)*d,用这种指数分布来模拟攻击者成功发起攻击所需的努力[8].所做的试验中取α为0.05.为将检测成本d和探测成本c进行归一化,使d=z*c,z∈Z+.同时取c=1.每次试验保证代理数相同,用不同数量探针探测进行多组试验.试验结果如图5、6所示,探针越多探测成本随之下降,较少的探针就可以发现较多的活动代理,即攻击者使用较少的探测成本就可以实现大范围的DDoS攻击,给系统带来严重隐患.
图5 探针数量与检测成本关系图 图6 探针数量与活动代理数关系图
为保障系统安全防止代理地址被大量捕获、攻击者发动大型DDoS攻击,本文对代理加强保护,对提出的代理地址隐藏算法进行试验分析,而后在减少代理被攻击的基础上执行地址切换算法来进行移动目标防御.将所提出的代理隐藏算法与不同的地址切换算法进行防御效果叠加,来说明代理保护策略对移动目标防御效果具有增强作用.试验结果由图7~9呈现.在MATLAB上实现核心算法,并在仿真的客户端和代理节点上运行.
图7 不同数量内部攻击者探测到的代理比例 图8 无代理隐藏无辜人员所占百分比
图9 代理隐藏无辜人员所占百分比Fig.9 Percentage of agents hiding innocent people
本文设置内部攻击者与代理1∶500的比例进行试验.让内部攻击者对代理地址进行不断探测.结果如图7示,试验结果表明当没有启用代理保护算法代理地址没有隐藏的情况下通过不断的侦查,内部人员通过侦查可以发现70%左右的活动代理,这对代理乃至整个防御架构的安全造成了极大威胁.而当内部攻击者探测代理地址,防御架构对代理进行地址隐藏时,内部人员通过不断的侦查发现的活动代理数降至20%左右.
为衡量本文提出的代理隐藏算法在整个移动目标防御系统中的性能优劣.本文将代理隐藏算法应用于本文提出的PPMTD防御架构与文献[9]中的贪心算法、文献[6]中的内部隔离算法及平均分配法[10]结合.通过无辜客户数量随攻击次数增加的变化情况来验证防御效果.对用到的地址转换算法做如下统一:模拟试验中客户数为10 000、地址转换次数为10次、内部攻击人员为200.通过改变攻击次数,来统计除内部攻击者外的无辜人员的变化情况,用无辜人员所占比例反映系统的安全程度.结果如图8、9,通过试验数据表明:仅使用地址切换算法,随攻击者发起攻击次数的增加,系统中除内部攻击者外的无辜客户数量降至所有通过验证的客户总数的40%左右.在原有系统的保护条件下,当加入本文提出的代理保护算法后无论代理保护算法与贪心算法、内部隔离算法、平均分配法结合,随着攻击次数的增加均使系统中除内部攻击者外的无辜人员数量有明显减少,可以使无辜客户数保持在60%以上,显著减小了除内部攻击者外的无辜客户受影响比例.成功验证本文提出的代理隐藏算法能对系统进行有效保护,阻止了对代理的攻击,保护效果明显.
本文针对DDoS攻击及代理捕获攻击研究了移动目标防御技术.对代理加以保护,使系统识别内部攻击者的能力更强,同时内部攻击者对代理及服务器的攻击效果减小.本文提出通过统计学原理根据用户的需求确定要激活的代理数量,采用了代理隐藏算法通过构造虚拟的代理地址来迷惑攻击者.对防御架构中的代理加以保护,极大地减小了攻击者对代理的捕获攻击性.通过试验表明本文的防御机制比受到攻击时直接用地址转换算法,除内部攻击者外的无辜人员比例减小明显.试验结果证实本文提出的方法具有先进性,可有效抵御攻击者的攻击.PPMTD防御架构实现了对整个系统的安全保护,增加了系统的安全级别.