论文部分内容阅读
随着互联网的飞速发展,网络安全问题日益严重。入侵检测技术是一种新的积极主动防御的安全保障技术,而Snort是其中基于规则匹配的一种入侵检测技术。Snort首先提取出每一种入侵行为的特征,然后按照一定的规范将这些特征编写成规则以形成Snort规则数据库,最后通过检测网络数据包与规则数据库中的规则是否匹配来判断入侵与否。在Snort入侵检测系统中,规则的匹配效率是影响Snort检测效率的关键。对Snort中所有的规则进行逐条匹配是非常耗时和不可行的。因此,可通过“关键特征”将有一定共性且模式化的规则分为一组,并将每一组编译成一个复合确定性有限自动机(Deterministic Finite Automaton,DFA)。这样,可以通过“关键特征”进行预匹配并定位到少量的复合DFA,只对定位到的复合DFA进行精确匹配,避免了对全部Snort规则的逐条匹配,提高了匹配效率。然而,复合DFA不能满足硬件的存储要求,因此,需对复合DFA进行压缩。基于上述描述,本文的主要工作如下:首先,本文给出了“关键特征”的定义,提出了在Snort规则中提取关键特征的一个新的有效算法。该方法能够提取出正则表达式中全部的关键特征,并由这些关键特征可以达到很好的分组效果。其次,为了实现数据包对规则进行精确匹配,提出了对复合DFA的终态标记算法,该算法可以确定数据包精确匹配到合并前的哪个DFA。再次,考虑到复合DFA会占用大量的存储空间,不能够满足硬件的存储要求,本文提出了基于密度聚类的一种DFA行压缩算法,该算法可以极大地减少复合DFA的存储空间。同时,提出了对行压缩后的DFA匹配算法。最后,对这些算法进行了实验,实验结果表明:利用Snort规则中提取出的关键特征进行分组有效地将分组数量由原来的2076减少至1583个;复合DFA的行压缩算法将存储空间减少了80%,满足了硬件的要求,保证了压缩后的DFA与压缩前的DFA有近似的匹配速度。