在云计算环境,云主机提供被请求的云服务,有时在收到大量的请求时可能崩溃。这就是发生了拒绝服务(DoS)攻击。它放正常用户不能正常访问。DoS攻击通常采用IP欺骗的手法用来隐藏真正的攻击源,同时使得攻击源地址看起来都不相同。
本文中我们提供了一个在云计算环境下防御DDoS攻击的方法,这个新的跳数统计过滤的方法提供了一个在云计算环境下的独立网络 ,可以容易的的防止DoS的解决方案。这个方法也能够降低正常用户云服务的不可用率,降低更新的数量,节省了计算时间。该方法模拟了CloudSim Toolkit环境和相应的产生的结果。
一、介绍
云计算被定义为一种新型的计算形式,以可以动态扩展的虚拟资源在互联网上提供服务。高级的云计算技术包括了,节省消耗,高可用和可扩展的特性。
DoS 攻击不在于通过修改数据获得非法访问,而是希望使目标的服务或者整个网络崩溃,或者是扰乱正常用户的访问。DoS攻击能在一个源或者多个源发起。多个源的攻击被称为分布式拒绝服务攻击(DDoS)。
当操作系统注意到某个服务的工作负载较高,它将分配更多的计算资源来应付增加的负载。攻击者可以淹没一个单点的,系统基础的地址来达到使目标服务的全不可用目的。这些攻击者比较典型的手法就是洪水攻击,基本是由攻击者发起大量的无意义的报文给某一确定的在云上面开放的服务。每一个请求都会被服务去处理以验证是否为合法请求,这就使得每个共计请求都会占用一定量的工作负载。在洪水般的攻击下通常会造成服务器的拒绝服务。
二、跳数计算
虽然跳数信息没有直接存储在IP头中,但它可以试用TTL字段计算出来。TTL在IP头中是一个8位的字段,起初是用来指定互联网上每个报的最大生命周期的。每个中间的路由器会把经过它的IP包在转发到下一跳前把TTL值减一。
A.提取最终的TTL值
当一个数据包到达目的地址提取TTL字段值的时候,这个值被称为最终TTL值。跳数统计的挑战在于在目的地址只能看到最终TTL值。如果所有的操作系统都是用相同的TTL初始值的将会很简单,但实际他们并没有再初始TTL值上达成共识。另外,由于操作系统对于给定的IP地址可能会随时改变,我们就不能假设每个IP地址都使用一个不变的TTL初始值。
B.研究TTL的初始值
根据以上得出,大多数现代的操作系统只选择使用几种初始TTL值,如 30,32,60,64,128和255.只有很少的互联网主机会被分割超过30跳以上,因此我们可以初步判定数据包的初始TTL值为在以上集合总大于最终TTL值的最小数值。
例如,如果最终TTL值为112,那么在可能的128和255中选择最小的是128为初始值。这样给出最终的TTL值就能够找到初始的TTL值。初始TTL值可以由以下方法计算得出:
Initial TTL=32 if final TTL <=32
Initial TTL =64 if 32<final TTL<=64
Initial TTL =128 if 64<final TTL <=128
Initial TTL =255 if 128<final TTL <=255
C.IP2HC表
IP2HC表是一个在数据包源IP地址和这个IP的跳数做映射的表。这是一个以源IP地址为索引来匹配跳数信息。
三、防止DoS攻击的算法
该算法使用跳数过滤机制,并且提供了一个在云计算环境中执行的明确思想。
这个算法需要在云上连续的监控通过网络的数据包,然后我们从监控到的TCP/IP包中提取出SYN标识、TTL值和源IP信息。该算法识别每个捕获的包的四元组的整个操作如下,
如果SYN标识被设置,并且源IP地址在IP2HC表中存在,然后试用IP包的TTL值计算跳数。现在检查跳数是否和存储的跳数是否一致,如果不一致就更新这个IP地址对应的跳数字段的值。
如果SYN标识被设置但是源IP地址在IP2HC表中不存在,那么就计算跳数,然后把源IP地址和对应的跳数作为新的条目添加到该表中。
如果SYN标识没有被设置,并且IP地址存在于IP2HC表中,那么就计算跳数。如果跳数与IP2HC表中存储的对应跳数不符,那么可以判定这个包是虚假的或者这个包是非法的。
如果SYN标识没有被设置并且源IP地址不存在于IP2HC表中,这意味着这个包是虚假的,因为每个合法的IP地址都有一个可用的TCP连接信息记录在IP2HC表中的。
这个检测算法提取去了每个IP包的源IP地址和最终TTL值。算法用推测出初始的TTL值减去最终的TTL值来获得中间的跳数。源IP地址作为表的索引检索这个IP地址的正确跳数。如果某个数据包计算跳数和表中的匹配,这个包为可信的,反之这个包就比较像是虚假的。
算法-1
参考下面的标识:
synflag = Syn bit of TCP packet.
mcount =malicious packet counter.
Tf= final value of TTL.
Ti=initial value of TTL.
伪代码如下:
- For each packet
- Set TTL = ExtractFinalValueOfTTL( );
- //get time-to-leave field of IP packet
- Set srcIp = ExtractSourceIP( );
- //get source IP address from IP packet
- Set synflag = ExtractSynBit( );
- //get Syn flag value from TCP packet
- If (synflag is set)
- {
- If (establish_tcp_connection( ))
- //true when connection established
- {
- If ( srcIp is exist in IP2HC table )
- {
- ComputePacket ( srcIp , TTL , synflag);
- // function call which filter the spoofed
- Packet
- }
- else //new connection packet
- {
- Hc=ComputeHopCount( TTL );
- //get hop-count value
- NewEntryInTable(srcIp,Hc);
- //Add entry into IP2HC table
- }
- }
- else
- {
- // ignore packet
- }
- }
- else //synflag is not set
- {
- If ( srcIp exist in IP2HC Table)
- {
- ComputePacket ( srcIp , TTL, synflag );
- // function call which filter the spoofed
- packet
- }
- else
- {
- ‘drop the packet’ //Packet is spoofed
- mcount++; // increment in malicious
- packet by 1
- }
- }
- ComputePacket ( string srcIp , int Tf , boolean
- synflag)
- {
- Hc=ComputeHopCount( Tf ); //get hop-count
- value
- Hs=RetreiveStoredHopCount(srcIp);
- //get stored hop-count value
- If ( Hc != Hs )
- {
- if( synflag is set)
- {
- UpdateTable ( srcIp , Hc);
- //update hop-count value in IP2HC
- table
- }
- else
- {
- ‘drop the packet’ //Packet is spoofed
- mcount++;
- // increment in malicious packet by 1
- }
- }
- else
- {
- ‘allow the packet’ // packet is legitimate
- }
- }
- int ComputeHopCount( int Tf )
- {
- Set Ti= InvestigateInitialTTL(Tf);
- return Ti - Tf; //return hop-count value
- }
四、模拟结果
我们在CloudSim Toolkit上模拟我们的算法,在云主机上已经到达了1000 pps。实验结果见表1,其中包括了包的SYN标识(Syn)和源IP地址(Src)的各种情况,Syn=0表示SYN 标识没有被设置,Syn=1表示SYN标识已经被设置。同样Src标识当前源IP地址是否在IP2HC表中。Src=0表示条目不存在,Src=1表示条目存在。
第一个实验包括了580(337+243,见表1)个恶意包,和173个新条目,并且只有83个条目被更新。相反,需要在表中需要被更新的包是130(Syn=1且Src=1)。所以有效包的(实际上已缩减)是47个(130-83)。总共缩减在表中更新数是30.15%(总共允许的报数/所有包数),这比常规的方法改善了很多。
在对模拟样本输入到达率为‘A’的计算时间的各种结果进行了分析汇总为表2。
表2:样本输入
图3中展示了我们提出的方法可能节省的计算时间,在2,3,4的用样本里趋势有变化。样本2需要更多的时间,样本3和4因为依赖于接收包的字段。计算时间是云网络性能衡量的相关因素。它提高了云主机的处理能力,可用资源损失达到最小化。
图3:计算时间
五、结论
云计算越来越流行,但是随着云的广泛使用,其安全问题也越来越明显。一个运安全的主要的威胁是分布式拒绝服务攻击(DDoS)或者是更为简单的拒绝服务攻击(DoS)。提高资源的可用率,是很有必要提供一种防御DDoS攻击的机制。其中一种防御方法就是跳数过滤方法(HCF)。本文展示了一个版本的跳数统计方法,不只是检测恶意数据包也包括了更新IP的跳数表的机制。通过分析TCP协议的SYN标识减少了更新次数,也就节省了计算时间。
原文地址:http://irnet.sg/irnet_journal/journal/IJCSEE/IJCSEE_Vol1Iss1/06.pdf