2663|1

2

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

文字传送门 [复制链接]

1           硬件化探索第三步-NIDS

前面已经讨论了Router和包预处理器的设计与实现,本章我们讨论一个更加复杂的网络系统NIDSNIDSnetwork ,网络入侵检测系统)在网络上实时检测传输的数据流,分析捕获的数据包,主要工作是匹配入侵行为的特征或者从网络活动的角度检测异常行为,进而完成入侵的预警或记录。

熟悉NIDS工作原理的捷径是分析一个开源的网络入侵检测系统Snort从检测模式而言,Snort 属于误用检测。从本质上来说,Snort 是基于规则检测的入侵检测工具,即针对每一种入侵行为都提炼出其特征值,从而形成一个规则数据库,在运行中对规则进行模式匹配。

Snort工作的总体流程如下:首先执行主函数,其中包括对命令行参数的解析以及各种标识符的设置。同时,主函数还调用相关例程对预处理模块、输出模块和规则选项关键字模块进行初始化工作,其实质是构建包含各种处理模块或者初始化模块的链表结构。接着,调用了关键的规则解析进程,主函数启动数据包的处理进程。在对数据包进行处理时,首先是调用各种网络协议解析模块,对当前数据包进行分层协议格式字段的分析。然后,系统一次调用预处理模块和入侵检测模块,根据给定的各种规则和当前截获数据包的协议分析结果,做出是否发生入侵行为判断的响应,如判断为入侵则进行日志记录和报警操作。其中数据包解析模块与检测模块是最重要的模块。

数据包解析模块的全部工作都是围绕着网络协议栈中的各层定义展开的,包括了数据链路层和传输层等协议层的定义。解析引擎中的每个子模块使用事先定义好的数据结构,从原始网络数据中解析出协议信息。这些子模块按照网络协议自下而上的顺序调用,从数据链路层到传输层,直到应用层结束。

检测模块的流程就是使用预定义的规则进行模式匹配。Snort系统将其检测规则组织成一个二维的链表结构:链表头和链表选项,如图2-2所示。所有的规则按照规则头排成主链,然后根据规则选项把规则插入到这个链中,构成一棵规则树。这样每一个选项节点就对应一条规则,规则匹配的过程就是对网络上捕获的每一条数据报从二维的方向对规则树进行匹配扫描。

 

 

1.1         基于FPGANIDS研究现状

大多数NIDS都是基于NP技术,目前人们也在研究利用ASIC或者FPGA的纯硬件并行处理特点对核心模块进行加速,以实现高速NIDS,如TCP/IP协议解析芯片的处理能力达4Gbps[2]。而FPGA的可重匹配、并行处理等特点更适合于NIDS的硬件加速,它的并行处理可以摆脱原有技术受限于CPU顺序指令的制约,提高处理能力;因此可重配置则比ASIC芯片更适合规则不断更新的NIDS。随着FPGA规模的飞速发展,基于FPGANIDS加速方案也越来越受到重视。

 

目前国外有较多研究机构都在进行基于FPGA的高速NIDS系统实现方案的研究。在这个方向上取得一定成果,具有代表性的主要有美国的Los Alamos国家实验室、佐治亚理工大学的Clark的小组以及华盛顿大学Lockwood领导的小组。下面分别分析每一个小组的技术。

1)        美国Los Alamos国家实验室的方案

Los Alamos实验室第一次提出了采用可编程器件和处理器结合的方法[15],其结构如图2-10所示。

 

 

 

 

 

 

 

 

 

 

 

 


2-10 Los Alamos国家实验室的方案[15]

主机把网络数据通过PCI接口送至FPGA,数据流先经过X1单元,完成数据包格式判断,标志位判断以及数包头的匹配,同时数据载荷送至X2进行数据包内容匹配,数据包头和数据包载荷分别得到匹配结果,这个匹配结果再通过PCI接口返回至主机,由主机处理器对匹配结果进行分析处理,SRAM用于更新规则表,其模式匹配模块采用的是基于FPGA片内CAM的方法。这种实现方式是一种协处理卡的方案,将受限于PCI接口的速率。而主机CPU同时还要完成TCP/IP协议解析等工作,在高速环境下的TCP/IP协议也将占用大量的处理器资源,因此这种方案不能将主机CPU从繁重的处理工作中解脱出来。

2)        美国佐治亚理工大学研究小组的方案

