以redhat5.0为实验平台构建一个防御IP欺骗SYN攻击的包过滤防火墙。是以RED算法为基础,结合TCP数据包重传机制,检验SYN数据包的IP地址真实性。对TCP请求数据包利用RED算法判断TCP请求的平均队列长度和包丢弃概率。平均队列长度超过系统负载最大值时,直接按照随机分配的丢弃概率判断是否丢弃数据包。平均队列长度在系统负载之内时,如果当前的丢弃概率大于给定的阈值,则查找哈希表是否有相同的数据节点,找到则接受该数据包,没找到则保存数据包信息到哈希表,同时丢弃该包。经过分析研究和实验的验证,该防火墙具有较好的吞吐量,同时正常数据包的通过率较高。
随着网络的发展,网络攻击的手段越来越多,其中以IP欺骗形式的SYN攻击所占的比例较大,众多的专家学者都致力于研究如何有效控制SYN攻击。也提出了较多的方法,例如状态检测算法,该算法主要是利用TCP连接过程中的几个状态,判断是否为攻击性数据包,但是该算法存在一些缺陷,对每个数据包都要检测其状态,而且要保存较多的数据包信息,这对系统的吞吐量和内存都有较大的影响。因此,本实验防火墙致力于提高正常包的通过率,以及系统吞吐量。对于轻度和中度攻击时的系统性能有很大的提高。
1系统相关知识
1.1防火墙
防火墙是防止网络攻击的主要手段之一,目前的防火墙得到很大的发展,它防止外部网络对内部网络的攻击,一个防火墙的参考模型,如图所示。
图1防火墙模型
1.2RED算法
RED算法利用当前队列的平均长度计算数据包的丢弃概率,具体由三个原则确定,如图所示。
1)当平均队列长度LAV小于给定的数据包队列长度最小门限值Min时,数据包丢弃概率P=0。数据包丢弃概率;和两个门限值的关系图。
图2数据包丢弃概率P和两个门限值的关系图
2)当平均队列长度LAV大于给定的数据包队列长度最大门限值max时,数据包的丢弃概率;P=1。
(3)当平均队列长度在min和max之间,数据包的丢弃概率在0-1之间。
2总体设计
因为IP欺骗形式的SYN攻击,是采用的伪造IP地址和端口,主机发送ACK数据包,攻击机器是不会做出回应的。所以判断正常包就可以让客户机其超时重传,从而检测是否是真实IP。防火墙的设计主要是针对SYN请求数据包,利用RED算法计算当前的TCP连接请求数据包到来时的TCP缓冲区的平均队列长度Q,如果平均队列长度Q小于给定的最小队列门限值min,则说明当前没有SYN攻击或者只有少数的SYN数据包,这种情况下不会影响本机性能,可以直接接受数据包。如果平均队列长度大于最大门限值max,说明当前遭受到较强的SYN攻击,则随机地丢弃数据包。如果平均队列长度在最小门限和最大门限值之间,则计算当前数据包的随机丢弃概率P,如果P小于给定的阈值Pm,则接受数据包,如果P大于给定的阈值,则先到哈希表中查找是否存在相同数据包信息的元素。哈希表存放的是被丢弃的数据包的相关信息,如果找到则接受数据包到本机,如果没有找到则保存数据包相关信息到哈希表中,同时丢弃该数据包。如图所示。
图3防火墙总体设计
3防火墙关键技术实现
3.1包检测模块
采用RED算法实现对数据包的处理,判断进入到主机的TCP连接请求数据包的丢弃概率,首先要定义RED算法中用到的参数。队列的平均长度是判断丢弃概率的关键因素,利用函数实现RED算法的队列长度判断,对于不同的返回值,计算丢弃概率。
3.2哈希表
一个TCP连接请求数据包的丢弃概率经过上面的函数计算以后,根据和预定的概率值进行比较,如果概率小于给定的阈值,则接受数据包通过主机,如果概率大于给定阈值,则到哈希表中进行查找,哈希表中存在相同的数据包信息则接受数据包进入主机,如果不存在则删除数据包,同时保存数据包的相关信息到哈希表中。
4结论
本防火墙的设计采用的拥塞控制算法RED算法,同时利用了哈希表相关知识。构建了一个简单实用的小型防止IP地址欺骗的SYN攻击的防火墙,经过实验测试,该防火墙在轻度和中度攻击时,有较好的防御能力,正常包的通过率保持在98%左右,系统性能也较好,吞吐量也较大。
|