防火墙是目前网络安全领域广泛使用的设备,其主要目的就是限制非法流量,以保护内部子网。从部署位置来看,防火墙往往位于网络出口,是内部网和外部网之间的唯一通道,因此提高防火墙的性能、避免其成为瓶颈,就成为防火墙产品能否成功的一个关键问题。一般情况下,网络上的数据流总要持续一段时间,因此,若能通过对防火墙过滤规则的次序进行动态调整,使当前网络中流量最大的数据流所对应的过滤规则位于规则列表的前端,就能减少后继的同类数据包进行规则匹配所需的时间,从而提高防火墙性能。根据这一基本事实,本文提出了用统计分析方法对防火墙过滤规则进行优化的方案。并进行了仿真实验,给出了实验结果。
所谓的用统计分析对防火墙过滤规则进行优化,指的是根据防火墙过滤规则在某一时期的使用频率,对过滤规则的相对次序进行动态调整,使得使用最频繁的规则位于规则列表的最前面,以达到降低后继数据包规则匹配时间、提高防火墙性能之目的。
在调整过滤规则次序时,可以依据全部历史数据流量的统计分析结果,也可以依据当前时间段T 内的数据流量的统计分析结果。前者依据过滤规则被所有历史数据包命中的频率,对规则列表进行排序,结果使命中频率高的规则位于规则列表的前端,那么匹配该规则所需的时间也就会减少。但该方法有着明显的缺点:不能灵敏反映当前的网络流量状况,也就是说不能将当前网络流量使用比较频繁的规则调整到规则集的最前面。而后者依据过滤规则被当前时间段T 内的数据包的命中频率,对规则列表进行排序,结果使当前时间段T 内命中频率高的规则被调整到规则集的前面。相对于前一种方法来讲,后一种方法更接近当前网络数据流的实际状况,我们将重点讨论后一种方法,并对该方法进行改进,使其能更接近当前网络的实际状况。
为了讨论的方便,本文假定防火墙包过滤规则先后顺序对安全没有影响。实际上,在某些情况下,过滤规则的次序对安全是有影响的。不过针对这种情况,本文后面的章节中会给出解决方案。
利用统计分析的方法对防火墙过滤规则进行优化,其关键在于统计数据能否实时地反映当前数据流,也就是说应该尽可能快地使当前过滤规则次序和当前的数据流特性相一致,只有这样,对规则列表的调整优化才有意义。实际上,在采样时间T固定不变时,统计数据的灵敏度和当前网络流量的大小有着直接的关系:当网络流量比较大的时候,由于能在较短时间内统计足够的数据,得到网络流量的发展趋势,因此就应该缩短统计时间,使过滤规则尽快适应当前网络流量,否则规则列表次序就很有可能滞后于当前的网络流量;当网络流量比较小时,如果T 也比较小,就不能统计足够多的数据包,从而不能准确预测当前网络流量的发展趋势,那么调整后的过滤规则次序当然也就不能同步于当前网络流量特性,此时就应该延长统计时间T。基于上面的考虑,要想使过滤规则次序尽可能地和当前网络流量特性相一致,就需要根据当前网络流量大小,动态地调整采样时间T。本文通过引入一个流量因子F 来表示当前的网络流量大小,统计时间T 和流量因子F 成反比。
在下面的描述中,用D 表示防火墙缺省规则;R 表示其它过滤规则,用n 表示集合R 中的规则数,集合中的规则用r1,r2,⋯,rn 表示;用A(ri)(1≤i≤n)表示匹配第i 条过滤规则的数据包数目;用A(D)表示命中属于D 的过滤规则的数据包数目;用T 表示初始采样时间(即定时器时长);Tnew表示调整后的采样时间;F 表示流量因子,F=防火墙最大处理流量÷当前网络流量(F≥1),这是和当前网络流量大小成反比的一个变量。
下面是具体的算法描述(如图3.1 所示)。若图片无法显示请联系QQ752018766
图3.1规则匹配优化算法流程图
(1)初始化。令A(D)=0,A(ri)=0,并假设在防火墙刚启动时过滤规则的顺序是:r1,r2,⋯,rn,启动一个周期为初始时长为T 的定时器。
(2)规则匹配,并统计每一条规则的匹配次数。当防火墙接收到一个数据包时,对数据包的IP 包头信息(例如目的IP 地址、目的端口号、源IP 地址、源端口号及协议类型等)进行分析,并根据制定的过滤规则决定该数据包是否可以通过防火墙。
如果该数据包符合规则集R 中的第i 条规则,则该规则所对应的计数器加1:A(ri)=A(ri)+1
如果该数据包不符合规则集R 中的任何一条规则,则缺省规则D 所对应的计数器加1:
A(D)=A(D)+1
(3)判断定时器计时是否结束。如果计时结束,则应该在重新启动该定时器之前,执行第(4)步,否则继续执行第(2)步。
(4)调整规则集R 中的规则顺序,这个操作应该在计时器重启之前进行。以A(ri)为关键字,对R 中的规则进行降序排序,形成新的规则次序:r1′,r2′,⋯,rn′。当计时器复位时,将A(R)、A(ri)、A(D)清零。
(5)根据当前网络流量,对T 的大小进行调整。其中:F=防火墙最大处理流量÷当前网络流量Tnew=F*T同时用Tnew作为计时器的新时长,重新启动定时器。
(6)跳到第(3)步,用新的规则次序继续进行规则匹配。
在规模较小的计算机网络中,防火墙过滤规则的数目比较少,也比较简单,相互之间没有什么关联,因此过滤规则的先后次序对安全没有什么影响。但在大规模的计算机网络中,防火墙过滤规则的数目会比较多,而且规则之间往往也有着一定的关联性,因而过滤规则的先后次序就会影响到系统的安全。为了解决这个问题,就需要对在前小节中用到的排序算法进行一些修正,以保证在重新排序时不改变关联过滤规则的相对次序。
首选需要对过滤规则的数据结构进行扩充,如下所述:
struct ruletype{
sometype rule;/* 过滤规则* /
int beforeindex[];
int beforecount;/* beforecount 存放数组beforeindex中的元素数目* /
<< 上一页 [11] [12] [13] [14] [15] [16] [17] 下一页