数据包深度过滤方法

文档序号:10538754阅读:312来源:国知局
数据包深度过滤方法
【专利摘要】本发明公开了一种数据包深度过滤方法,根据snort规则对数据包进行过滤获得不同规则中相同offset的content字符串,对每种offset的content字符串构件一个查找树;对待检测数据包依次在每个查找树中的首位的叶节点进行索引查找,如果与任意一个查找树中的首位的叶节点匹配,则所述待检测数据包为疑似攻击包转发到检测引擎进行检测。本发明能够检测出一些具备明显攻击特征的数据包,将其送入攻击检测引擎进行检测,将不具备攻击特征的数据包直接转发,从而减少引擎在转发过程中对数据包进行规则检测而导致的性能下降。
【专利说明】
数据包深度过滤方法
技术领域
[0001] 本发明涉及网络入侵检测技术领域,具体涉及一种数据包深度过滤方法。
【背景技术】
[0002] 随着网络的发展,各种攻击手段也层出不穷,如后门程序、信息炸弹、拒绝服务、网 络监听。全球范围内网络威胁的数量及复杂度正快速提升,在这样的背景下,网络安全技术 必须不断更新,才能保证网络环境的安全。目前的网络安全技术主要有:虚拟网技术,防火 墙技术,病毒防护技术,入侵检测技术,安全扫描技术,认证和数字签名技术,VPN技术等。防 火墙技术是用来控制网络之间互相访问,防止内部网络被外部网络用户非法访问,可以有 效的屏蔽内部网络受外部网络的威胁。虽然防火墙是保护网络免受外部攻击的有效手段, 但是防火墙没有办法解决内部节点发起的攻击,而据目前的研究表示很多的网络安全事件 是由网络内部节点引起的,入侵检测技术可以有效的解决这一问题。入侵检测系统通过捕 获网络中的数据包,对其进行分析,跟已有的规则库进行匹配,来判断是否有违反安全策略 的行为和被攻击的迹象。入侵检测系统是一种实时的、主动的安全防护技术,能够检测内部 入侵、外部入侵和误操作行为,一旦发现攻击及时记录和响应。入侵检测作为信息安全的重 要领域,具有重要的研究价值和意义,随着网络流量的不断增大,攻击手法的复杂化,入侵 检测系统也需要不断优化,才能提供实时,高效、高质量的安全防护的服务。目前的入侵检 测系统主要存在以下问题:误报/漏报;网络流量不断增大,使得入侵检测系统的计算速度 不能满足需求;拒绝服务攻击;入侵检测系统宕机问题等。
[0003] 目前入侵检测系统存在的主要问题有: 1.误报/漏报 误报/漏报产生的主要原因是:第一攻击种类越来越多,攻击手法越来越复杂,使得入 侵规则条目不断增多,从而使入侵检测系统的计算负荷成线性增加;第二,网络规模越来越 大,网络带宽不断增长,使得数据包捕获和分析能力很难跟上网络流量的增加,导致了网络 数据包丢失;第三,攻击技术趋于隐蔽化、复杂化,也加重了误报/漏报的现象。
[0004] 2.不断增大的网络流量使计算速度不能满足计算量的需求入侵检测作为一种主 动的,实时的防护系统,所以需要做到快速处理数据,分析数据。而随着网络规模的不断扩 大,网络流量的不断增加,出现了 IDS系统计算速度跟不上的问题。基于模式匹配方法的检 测系统所需要的计算量是非常惊人的。在系统运行整个过程中,模式匹配所占时间比重相 当大,据统计,在应用最广泛的入侵检测系统Snort中处理20万个Web访问数据包时,模式串 匹配时间占用了系统运行总时间的47.7%。随着网络带宽的不断增加,将对入侵检测系统提 出更高大的挑战。
[0005] 3.阻断入侵的能力低。
[0006] 入侵检测系统的工作重点在于对入侵行为的识别,为了提高网络安全,有效识别 黑客入侵,必须提高入侵检测系统的阻断攻击能力。而目前IDS仅能识别IP地址,无法定位 IP地址,不能识别数据来源。IDS系统在发现攻击事件的时候,只能关闭网络出口和服务器 等少数端口,但这样关闭同时会影响其他正常用户的使用。因而其缺乏更有效的响应处理 机制 4.入侵检测系统体系结构的问题。
[0007] 目前的IDS主要采用单一主机收集信息或通过多个分布式的主机收集信息,然后 按照唯一的或多种标准对收集的这些信息在一台计算机上集中分析处理。这种体系结构存 在单点失效以及可扩展性差等问题。

