论文部分内容阅读
基于windows平台的大多数防火墙,都存在着以下两类问题:第一,随着攻击方式迅速变化,防御手段也应随之而改变,这就要求在原有的防火墙系统上,能够快速地开发出过滤器以应对攻击,即要求其具有良好的可扩展性。但是,现有的防火墙产品多数缺乏可扩展性,不支持第三方开发;另一方面,这些产品大多基于NDIS技术来实现,而该技术纷繁复杂,不利于快速开发各类过滤器。第二,随着防火墙规则集的不断庞大,有效管理这些规则变得越来越困难。当添加规则时,新规则可能会与已有规则发生冲突,造成潜在的安全漏洞。要避免此漏洞产生,管理员必须正确地确定新规则插入的位置。而要实现这一目标,必须找出与新规则相冲突的所有规则。但是,目前存在的冲突检测算法,其时间复杂度为O(dN)(N为规则个数,d为规则维数),效率低下。现有的大多数防火墙,都采用优先级的方式来处理规则间的冲突。但是,这种方式不仅不能从根本上化解规则冲突,而且,会在一定程度上影响包分类的效率。针对这两种情况,本文设计并实现了一种插件式防火墙。该防火墙主要包括两个部分:基于NDIS的插件式框架和构建于该框架上的防火墙实例。插件式框架具有一定程度上的可配置性,良好的可扩展性,并支持第三方开发。在该框架上进行二次开发,不必了解NDIS的任何细节问题,这样有利于快速开发各类过滤器。构建于该框架上的防火墙实例,实现了状态包检测型防火墙的基本功能,从一个侧面佐证了框架的特性。针对现有规则集冲突检测算法效率较低的这一情况,该实例提出并实现了一种基于单维交集的规则集冲突检测算法。该算法不仅能找出与新规则相冲突的所有规则,且时间复杂度降为O(㏒ N+N/w)(w为机器字长),效率大为提高。在单维交集冲突检测算法基础之上,防火墙实例提出并实现了一种基于规则分量分解的冲突化解办法。该办法不仅能够从根本上消除冲突,而且有利于提高包分类效率,还使得规则集具备“所见即所得”的特性。在规则集冲突化解的基础之上,防火墙实例提出并实现了一种基于规则分量分解的包分类算法。由于规则集不存在相冲突的规则,因此,在进行规则匹配时,该算法不需要