佐治亚理工大学Clark小组采用NPFPGA结合的方案[16],他们的结构如图2-11所示。

2-11 佐治亚理工大学方案[16]

这个方案利用NP强大的分布式处理能力,完成原来由主机处理器完成的协议解析等工作,然后把待匹配的数据送至FPGA完成模式匹配,模式匹配采用NFANondeterministic Finite Automata,非确定有限自动机)的方案,匹配结果再返回给NP进行进一步的分析处理,并上报。与上一方案相比,这个小组的方案可以直接处理网卡发送过来的数据流,然后把检测的结果通过PCI总线上报至主机,而不需要主机的参与,减轻了主机的负担,提高了主机CPU的处理效率。

3)        美国华盛顿大学研究小组的方案

前述两种方案中,FPGA只完成了模式匹配部分的工作。其余部分的工作都是交给主机处理器或者专用处理器完成的。而华盛顿大学Lockwood领导的小组的方案是整个系统都在FPGA中实现,这个小组在这一领域的工作是处于领先地位的。图2-12是这个小组提出的基于FPGA的防火墙结构图,其网络数据拆包的工作是由FPGA完成的,经过Protocol Wrappers的数据再送至数据包内容匹配模块进行处理,这里采用的匹配方法是基于正则表达的方法,经匹配得到的结果再送至中心处理模块完成处理。这个方案中的中心处理模块是可扩展的,即可以根据不同的应用需求替换为不同的模块,这种设计体现了SOPC的思想[17]。在此基础上,这个小组设计了基于FPGA的网络入侵检测系统,其结构如图2-13所示。这个新的方案中,模式匹配采用了Bloom Filter的方法,在FPGA内构建哈希函数,实现模式匹配。这个小组的两种方案都实现了基于FPGA的网络数据拆包,真正意义上实现了基于FPGA的网络数据流分析处理[18]。但是由于设计中没有处理器参与的,实现一些复杂规则的检测困难很大。

 

2-12 基于FPGA的防火墙[17]

 

2-13 基于FPGA的入侵检测[18]

 

以上三个小组的方案的结构都和Snort的处理方式类似,分为数据包头匹配和数据内容匹配,但处理的先后顺序上略有不同。在数据包解析这个模块任务的分配上,这三个小组的方案完全不一致,分别采用了主机处理器,专用处理器和FPGA三种不同的方案。同时在模式匹配这一核心模块的结构设计上,这三个小组的方案也各不相同,在第5章中将对模式匹配模块的设计详细论述。

 

2002年以来,国内外的网络安全设备企业纷纷推出各自的高速NIDS产品,中国的千兆IDS是启明星辰公司首家推出并通过权威部门的测试认证的,几种代表性的产品及其性能如表2-1中所示:

2-1 国内外高速NIDS代表性产品

高速NIDS产品

标称最高吞吐速率

硬件结构

绿盟科技冰之眼1600系列

1.6Gbps

GPP

启明星辰天阗2800系列

2Gbps

未知

CISCO IPS4200系列

单口1Gbps

GPP/NP

Source Fire IS5800系列

8Gbps

NP/ASICs

特别需要说明的是,不能简单地通过开发商标称的吞吐速率和入侵规则数目指标来对比高速NIDS的优劣。事实上,很多号称千兆NIDS或者千兆IPS的产品只不过是配备了具备Zero Copy功能的千兆网卡和更高一些的硬件配置,可以接入千兆环境的NIDS具备千兆线速处理能力的NIDS级别相差甚远。在对比商业千兆NIDS的实际性能的时候至少需要考虑以下几个问题:1) 它所支持的入侵和病毒规则库覆盖率(分类过细的入侵规则产生放卫星式的检测特征条数除了增加管理员的负担外并无其他作用);2) 它所支持的最大和最小包尺寸;3) 它在最小包情况下的吞吐速率;4) 入侵规则库的更新速度和难易程度。

2.6.2 基于规则处理的高速NIDS系统研究现状