【发明内容】

[0008] 有鉴于此,本发明的主要目的在于提供一种数据包深度过滤方法。
[0009] 为达到上述目的,本发明的技术方案是这样实现的: 本发明实施例提供一种数据包深度过滤方法,该方法为:根据snort规则对数据包进行 过滤获得不同规则中相同off set的content字符串,对每种off set的content字符串构件一 个查找树;对待检测数据包依次在每个查找树中的首位的叶节点进行索引查找,如果与任 意一个查找树中的首位的叶节点匹配,则所述待检测数据包为疑似攻击包转发到检测引擎 进行检测。
[0010] 上述方案中,该方法还包括:如果与所有查找树中的首位的叶节点均布匹配,则所 述待检测数据包直接转发到目的地址。
[0011] 上述方案中,所述根据snort规则对数据包进行过滤获得不同规则中相同off set 的content字符串,对每种off set的content字符串构件一个查找树,具体为:根据snort规 则对数据包进行过滤获得不同规则中相同off set的content字符串,对所述content字符串 按照从小到大的进行排序,之后,所述排序后的content字符串从头到尾每个相同字符构成 一个叶节点,所有叶节点组成一个查找树,重复构建每个offset的查找树。
[0012] 与现有技术相比,本发明的有益效果: 本发明能够检测出一些具备明显攻击特征的数据包,将其送入攻击检测引擎进行检 测,将不具备攻击特征的数据包直接转发,从而减少引擎在转发过程中对数据包进行规则 检测而导致的性能下降。
【附图说明】
[0013] 图1为本发明实施例提供一种数据包深度过滤方法的流程图; 图2为本发明实施例提供一种数据包深度过滤方法的查找树的示意图; 图3为本发明实施例提供一种数据包深度过滤方法的索引查找流程图。
【具体实施方式】
[0014] 下面结合附图和【具体实施方式】对本发明进行详细说明。
[0015] 本发明实施例提供一种数据包深度过滤方法,如图1所示,该方法通过以下步骤实 现: 步骤101:根据snort规则对数据包进行过滤获得不同规则中相同off set的content字 符串,对每种offset的content字符串构件一个查找树。
[0016] 具体的,大多数snort规则都写在一个单行上,或者在多行之间的行尾用/分隔。 snort规则被分成两个逻辑部分:规则头和规则选项;规则头包含规则的动作、协议、源和目 标ip地址与网络掩码、以及源和目标端口信息;规则选项部分包含报警消息内容和要检查 的包的具体部分。
[0017] 下面是一个规则范例: alert tcp any any -> 192.168.1.0/24 111 (content:^100 01 86 a5|^; msg:^ mountd access〃;) 其中,content关键字是snort中比较重要的一个。它允许用户设置规则在包的负载中 搜索指定的内容并根据内容触发响应。当进行content选项模式匹配时,Boyer-Moore模式 匹配函数被调用,并且对包的内容进行检查(很花费计算能力)。如果包的负载中包含的数 据确切地匹配了参数的内容,这个检查成功并且该规则选项的其他部分被执行;所述检查 是大小写敏感的。
[0018] Content关键字的选项数据比较复杂;它可以包含混合的文本和二进制数据。二进 制数据一般包含在管道符号中(〃|〃),表示为字节码(bytecode)。字节码把二进制数据表示 为16进制数字,是描述复杂二进制数据的好方法。下面是包含了一个混合数据的snort规则 范例。
[0019] alert tcp any any -> 192·168·1·0/24 143 (content: "|90C8 C0FFFFFF|/ bin/sh〃;offset:3; depth: 22;msg: 〃IMAP buffer overflow!";) offset(偏移)规则选项被用作使用content规则选项关键字的规则的修饰符,这个关 键字修饰符指定模式匹配函数从包负载开始处开始搜索的偏移量,depth也是一个content 规则选项修饰符,它设置了内容模式匹配函数从他搜索的区域的起始位置搜索的最大深 度。
[0020] 根据snort规则对数据包进行过滤获得不同规则中相同off set的content字符串, 对所述content字符串按照从小到大的进行排序,之后,所述排序后的content字符串从头 到尾每个相同字符构成一个叶节点,所有叶节点组成一个查找树,重复构建每个offset的 查找树。
[0021 ] 例如:通过snort规则中的content字段进行建立查找树;如下例所示,不同规则中 相同 offset 的 content: 规则 1: content: "abc" 规则2: content: "bijk" 规则3: content: "bmk" 规则4: content: "aefg" 规则5: content: "bmn" 首先对content字符串进行排序,按照从小到大的顺序进行排序得到下表
步骤: StepO: offset = Ο,每个off set创建相应文件。
[0022] Stepl:从规则中读出相应offset的content。
[0023] Step2:对content进行字符串排序。
[0024] Step3:将排序结果写入对应offset文件。
[0025] Step4: off set是否小于MAX_0FFSET,是转Stepl,否转Step5。
[0026] Step5:结束。
[0027] 根据排序好的content字符串建立查找树,所述查找树如图2所示。每个叶节点为 一个content的字符,经过排序好的content字符串,每列上有多行相同的字符。将这些相同 的字符合并为一个相同的节点。首字母直接进行索引查找,每个不同的offset建立一个查 找树,多个不同offset的查找树建立起整个的过滤模型。
[0028] 建树算法如下: Step0:offset=0〇
[0029] Step 1:读出对应of f set文件中排序好的字符串。
[0030] Step2:将读出的字符串建立查找树。
[0031] Step3:offset 小于 MAX_0FFSET,是转 Stepl,否转 Step4。
[0032] Step4:结束。
[0033] 步骤102:对待检测数据包依次在每个查找树中的首位的叶节点进行索引查找,如 果与任意一个查找树中的首位的叶节点匹配,则所述待检测数据包为疑似攻击包转发到检 测引擎进行检测,反之,则直接转发到目的地址。
[0034] 具体地,如图3所示,filter[][]表示整个过滤模型,行表示不同的offset,对一个 offset对应的查找树进行查找时,先用数据包payload(数据包应用层负载)的首字母进行 索引,获取查找树根节点filter[offset] [payload[offset]],每个查找树的叶节点对应一 个content字符。如果代入的pay load能够在遍历查找树的过程中遍历到其中一个叶节点, 说明数据包含有攻击特征,送入引擎进行攻击检测。否则,直接转发。
[0035] 算法步骤: StepO :接收一个数据包。
[0036] Stepl:取出数据包负载。
[0037] Step2 :将负载带入过滤模型中查找攻击特征,具备攻击特征转Step3,否则转 Step4〇
[0038] Step3:将数据包送入入侵检测引擎,转Step5。
[0039] Step4:直接转发数据包。
[0040] Step5:结束。
[0041] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【主权项】
1. 一种数据包深度过滤方法,其特征在于,该方法为:根据snort规则对数据包进行过 滤获得不同规则中相同off set的content字符串,对每种off set的content字符串构件一个 查找树;对待检测数据包依次在每个查找树中的首位的叶节点进行索引查找,如果与任意 一个查找树中的首位的叶节点匹配,则所述待检测数据包为疑似攻击包转发到检测引擎进 行检测。2. 根据权利要求1所述的一种数据包深度过滤方法,其特征在于,该方法还包括:如果 与所有查找树中的首位的叶节点均布匹配,则所述待检测数据包直接转发到目的地址。3. 根据权利要求1所述的一种数据包深度过滤方法,其特征在于,所述根据snort规则 对数据包进行过滤获得不同规则中相同off set的content字符串,对每种off set的content 字符串构件一个查找树,具体为:根据snort规则对数据包进行过滤获得不同规则中相同 offset的content字符串,对所述content字符串按照从小到大的进行排序,之后,所述排序 后的content字符串从头到尾每个相同字符构成一个叶节点,所有叶节点组成一个查找树, 重复构建每个offset的查找树。
【文档编号】H04L29/06GK105897739SQ201610345878
【公开日】2016年8月24日
【申请日】2016年5月23日
【发明人】刘彦伯, 陈宏伟, 何建锋, 刘亚轩, 白肖, 刘康
【申请人】西安交大捷普网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1