2. 中国科学技术大学 计算机科学与技术学院, 合肥 230027
2. School of Computer Science and Technology, University of Science and Technology of China, Hefei Anhui 230027, China
防火墙作为企业的网络基石,它是连接着内部网络与外部网络之间的网络安全系统,其中最重要的管理任务是配置正确的防火墙和安全规则[1]。然而由于防火墙的访问控制列表 (Access Control List,ACL)策略可能包含大量的规则,规则间可能存在冲突导致规则的顺序敏感性,即对同一个数据包相同的规则不同的顺序可能产生不同的结果,以及防火墙的策略可能由不同的管理员在不同的时间配置的,这大大增加了防火墙出现问题的概率。随着防火墙规则的增加,配置错误的数量也随之急剧增加[2],因此为了网络系统的安全,对防火墙的ACL策略配置的审计至关重要。
为了检测防火墙的策略规则冲突,张昭理等[3]提出一种防火墙冲突检测算法,首先对防火墙规则间的关系进行建模分类,顺序抽取规则,将该规则与其前面的规则进行一一比较,确定规则间是否存在冲突。殷奕等[4]提出了防火墙规则间包含关系的解析方法,通过不考虑规则的动作域简化分析规则间的关系,能够快速有效地分析出规则间的关系。唐晔[5]提出基于规则分解的映射的防火墙匹配算法,根据规则分解映射和标准维相关的规则,建立一棵二叉决策树,该算法支持范围形式表示的规则,提升了时空性能。施荣华等[6]在传统的策略树的审计方案中对任意两个规则的不同域进行策略树比较,若策略树路径存在相交部分,则可能存在异常。卢云龙等[7]提出改进的策略树审计方案,首先建立包含正常规则的策略树,然后将防火墙的每条配置与该决策树进行比较产生规则分类,对同类中的规则进行冲突检测,提升了审计效率。Liu[8]提出对防火墙规则建立防火墙策略决策图(Firewall Decision Diagram,FDD),消除防火墙间的异常,并用给定的属性规则检测该防火墙是否满足要求。Karoui等[9]提出使用3个标准来评估和分类检测到的异常,即定量评价、语义评价和多异常评价以达到异常的准确分类。Liao等[10]提出直接基于有向树的方法来检测防火墙中的规则异常,并根据有向树跟踪异常来自哪个防火墙。
上述方案均是考虑单个防火墙上的规则间的关系和冲突检测,但在实际应用中,企业可能部署多个防火墙将网络划分为不同的子网本文称为多层防火墙,这些子网的访问权限可能有所不同,防火墙之间的规则可能存在异常情况,因此有必要对多层防火墙的ACL配置策略进行审计。Alseaer等[11]提出在分布式防火墙中异常策略检测方法(Inter-Firewall Anomaly Discovery Algorithm,IFADA),通过异常发现算法状态转换图发现异常,将每条路径上的所有防火墙两两之间的规则进行对比并记录异常,但对于不同的路径可能包含相同的一对防火墙,从而产生冗余的对比。张丽[12]提出变体二叉树模型,实现分布式防火墙异常规则的检测,但无法精确分析具体规则间的异常。吴军等[13]提出基于半同构标记防火墙决策图(Semi-isomorphic Marked Firewall Decision Diagram,SMFDD)实现分布式防火墙规则异常检测及优化,有效实现2个防火墙之间的规则异常的检测,对于给定的路径两两比较防火墙间的异常;在有多条路径的情况下,防火墙间的对比可能发生多次,造成一定冗余对比次数,同时也未考虑时间因素。Thanasegaran等[14]提出基于时间的单个防火墙内规则的冲突检测,将时间作为一个条件比较2条规则是否在某个相同的时间冲突,将规则的时间域依据星期几分为不同的时间段,一定程度上减少了规则的比较次数,但仍有不同的规则跨越多个相同的时间段,带来一定的冗余对比次数。
现有的防火墙审计方案主要考虑防火墙内的策略异常或防火墙间的策略异常,并只在单个防火墙冲突检测中考虑了时间因素,同时忽略了防火墙之间的内在拓扑联系,为此本文提出了基于树的异常检测回溯算法(Anomaly Detection based on Backtracking Algorithm,ADBA),旨在解决基于时间的多层防火墙的ACL审计问题。
1 防火墙规则策略及其关系 1.1 防火墙过滤规则的结构防火墙ACL策略是由过滤规则组成的顺序链表,对经过的每个数据包依次与链表中过滤规则的顺序匹配决定是否让其通过防火墙。每条规则包含以下字段:序号(index)、协议类型(protocol type)、源IP地址(source IP address)、源端口(source port)、目的IP地址(destination IP address)、目的端口(source port)、有效时间(time)、动作(action)。
本文中采用防火墙规则是一个八元组Rule={index,protocol,s_ip,s_port,d_ip,d_port,time,action}:
1) index字段表示该规则在防火墙规则集的位置;
2) protocol字段表示该数据包的传输层协议类型;
3) s_ip和d_ip可以是具体的地址如(10.24.25 .8 )或是一段IP地址如(10.24.25.*);
4) s_port和d_port可以是某个特定的端口号,也可以是任意(any)端口;
5) time可以为某天或一段时间,同时能具体到一天的某个时段如(MONDAY,6:00~18:00) ;
6) action的值是accept(允许数据包通过)或者deny(拒绝数据包通过)。
防火墙过滤规则示例如表 1所示。其中:“*”表示有效的任意IP地址,“—”表示所有任意的时间。
给定任意2个规则Rx和Ry,其域间关系如下所示。
1) index域:<(小于)、>(大于),如Rx[index]<Ry[index]。
2) protocol域以及action域:=(相等)、≠(不相等),如Rx[protocol]<Ry[protocol],Rx[action]≠Ry[action]。
3) s_ip,s_port,d_ip,d_port各个域的关系可分为:=(相等)、≠(不相等)、⊂(包含于,前者是后者的真子集)、⊃(包含,后者是前者的真子集),如Rx[s_ip]=Ry[s_ip],Rx[s_port]≠Ry[s_port],Rx[d_ip]⊂Ry[d_ip],Rx[d_port]⊃Ry[d_port]。
4) time域:=(相等)、≠(不相等)、⊂(包含于,前者是后者的真子集)、⊃(包含,后者是前者的真子集)、∩≠空集(前者与后者相交且不为空)。
根据规则间的关系主要考虑{protocol,s_ip,s_port,d_ip,d_port,time}这6个域值间的关系,可将规则关系分为以下4个类别[3]:
1) 无关规则。规则Rx、Ry无关时当且仅当至少一个域值不相等或不相交。
2) 相等规则。规则Rx、Ry相等时当且仅当每个域值均相等。
3) 包含规则。规则Rx、Ry相交时是除协议域值相等外,其他域值均为包含(或包含于)关系。
4) 关联规则。规则Rx、Ry关联时其协议域值相等,时间域值相交,其他域值是包含或包含于的关系。
1.3 单个防火墙规则异常及缺失规则异常通常是由于规则间存在重叠部分,导致防火墙出现漏洞,同时由于管理员在配置规则时可能存在缺失的情况,导致防火墙不能有效对某些流量进行控制产生巨大的危害。下面给出各类异常定义[7]。
1) 屏蔽异常。
在防火墙的访问控制列表中,如果规则Rx在规则Ry之前,且Ry所能匹配的所有的数据包都能被Rx匹配,则规则Ry将会失效。如Rx在Ry之前,Rx[action]≠Ry[action],但Rx、Ry的其他域相等,则规则Ry被规则Rx屏蔽。
2) 交叉异常。
如果规则Rx与Ry动作域不同,但其余的域相交,当2个规则的顺序不同时,可能产生相反的结果。则称规则Rx与Ry交叉异常。
3) 冗余异常。
如果规则Rx所匹配的包也能被Ry所匹配,且规则Rx与Ry采取相同的动作,那么将去掉Ry也不会对防火墙的安全产生影响,则规则Ry是冗余的规则。
4) 配置缺失及其他异常。
在配置过程中,可能存在管理员配置错误,一个本应是小范围的规则配置了一个大的范围(端口为80允许通过配置成了所有端口允许通过),或对某条规则未配置的情况。
2 多层防火墙策略审计系统的设计 2.1 多层防火墙策略配置异常多层防火墙的策略配置异常可分为2种:单个防火墙的策略配置异常及防火墙策略间的配置异常,因此在设计多层防火墙策略审计时,本文不仅要对单个防火墙进行配置异常的检测,也要进行防火墙间策略异常的检测。
对单个防火墙策略检测有如前面所述的各种异常,在多层防火墙网络中,一个数据包可能要经过多个防火墙才能到达目的地,本文把接近源地址的称为上游防火墙,记为Fu;把接近目的地址的防火墙称为下游防火墙,记为Fd;其中的规则分别记为Ru、Rd。以往的分布式防火墙并未考虑防火墙之间拓扑的联系,总是根据需要建立多个防火墙间的异常检测,但现实公司中的防火墙结构有其独特的多层结构,如一个总公司下面有多个子公司,多层防火墙网络如图 1所示。文献[11]中提出2种异常情况如下:当一个数据包被上游防火墙允许通过而被下游拒绝时,非法的数据包可能到达内部网络;当一个数据包被上游防火墙拒绝而被下游防火墙允许通过时,合法的数据包可能被错误地屏蔽掉。但在多层防火墙中也存在如下的情况:下游防火墙拒绝的数据包已被上游防火墙拒绝时,会产生冗余的配置;对于给定的策略,多层防火墙不能实现该策略,假如允许10.0.1 .0 /8发出的数据包访问10.0.0.0/12网段,但是检测时数据包未能到达目的节点,会导致预定的策略不能实现。下面给出多层防火墙间的异常定义:
1) 上游防火墙Fu允许的数据包被下游的防火墙Fd丢弃,则出现非法流入异常。
2) 上游防火墙Fu拒绝的数据包被下游的防火墙Fd接受,则出现屏蔽错误。
3) 下行防火墙Fd拒绝了已经被上行防火墙Fu拒绝的数据包,此时存在冗余异常。
4) 如果某个数据包本该能够通过防火墙Fu和Fd,但由于配置缺失导致防火墙执行了默认的拒绝动作,导致数据包不能通过,此时存在缺失异常。
由于以往的分布式防火墙策略冲突检测未考虑时间因素,当它们用在基于时间的防火墙策略中时可能会将一个非冲突的策略标记为冲突的策略,如对同一个数据包,上游防火墙拒绝它在8:00~18:00通过,而下游的防火墙拒绝它在0:00~6:00通过,不考虑时间因素,传统的策略冲突检测会将其判定为冗余异常,但它们是在不同的时间段产生效果,所以这是一种误判。因此在多层防火墙策略配置冲突检测时时间也应当作为一个参考因素。在文献[13]中,由于将规则所处的时间域分为不同的时间段(周一至周日),同一规则可能跨越不同的时间段,如规则Rx、Ry的时间域均为周一、周二,Rz的时间域为周一,那么规则Rx、Ry将分别在周一与周二比较一次,因为周一的规则为Rx、Ry、Rz,不同于周二的Rx、Ry,因此Rx、Ry的比较次数增加了,本文直接进行时间段的比较,若2条规则的时间段相交则比较2条规则是否有异常,否则不比较。
本文利用一种只有一个根的树结构来表示防火墙规则的安全策略,称之为安全策略树,其中根节点为表示规则中的协议域,叶子节点表示为规则中的动作域,其余中间节点依次表示规则中的源IP地址、源端口号、目的IP地址、目标端口号以及时间域。节点的分支表示该域可能的取值,如图 2所示,协议为TCP的源IP地址为10.0.63 .0 的目的端口包含80端口、21端口、23端口的数据流可以通过,图中*号表示有效的任意端口、IP地址和时间段。依据安全策略树检测一个规则是否与安全策略树上的规则产生异常。
解析数据库主要通过对一个企业的各个防火墙解析得到防火墙ACL配置信息,并将这些防火墙的配置信息依据它们之间的依赖关系构成树状结构的数据表。数据表中包含的内容为:表主键、设备标识符、直接下层设备、ACL配置信息。
表主键为t_id,它是一个自增长的整型值,无实际意义,标记为每条记录的ID。
设备标识符为dev_id,它表示为一个防火墙设备的名称。
直接下层设备为low_layer_dev,它的值是设备标识符,一个设备可能包含多个直接下层设备。
ACL配置信息为cfg_acl,它指向一个ACL策略表,表中包含了该防火墙的ACL配置信息。其格式为如前所述的八元组{index,protocol,s_ip,s_port,d_ip,d_port,time,action}。
2.3 基于树的异常检测回溯算法对防火墙的配置信息进行解析,并将它们之间的相关拓扑通过直接下层设备连接,得到一个关于树的结构如图 3所示。
在以往的防火墙策略间的策略冲突检测时,若要检测0号防火墙与所有的底层间的冲突时,需要将每条路径上的防火墙策略两两分组,执行策略配置异常检测,因此对于图 2中的情况,会有以下结果,对于路径从Firewall-0到Firewall-j,和路径Firewall-0到Firewall-k,它们之间的公共路径Firewall-0到Firewall-2将被计算2次,计算次数随着Firewall-2的下层分支的增多而增多,为此本文提出基于树的异常检测回溯算法。具体步骤如下:
1) 初始化并访问树的根节点root,判断它是否存在子节点(直接下层设备),若存在则检测它们之间的策略异常情况,并加入这些异常并对子节点调用回溯异常算法;否则结束。
2) 当前节点若存在未访问的子节点,递归调用回溯异常检测算法检测其与未访问子节点间的异常。
3) 若当前节点是非root节点且不存在子节点或子节点为空时,将这一路径上的异常导出保存至异常记录,删除当前节点与其父节点间的异常并返回其父节点,转至第2) 步。
4) 若当前节点是root,且不存在未访问的子节点时算法结束。
当随着一条路径如图 2所示的0-2-j间的策略异常检测过后,将这条路径上的异常记录下来,由于j没有子节点,因此算法将退到节点2上,节点2中还有未访问的子节点k,将继续比较节点k与前面防火墙间的策略异常。此时节点2与之前的路径上的节点间的异常不必再次检测,节省一定的时间,随着节点深度和层次的增多,时间效率提高的越明显,假设2个节点间的检测时间为O(1) ,传统算法对一个n=(2i-1) 个节点的完全二叉树所用的时间为O((i-1) 2i-1),i表示二叉树的层数,本文采用的算法在路径上2个节点间只计算一次,所用时间为O(2i-1) ,随着节点n的增大,耗时将显著减少。
2.4 多层防火墙ACL策略审计过程在分析了防火墙的ACL配置信息后,根据防火墙的网络拓扑结构得到多层防火墙的逻辑结构图并结合异常检测回溯算法,可以得出多层防火墙ACL策略审计的过程:
1) 首先根据网络拓扑结构构建出多层防火墙的逻辑结构。
2) 对每个防火墙的ACL策略解析并统一格式保存到数据库中。
3) 对于多层防火墙中的每个单一防火墙运行单个防火墙异常检测,确保单个防火墙中没有异常。
4) 对多层防火墙执行基于树的异常检测回溯算法,检测防火墙之间的策略异常。
3 实验结果与分析 3.1 实验设置本文使用安徽省国家电网公司及其子公司间的网络拓扑作为仿真实验的网络拓扑,其中国网安徽省电力公司下辖16个市级电力公司,在这16个市级电力公司下面共有72个县级电力公司,并在Network Simulator version 2(NS2) 中构建多层防火墙的场景,将总公司设为根节点,依照等级将其他公司设置为不同层设备,总体为3层。文献[15]反映在实际中防火墙的规则数量最多为3000条。本文实验设置防火墙规则最多条数为3000条。由于缺少防火墙规则,本文基于拓扑构造了防火墙策略进行测试,其策略更具一般性,并使用不同数量的防火墙规则对提出的算法与SMFDD算法作出对比。
3.2 评价标准本文关注两个度量作为基于树的回溯异常检测算法的评价标准:一是处理时间,显示算法的执行时间,时间越少,算法的执行时间效率越高;二是规则异常数目,指示在这个系统中存在多少个异常规则的数目。
3.3 实验结果与分析图 4描述了当多层防火墙网络中随着单个防火墙规则数目的增长算法的处理时间如何变化,处理时间指的是算法检测完所有路径上防火墙间的异常的时间。ADBA能够显著地减少异常的检测时间,当防火墙规则条目增多时,时间性能的提升更加明显。这是因为在ADBA中,当防火墙处在不同的路径上时,这些防火墙间的规则异常只需检测一次。而在传统的SMFDD算法中,对每条路径上的防火墙间做一次规则异常检测。导致在多层防火墙中,某些防火墙同时处在不同的路径上。造成这些防火墙间的规则异常检测冗余次数增多。ADBA考虑了防火墙间的逻辑结构,能够有效避免防火墙间的冗余检测。相比SMFDD算法,本文提出的ADBA平均能够缩短28.01%的异常检测时间。
图 5描述了多层防火墙网络中随着单个防火墙ACL中规则数目的增长算法检测出的防火墙间的异常规则的数目的变化。
随着单个防火墙规则数目的增多,防火墙间的异常规则数目也随之增多。但ADBA检测异常的个数要少于SMFDD算法,这是由于ADBA考虑了不同规则间的时间区域,2条异常规则在不同的时间段运行不会被视作规则异常。而在传统的SMFDD算法中,没有考虑时间因素,尽管它们的时间段不同,但是2条规则却被判断成异常的,从而产生了错误的异常判断。相对于SMFDD算法,本文提出的ADBA能够减少21.60%的规则异常个数,提升了规则异常检测的准确性。
相比传统的SMFDD算法,本文提出的ADBA能够减少规则异常的检测时间,同时根据时间因素能提高异常检测的准确性。
4 结语本文针对实际多层网络中防火墙ACL异常检测问题,提出基于时间的回溯异常检测算法的审计方案,根据网络的拓扑结构生成相应的防火墙逻辑结构,异常检测时能够判断当前的路径是否已经检测过,从而有效地避免相同防火墙间多次检测的过程;同时在规则中参考时间因素对异常检测的影响,有够提升异常检测的准确性。实验结果证明本文提出的ADBA能够减少异常检测的时间并提升检测的准确性。本文考虑了国家电网中上下级网络间防火墙ACL审计,并未考虑同级间的互相访问的影响,因此下一步将研究如何将同级间的防火墙考虑到多层防火墙中,实现最优的防火墙间的ACL审计策略。
[1] | RUBIN A D, GEER D, RANUM M J. Web Security Sourcebook[M]. New York: John Wiley & Sons, 1997 : 14 -15. |
[2] | YOON M K, CHEN S, ZHANG Z. Minimizing the maximum firewall rule set in a network with multiple firewalls[J]. IEEE Transactions on Computers, 2009, 59 (2) : 218-230. |
[3] | 张昭理, 洪帆, 肖海军. 一种防火墙规则冲突检测算法[J]. 计算机工程与应用, 2007, 43 (15) : 111-113. ( ZHANG S L, HONG F, XIAO H J. Firewall rule conflict discovery algorithm[J]. Computer Engineering and Applications, 2007, 43 (15) : 111-113. ) |
[4] | 殷奕, 汪芸. 防火墙规则间包含关系的解析方法[J]. 计算机应用, 2015, 35 (11) : 3083-3086. ( YIN Y, WANG Y. Analysis method of inclusion relations between firewall rules[J]. Journal of Computer Applications, 2015, 35 (11) : 3083-3086. ) |
[5] | 唐晔. 一种基于规则分解映射的防火墙规则匹配算法[J]. 计算机应用, 2009, 29 (11) : 2969-2971. ( TANG Y. Rule matching mapping algorithm for firewall based on rule decomposion mapping[J]. Journal of Computer Applications, 2009, 29 (11) : 2969-2971. doi: 10.3724/SP.J.1087.2009.02969 ) |
[6] | 施荣华, 莫锐, 赵文涛. 一种基于冲突检测的无关联规则集匹配算法[J]. 计算机工程与科学, 2010, 32 (10) : 1-4. ( SHI R H, MO R, ZHAO W T. An irrelative rule set match algorithm based on collision detection[J]. Computer Engineering and Science, 2010, 32 (10) : 1-4. ) |
[7] | 卢云龙, 罗守山, 郭玉鹏. 基于改进策略树的防火墙策略审计方案设计与实现[J]. 信息网络安全, 2014 (10) : 64-69. ( LU Y L, LUO S S, GUO Y P. The design and implementation of firewall policy audit plan based on improved strategy tree[J]. Netinfo Security, 2014 (10) : 64-69. ) |
[8] | LIU A X. Formal verification of firewall policies[C]//Proceedings of the 2008 IEEE International Conference on Communications. Piscataway, NJ:IEEE, 2008:1494-1498. |
[9] | KAROUI K, FTIMA F B, GHEZALA H B. Firewalls anomalies severity evaluation and classification[J]. International Journal of Security & Networks, 2014, 9 (3) : 167-176. |
[10] | LIAO X J, WANG Y, LU H. Rule anomalies detection in firewalls[J]. Key Engineering Materials, 2011, 474/475/476 : 822-827. |
[11] | ALSHAER E S, HAMED H H. Discovery of policy anomalies in distributed firewalls[C]//Proceedings of the 2004 IEEE International Conference on Computer Communications, Piscataway, NJ:IEEE, 2004:2605-2616. |
[12] | 张丽.分布式防火墙策略异常检测算法的研究[D].南京:南京理工大学,2007:44-48. ( ZHANG L. The research on distributed firewall policy anomaly detection algorithm[D]. Nanjing:Nanjing University of Science and Technology, 2007:44-48. ) |
[13] | 吴军, 邓宝龙, 邵定宏. 基于SMFDD实现分布式防火墙异常规则检测及优化[J]. 计算机工程与设计, 2014, 35 (11) : 3741-3746. ( WU J, DENG B L, SHAO D H. Anomaly detection and optimization of distributed firewall rules based on SMFDD[J]. Computer Engineering and Design, 2014, 35 (11) : 3741-3746. ) |
[14] | THANASEGARAN S, TATEIWA Y, KATAYAMA Y, et al. Design and implementation of conflict detection system for time-based firewall policies[J]. Journal of Next Generation Information Technology, 2011, 2 (4) : 24-39. doi: 10.4156/jnit |
[15] | CHEN F, LIU A X, HWANG J, et al. First step towards automatic correction of firewall policy faults[J]. ACM Transactions on Autonomous & Adaptive Systems, 2011, 7 (2) : 439-447. |