美国圣路易斯华盛顿大学的Lockwood博士带领的研发团体在20054月的IEEE FCCM会议上提出了一种利用Xilinx公司FPX开发平台堆叠构建的FPGARAM结构的可重配置高速网络规则处理框架[33]。该原型系统理论上在现有Virtex2000E芯片上可以实现2.5Gbps(OC48)的吞吐量,采用SNORT规则库,具备800万并发TCP会话处理能力。目前未见有其他论文宣称更优的基于FPGA的完整高速NIDS系统实现。但是2002年以来,世界各国的研究组针对高速NIDS系统的各种关键技术的研究成果非常丰富,其中基于FPGA平台在关键字模式匹配、TCP协议解析和流重组、SNORT规则头匹配、SNORT规则匹配四个方面比较有特色的成果可以归纳为表2-2所示:

 

2-2 基于FPGA的高速NIDS系统关键技术研究现状归纳

功能

研究组与算法名称

所用器件

逻辑单元消耗

吞吐速率 (Gbps)

TCP流监控

GaTech Stream Assembler[34]

Virtex 1000

876 (10%)

3.2

NorthW U Flow Monitor [18]

Virtex2-8000

-

48.3

WashU TCP Processor [19]

Virtex4 140

22,100 (35%)

10.3

规则头匹配

WashU BV-TCAM [22]

Virtex4 100

4,200 (10%)

10

数据包内容

关键字匹配

Crete Pre-decoded CAMs [30]

Virtex 2-6000

64,268 (95%)

9.7

GaTech Decoder Trees [26]

Virtex 2-8000

54,890 (81%)

7

Tokyo Trie-based Hash [28]

Virtex2-6000

2,365 (7%)

10

USC Partitioning [35]

Virtex2 Pro 100

15,010 (15%)

4.5

WashU Bloom Filters [32]

Virtex 4-100

35,850 (85%)

20.4

入侵规则处理

WashU Rule Processor[33]

Virtex4 100

40,200 (95%)

15.9


 

 

 

1.2         基于FPGANIDS

我们将要实现的NIDS主要包括链路层的MAC核,传输层的轻量级TOE,高速模式匹配模块等,其系统结构如下所示。

 

其工作流程如下:千兆网络中的数据经过高速串行收发器(MGT)GMAC模块处理后得到MAC层的数据,并完成了协议的校验和计算;该数据包通过DMA(由DCR总线控制)方式传送至片外的DDR SDRAM中缓存,TCP/IP处理模块从DDR SDRAM中读取数据包,进行拆分和重组,并获得数据包头和数据包内容信息;然后数据包头和数据包内容送至高速匹配模块处理;匹配结果HIDCID通过处理器局部总线(PLB)或片上外设总线(OPB)送至嵌入FPGA中的PPC405处理器;PPC405根据BRAMBlock RAM)中策略库的信息对HIDCID分析并得到最终需上报的信息。

 

 

1.2.1          设计轻量级TOE

 

TCP/IP协议解析就是根据现有协议的高度规则性,到固定的位置取值,而不是一个个的去比较,然后根据取得的值来实施下一步分析动作,有效的提高了分析效率,同时还避免了单纯模式匹配带来的误报。要提高其性能和准确性,必须做到更深层次的协议分析,如高层协议的数据字段的取值,尽可能的缩减后续模式匹配的范围。

协议解析更重要的作用是可以检测到碎片攻击,在有协议解析模块的入侵检测系统中,各种协议都被解析,如果出现IP碎片设置,数据包将首先被重装,然后详细分析潜在的攻击行为。通过重装数据包,系统可以检测到利用IDS逃避技术的攻击手段。同时当系统提升协议栈来解析每一层时,它用已获得的知识来消除在数据包结构中不可能出现的攻击。比如出现了协议是TCP,那就不用再搜索UDP等其它同一层上的协议形成的攻击。如果数据包应用层是HTTP,那就不用再寻找TelnetSNMP攻击。因此系统处理的任务减少,性能可得到明显改善。

因此TCP/IP协议解析模块对提高入侵检测的准确率和效率都起着极其重要的作用。由2.1节分析可知目前主机对TCP/IP协议解析的能力有限,因此提出了TOE的思想,国内外都展开了相应了研究,如Lockwood的研究小组[9]提到在800万个并发TCP连接下可以达到2.5Gbps的处理能力。

 

1.2.2          设计模式匹配核

 

 

