目前,计算机病毒已经成为困扰计算机系统安全和网络发展的重要问题[1-3]。现今大多数防火墙的数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,但应用层的网络攻击却能够通过安全系统而不被发现。深度包检测对于这种攻击是一种有效的安全措施[4],它同时考虑了包头和有效载荷数据。因此,包含深层数据包检测的安全系统比传统的防火墙提供了更好的攻击保护。而现今使用的多数防火墙并不能有效区分包含蠕虫病毒Sobig-F的邮件与正常的电子邮件。
模式匹配是数据结构中字符串的一种基本运算,分为单模式匹配和多模式匹配,其主要包括KMP(Knuth Morris Pratt,KMP)算法、Commentz-Walter算法以及Boyer-Moore算法等。多模式匹配通过一次扫描可以找到多个模式的所有出现,较之于单模式匹配,虽然实现复杂,但应用范围更广。
1 深度包检测现状分析网络数据流量是进行了分片的数据包,对于每个数据流需要先发送到深度包检测系统然后再重新组合。但有些攻击可以通过使用某些非常规协议功能避免入侵检测系统。因此,必须消除这种攻击所使用重叠零碎的IP数据包,但对于复杂条件的网络通信进行分片时可能会产生异常。
目前使用的深度包检测系统一般采用一个或多个通用处理器来运行签名过滤软件。虽然这些软件系统通过重新配置可以很容易检测新攻击,但由于处理器功能不够强大,无法满足千兆及以上网络速度的过滤要求。例如Snort系统,当可检字符串模式长度设定为500时,仅可维持1 GHz奔腾双核系统在带宽速度小于50 Mbps时的检测。有效载荷数据由用户应用程序控制,必须保证对每一个字节的比较处于有效载荷的搜索过程[5-6]。当数据量猛增时,过滤过程则需要维持在很高的处理水平上,而对通用处理器的改造需要付出的代价更高。
2 检测模式构架在Snort规则中是通过对网络数据包的所有层进行查找来发现特定攻击的。检测是对数据包有效载荷字符串详尽搜索的过程,是计算最密集的阶段。在此提出了一种紧凑的多模式搜索和可编程协处理器以适用于网络动态检测。
2.1 模式检测模块基本的模式检测模块(pattern detection module,PDM)如图 1所示。该检测模块通过可编程哈希分离字符串比较函数来实现有效检测。
|
图 1 模式检测模块 |
在每一个时钟周期,输入字符串以哈希索引值方法被散列时,其索引结果以相应的存储模式段作为内存地址。在内存检索模式中与输入模式进行比较,确定该模式段是否为一个完全匹配值。当匹配时,可以发出一个与该模式对应的唯一标识符信号来确认。通过参数整定和硬件级联,可保证检测模式的长度为动态非固定。输入的最大长度字节由哈希生成,作为单PDM检测的最小长度字节。此外,最大的散列索引范围决定了可存储值在内存中的最大项。
2.1.1. 散列索引散列静态位置上的模式约束可被PDM检测。所有模式的前两个字节产生的索引,即使有相同的哈希值,也不能在同一数据管理中存储[7-8]。为了获得更高的资源利用率,允许任何模式的子串生成该值。在实际中,每个模式包括多于一个的独立子串。允许散列函数在该模式下不同的起始字节有偏移量,且被存储在模式内存中,使得PDM内存使用率得到改善。图 2为转换通道,该指数输出时间可以进行调整以符合模式的起始要求。由于该指数的产生是一个子模式不同的偏移,该标识指数输出时间可能并不表明该模式的起始字节。
|
图 2 转换通道 |
一些模式,特别是独特的小子集,无法映射到同一数据管理模块,因为它们的哈希指数可能被使用到另一种模式[9-10]。因此,多个PDM必须运行在平行检测与均等的哈希值模式下。为了提高内存的利用率,每个PDM可以有不同大小的存储器和基于不同目标范围模式的逻辑值。为了保持一致的模块输出时间,较小的PDM需要与最大的PDM进行匹配。
如果多个PDM检查相同的数据,将只有一个PDM输出一个有效的模式匹配指数。扩展输出位指向其模块数,多PDM输出可以合并产生一个索引输出。依赖多PDM存储内容,可在给定的周期输出有效指标。如果某个模式是一个字符串检测,先从第一个字节开始进行混合检测,将其称之为重叠模式。当多个指标在同一周期被发现,输出最长模式的索引已经足以表示较短的模式。上述PDM结构允许数据管理的模式检测长度小于或等于所有最广PDM的内存模块,这种方式称为短模式。
2.2 长模式状态机Snort入侵检测系统中存在一些长模式,PDM没有足够的内存来存储这些模式且效率不高。通过组件架构多个PDM就可以完成超出存储长度的模式。图 3为长模式多PDM分段检测策略。
|
图 3 长模式多PDM分段检测策略 |
长模式被分段赋予不同的索引指数,通过平行PMD进行分段成短模式进行检测。对短模式的检测顺序和序列时间进行匹配,即可有效地检测其对应的长模式。分段PDM检测结果的输出进入由优先级复用器处理,复用器有一个单独的输出,与选择的数据输入值相同。输出生成分段索引指数进入存储器,检测到的指标被发到长模式状态机(long pattern state machine,LPSM)中。LPSM结构类似于PDM,包含了存储器和数据通道,不同的是存储器仅存储当前和下一个状态。索引剩余位被存储在存储器,以验证当前状态,还有一个类型字段用来指示当前索引是否在首位、中间和末端。类型还指定了下一状态是什么,以及PDM预检状态。
当目前状态类型指示为一个长模式段的开始时,序列匹配过程才启动。下一期望状态被转发到类似PDM的交换通道并设置适当的延迟。当下一个索引到达通道末端时,将其与实际当前值进行比较,以确定是否存在匹配。当先前下一状态与当前通道状态中的端部完全匹配,预期下一状态就转发到通道。当下一状态与当前状态不匹配,则此过程结束,没有任何输出。否则,该过程将会继续,直到当前状态被指定为长模式的最后一个段,然后该匹配索引被转发作为用于检测长模式的索引。
依赖LPSM存储器深度和长模式索引,多个模式会进入同一地址。 为了解决这个问题,采用多个LPSM并行运行以检测多个状态序列。为了融合LPSM之间的互操作,匹配位被转发到包含所有当前状态对应的下一个状态模块。当任何一个LPSM接收匹配位时,其预期的下一个状态被转发到通道,而不计自身比较结果。
3 系统集成和功能有了正确的内存值,短模式就可以使用PDM标识,而长模式则同时使用PDM和LPSM模块标识。由于多个索引序列可以被并行LPSM跟踪,它们可以被编程生成重用模式段,出现在一个以上的模式,通过使用模式分段可以降低PDM的内存要求。将一组模式存储到一个优化共同树的关键字,这种转换不仅减少了所需的存储量,而且作为模式搜索算法遍历树时也缩小了潜模式的数目,将一组模式存储到具有公共关键字的优化树中。首先,对模式组进行分析,以形成关键字树。一旦关键字树生成,其关键字被作为分段模式存储在PDM,末端作为转换状态被存储在并行LPSM中。这种优化允许重复模式段被折叠成单一分段,以节省PDM存储空间。
4 硬件及参数配置Snort是一种应用广泛的基于深度包检测技术的网络入侵检测系统,目前已发展成为一个综合了多平台(Multi-Platform)、实时(Real-Time)流量分析和网络IP数据包(Pocket)记录等多个特性的网络入侵检测与防御系统。Snort有数据包嗅探、数据包分析、数据包检测、响应处理等多种功能,每个模块实现不同的功能,各模块都是用插件的方式和Snort相结合,功能扩展方便。为了评估架构的有效性,实现了基于该架构以支持整个Snort规则集的过滤器,设计考虑了面向新进攻的内存空间灵活配置策略。
结构主要参数包括存储器容量、PDM和LPSM的数目和散列函数。根据这些参数,设计人员可以针对给定的威胁状况来自定义过滤器。根据不同的模式设置,该体系结构的参数可能会大大不同,以便于优化资源利用。例如,当所有的目标模式较短且长度均匀时,设计者可以忽略不必要的LPSM 环节;另一方面,当模式为重复通用子串时,设计者可以根据多个并行LPSM选择少量PDM。确定体系结构参数是一个复杂的过程,需要反复权衡,因为这将会影响整个系统的性能。
按照Snort规则,模式的长度范围为1~122字节,模式内容由二进制序列转换为ASCII字符串。因此需要设计过滤器,以支持各种长度的模式及内容。对于模式集合,在PDM中使用大小不同的存储容量,可提高内存的利用率,降低逻辑分区。为了简化设计过程,可以选择设置所有PDM是相同的。散列函数的逻辑包括一系列多路复用器来自主选择任意9位和16位,每个PDM散列逻辑都单独配置以获得灵活性。
设计分为8个LPSM单元,每个单元由29位512 MB内存条实现。虽然LPSM存储记录足以完全映射整个Snort的内容,但是在可编程滤波器中仍然需要使用更大的存储器。由于每个LPSM可以匹配不同的序列模式,设计中短模式段能够重复使用多达8次。
5 软件模式完成硬件参数设置后,所得到的数据通路就可以使用多种不同的算法进行编程。根据算法、模式的复杂性和程序大小,在编译时就会有很大的不同。一般情况下,描述相同事件的短程序会比长程序需要更长的编译时间,但较短的程序往往会产生更少的索引结果,而系统性能的稳定性与程序的长短无关。
根据上述硬件及参数配置,长模式必须被分解成17个字节或更少的短段,由于分配到PDM的优先次序,对应短模式并不是唯一的。消除重复模式将会大大地节省存储空间,为了保证每个索引模式具有唯一的识别性,要求每个模式的最后段必须是不同的。为了有效消除重复模式,先将长模式分割成合适的短模式,同时产生含有重叠模式的列表,通过向两个任意重叠模式分配更高的优先级,时间越长的索引会包含更短的模式。如果长模式的任何部分是重叠的,它必须有最高的优先权,当算法获得模式的最大长度段时,这种优先级会自动分配,这样在一个周期内多个PDM重叠模式段就可以被区分。
一旦模式段的列表生成,它就可以被用于产生对所有长模式索引的序列。当长模式被分成较小的段,段标识符的相应序列与随后的段和类型标志之间的时间延迟会被同时记录。这些数据输入到LPSM单元用于跟踪长模式。
6 结语随着互联网技术的快速发展,信息安全问题显得越来越重要,网络入侵已经成为危害计算机网络安全的主要因素之一。网络入侵检测系统是提高安全性能的重要手段,已成为当前计算机网络安全领域的研究热点问题。本文对入侵检测研究现状进行了分析,提出了一种基于模式匹配的网络入侵检测系统的协处理器架构。分析了深度包检测现状,对模式匹配和协议分析进行了比较,设计了检测模式构架,考虑了多模式情况,总结了系统集成和功能,最后给出了硬件及参数配置,为提高网络入侵检测效率提供了有力支撑。
| [1] | 樊爱京, 杨照峰. 用于网络入侵检测的模式匹配新方法[J]. 计算机应用, 2011, 31(11): 2961–2964. |
| [2] | 王晓程, 刘恩德, 谢小权. 攻击分类研究与分布式网络入侵检测系统[J]. 计算机研究与发展, 2001, 38(6): 727–734. |
| [3] | 陈科, 李之棠. 网络入侵检测系统和防火墙集成的框架模型[J]. 计算机工程与科学, 2001, 23(2): 26–28. |
| [4] | 谭爱平, 陈浩, 吴伯桥. 基于SVM的网络入侵检测集成学习算法[J]. 计算机科学, 2014, 41(2): 197–200. |
| [5] | 陈颖悦. 一种基于聚类算法的网络入侵检测应用[J]. 厦门理工学院学报, 2014, 22(1): 70–74. |
| [6] | 赵建华, 刘宁. 结合主动学习和半监督学习的网络入侵检测算法[J]. 西华大学学报(自然科学版), 2015, 34(6): 53–57. |
| [7] | 赵夫群. 基于混合核函数的LSSVM网络入侵检测方法[J]. 现代电子技术, 2015, 38(21): 96–99. |
| [8] | 马世欢, 胡彬. 基于特征选取和样本选择的网络入侵检测[J]. 计算机系统应用, 2015(9): 240–243. |
| [9] | 王兴柱, 颜君彪, 曾庆怀. 基于均值聚类分析和多层核心集凝聚算法相融合的网络入侵检测[J]. 计算机应用与软件, 2015, 32(12): 313–315. |
| [10] | 穆俊. 基于蚁群聚类算法的数据挖掘技术在网络入侵检测中的应用研究[J]. 洛阳理工学院学报(自然科学版), 2015(2): 68–72. |
2016, Vol. 31