高速匹配模块是由包头匹配和包内容匹配两部分组成。前者用来对数据包头信息匹配,后者对数据包内容进行匹配,分别得到两者的匹配结果HIDCID。它们不仅包括匹配ID,还应包括匹配内容在数据包中偏移,数据包号等一系列相关信息。考虑到FPGA内部是并行处理的结构因此数据包头和数据包内容可同时匹配,而不必与Snort的匹配流程类似,在匹配数据包头完成后再匹配数据包内容。但由于数据包头匹配的速度明显快于数据包内容,若数据包头匹配完成时未发现可疑内容,此时就应该停止该数据包内容的匹配,而转入下一个数据包头和包内容的匹配,加快匹配的效率。因此在本文的方案中考虑这个因素,增加了包头匹配模块到包内容匹配模块的控制信号。

由于数据包头的格式相对固定,所以采用内容可寻址存储器(CAM)的方法即可实现[15]。基于CAM的方法是将规则头内的信息直接存放于CAM中,例如协议判断8bits宽度,源/目的地址各32bits,源/目的端口各16bits,同时还包括规则内的一些标志位。在XilinxFPGA中,可通过Core generator工具定制CAM的宽度和深度以及采用的资源,FPGA中的BlockRAMLUT这两种资源均可被配置为CAM[20]

 

包头规则匹配

规则头匹配在SNORT系统的计算任务中占据重要地位,有研究表明[20],在特定情况下,规则头的匹配计算量可以占到纯软件SNORT计算总量的一半以上。当前SNORT规则集中共有200多条规则头,多数情况下,对一个会话进行规则头匹配只需要检查一次会话五元组:{IP地址,目的IP地址,协议类型,源端口,目的端口},而对于那些涉及其他包头字段的规则则需要对每一个数据包进行检查。这些需要检查的字段主要分为三种类型:确定字串、含通配符字串(比如子网IP)和区段值(比如端口范围)。

形式相对工整的规则头通常表达为包头五元组,最适合用内容可寻址存储器(Content Addressable Memories, CAMs)来进行高速并行查找。尤其是三态内容可寻址存储器(Ternary CAM, TCAM)允许使用无关位(Do not care bit)来表达通配符模式,这使得对包含通配符的字串的匹配大为简化,与确定字串匹配无异。但是TCAM在处理区段模式时显现出空间利用上的低效,最坏情况下,一条包含两个16bits端口范围的五元组被扩展为900TCAM条目。同时,TCAM由于器件自身特点的限制,无法同时上报两个或两个以上的多匹配结果(Multi-Match, MM)

美国加州大学伯克利分校的YuKatz提出利用外部静态随机存储器(Static Random Access Memory, SRAM)进行二次查找获得包头匹配的MM[21]。但是这种方案需要对外部SRAM进行读写操作,不能整合为FPGA片内的一个子系统。

美国圣路易斯华盛顿大学的SongLockwood提出利用混杂位向量和TCAM来压缩规则头的表达形式,并且成功地将222SNORT规则头转换为264个向量前缀逻辑和33TCAM条目[22]

 

字符串匹配

静态串,即确定的字节序列,通常用于检测病毒和蠕虫,是SNORT规则库中绝大部分规则的组成部分。当前的SNORT关键字集中包含2000多条静态串,共计约30000多字节。随着新的病毒和攻击威胁产生,静态串字库还会不断膨胀,这要求用于串匹配的硬件结构必须具备很好的可重配置性。

当前SNORT规则所支持的42个规则选项中有很多是修饰静态串匹配的。这些修饰选项使得特征描述更加准确,但是使得常规静态串匹配变成了广义串匹配,计算更加复杂,是设计相关硬件结构时必须考虑的问题。常见的广义串类型有:

1) 否定串(Negative String):如果在指定位置未发现该字串则发生匹配。

2) 大小写不敏感(No Case):使得content选项中的字串大小写敏感性失效。

3) 指定匹配区间:offsetdepth这对选项分别指定了content中关键字可能出现的绝对位置区间。

4) 位置关联(co-related)distancewithin这对选项指定了两个相邻的content关键字的相对位置要求。

5) 正则表达式(Regular Expression):利用标准的正则表达式语法描述的复杂关键字。一条RE规则可能被拆解为数百条基本的静态串。例如:静态串Complex signature, complex signature, Comsig, comsig中的任何一个都会引起关键字串(C|c)om(plex signature|sig)发生匹配。

 

1.3         NIDS的瓶颈与对策

 

 

1.4         本章小结

此帖出自FPGA/CPLD论坛

最新回复

顶顶顶!  详情 回复 发表于 2012-1-29 10:13
点赞 关注
 

回复
举报

6892

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

顶顶顶!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表