DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1509|回复: 0
打印 上一主题 下一主题

[待整理] 基于SNORT规则集的高速网络入侵检测系统,软硬件结合

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-26 17:33:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
项目背景及可行性分析
          项目名称:基于SNORT规则集的高速网络入侵检测系统
          应用背景
          误用入侵检测系统作为当前主流的网络入侵检测系统,有判断准确性高、误报率低等特点,此类系统是建立在对过去各种已知网络入侵方法和系统缺陷知识的积累之上,根据对这些已知模式的检测来达到保障安全的目的。因此,模式库和模式匹配是误用入侵检测系统的核心。随着网络速度的迅速提高,误用入侵检测系统逐渐暴露其在性能上的致命缺陷:检测速率低、资源消耗大。尤其当入侵模式库不断增大时,此类软件系统更是难有较佳表现。因此,误用入侵检测系统在某些网络负载高的环境下不得不放弃对一些网络数据包的检测,这种策略严重影响了误用入侵检测系统在功能上的完整性。
           
          误用入侵检测系统性能的主要瓶颈在于模式匹配引擎的效率上。模式匹配引擎根据入侵规则库中的规则模式对来自网络的数据包进行字符串模式匹配。在许多误用入侵检测系统中(如Snort入侵检测系统),这些用以描述入侵特征的字符串模式是以正则表达式形式给出的,将其作为判断规则的一部分存放于入侵模式规则库中。文献[1]指出在误用入侵检测系统的模式匹配中,正则表达式匹配占了CPU计算时间的90%以上。因此,本项目主要设计实现一个软硬结合的基于SNORT规则集的高速网络入侵检测系统。
           
          研究现状
          软件模式匹配引擎为达到较高的匹配效率,通常采用一些多模式匹配算法,文献[2]中作者指出,目前绝大多数的正则表达式匹配算法都是由GAC(Generalization of the Aho-Corasick)算法改进而来。文献[3]中给出了GAC算法设计细节。此类软件多模式匹配算法在由NFA(Nondeterministic Finite Automata)构建DFA(Deterministic Finite Automata)的过程中,状态机的状态数成指数级增长,因此增大了对内存等硬件资源的消耗,其结果是制约了此类系统所能匹配的正则表达式的规模,并且在无法增大规模的同时也降低了系统的性能。
           
          在硬件模式匹配引擎的设计上,目前主要采用NFA和DFA两类模式匹配的方法,文献[4]中,作者应用DFA理论提出了一种新的结构,并通过压缩编码的方式来提高密度;文献[5]的作者依据图论算法对多状态转移进行合并,将DFA转化成http://www.eefocus.com/communication/336758/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1\01clip_image002.gif,从而减小了95%的存储器占用。但这些利用DFA理论的方法都不可避免面临着硬件资源有限的难题,由于相对NFA来说,DFA实现中的状态数成指数级增长,这使得目前现有的FPGA硬件很难满足大规模正则表达式匹配的任务。文献[6]首次提出了一种利用NFA机制实现的基于FPGA硬件的正则表达式匹配引擎,该引擎可以每周期匹配一个字符,并采用模块化设计思想给出了几种基本模块的设计方法。本项目中的基于SNORT规则集中的正则表达式规则模式匹配引擎(硬件加速)部分,参考了此篇文章的思想并对其改进,采用模块化设计方法,设计实现一款数据流驱动的高速的硬件匹配引擎,解决了NFA引擎中的数据回溯问题。
           
          主要内容
          本项目针对传统软件入侵检测系统中存在正则表达式模式检测这一系统瓶颈问题,设计实现一个软硬结合的基于SNORT规则集的高速网络入侵检测系统。此系统主要由三部分组成,即基于SNORT规则集中的正则表达式规则模式匹配引擎(硬件入侵检测模式加速器)、底层硬件传输平台及软件(驱动和应用程序)的设计与实现。
           
          关键技术和创新点
          (1)面向正则表达式的多模式匹配硬件引擎的设计;
          (2)基于PCI-E的CPU与FPGA的通信平台的设计;
          (3)基于硬件的网络数据包的抓取;
          (4)软件驱动程序的设计。
         

           
  •                 项目实施方案
          方案基本功能框图及描述
          本项目主要设计完成一个软硬结合的基于SNORT规则集的高速网络入侵检测系统,此系统首先将XUP V5-LX110T开发板上的网卡连接到网络交换机上,由开发板上的网卡从交换机上直接采集网络数据包;其次,由在FPGA上实现的正则表达式匹配硬件引擎读取来自网卡的数据,对其进行模式匹配,完成主要的运算工作;最后,将匹配成功的信息,按一定数据包格式进行封装,通过PCI-E接口将检测结果传输给主机,由主机的应用程序解析,反馈给用户最终检测信息。系统框图如图1所示。
           

        图1 系统框图

         

          1.硬件部分
          硬件部分的设计结构图如图2所示,由两部分组成:
          (1)HW Channel:包含Xilinx PCI-E Endpoint Block Plus和DMA引擎,此部分采用了英特尔中国研究中心提供的开源方案;
           
          (2)加速功能单元(AFU):包含功能单元(正则匹配)、IO接口控制单元和片内RAM(Local Buffer)。
           
       

        图2 开发平台设计结构图

           
          HW Channel集成了Endpoint Block Plus IP核,负责和PCI-E传输层之间进行数据的接收和发送,其设计主要参考Xilinx公司提供的PCI-E参考设计。通过使用HW Channel,FPGA设计可以方便灵活的进行数据的读写,只需按照规定的时序逻辑对HW Channel进行调度控制,便可以完成数据传输的工作。HW Channel包括五个子模块,如图3所示。
           
       

        图3  硬件电路接口单元结构图

         

          其中,控制状态寄存器及控制器(CSR Controller)主要用于对PCI Express数据、DMA传输参数的传递和小数据量的传递,可以通过直接IO调用或者存储器映射I/O方式对其进行读写操作,又分为通用CSRs和系统CSRs;DMA控制器(DMA Controller)主要负责主机和硬件匹配引擎之间数据的相互传递,它读取CSRs从而设定DMA传送所需要的参数,其中还包括一个发送FIFO和一个接收FIFO,用来作为DMA传送数据的缓冲区;中断控制器(INT Controller)负责生成发送DMA中断请求信号;发送报文引擎(TX Engine)和接收报文引擎(RX Engine);Xilinx PCI-E Endpoint Block Plus完成对PCI E端点IP模块的一些基本配置包括。
        正则表达式匹配引擎的设计
          此引擎用于匹配snort入侵模式规则库中的正则表达式规则,通过并行处理多个正则表达式匹配来达到加速模式匹配的目的。此引擎采用模块化设计方法,抽取出此类模式匹配中的基本功能单元模块,通过这些基本功能单元的组合可以支持各类正则表达式描述形式的匹配,引擎结构图如图4所示。
           
          为充分利用硬件设备在并行处理上的优势,实现多模式同时匹配以提高模式匹配的效率,本系统中采用了一种粗粒度的并行设计结构,即在正则表达式规则的层面进行并行处理。此结构的优势在于在NFA理论的基础上,各个正则表达式模式独立处理,从而避免了多模式共享前缀一类处理方法中对独立控制逻辑的引入,并行结构的另一个优势是能够自由地向多模式引擎中添加新的规则,新模式的引入并不影响原有模式的工作。
           
          图4是正则表达式匹配引擎的整体设计示意图,在整体结构上该引擎包括FPGA片内随机存储器(RAM)、地址生成单元、单条规则匹配引擎和对外接口四个组成部分。RAM中的数据即为从网络上的得到的数据分组,这些数据通过地址生成模块生成的地址指针顺序地从RAM中读出,并传输到每个单条规则匹配引擎中;单条规则引擎便对这些数据进行处理;处理后的数据通过接口模块对外输出,从而指导入侵检测系统的事件响应单元进行相应的事件处理。
           
       

        图4 正则表达式匹配引擎整体框图

         

          其中,单条规则匹配引擎的构建过程如图5所示,该过程分为两个部分:首先对Snort入侵规则集中的正则表达式进行分析,然后按照分析所得的元字符(如表1所示)映射出对应的通用处理模块,并根据该元字符的动作设定其通用模块的参数。模式分析的另一部分是针对正则表达式中的元字符生成的通用模块进行连线,这些模块的连线依据其模块的功能而不同,但数据流的驱动方式使得这种连线模式得到了最大程度上的简化。当正则表达式的最后一个元字符生成出来并正确连线后,将其最终输出端连接到对外接口模块,此时即完成了整个单条规则匹配引擎的生成。
           
       

        图5 单条规则匹配引擎的生成

         

        表1 正则表达式的元字符

                               
                                        字符

                       
                               
                                        描述

                       
                               
                                        .

                       
                               
                                        匹配除“\n”之外的任何单个字符

                       
                               
                                        ?

                       
                               
                                        匹配前面的子表达式零次或一次

                       
                               
                                        *

                       
                               
                                        匹配前面的子表达式零次或多次

                       
                               
                                        +

                       
                               
                                        匹配前面的子表达式一次或多次

                       
                               
                                        {n}

                       
                               
                                        n是一个非负整数。匹配确定的n次

                       
                               
                                        {m, n}

                       
                               
                                        最少匹配n次且最多匹配m次

                       
                               
                                        ^

                       
                               
                                        匹配输入字符串的开始位置

                       
                               
                                        $

                       
                               
                                        匹配输入字符串的结束位置

                       
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          另外,单条规则匹配引擎是通过参数化的通用处理模块的组合得以构建的。在正则表达式匹配引擎中的单条规则匹配引擎的结构如图5所示。
           
       

        图6 单条规则匹配引擎结构图

        图6中,每一纵列模块为一个单条规则匹配引擎,其中的方框表示为组成该单条规则匹配引擎的参数化通用处理模块。图中横向箭头为数据流向,数据从FPGA的片内RAM送达到单条规则匹配引擎。数据通路采用并行送达的传输方式,数据线上的数据同时送达到该正则表达式匹配引擎的所有参数化通用处理模块的数据入口端。针对送达到入口端的数据,通用处理模块是否对其操作并输出取决于该处理模块是否被它的上一级模块所使能,当该模块的上一级模块能够正确匹配时,它就在模块的输出端输出一个系统周期的匹配信号,用以使能下一级模块。由于在结构上该模式匹配引擎中的各个模式间没有依赖,并且在单模式匹配引擎内部,后级模块的使能是靠前级模块的结果信号进行激励的,因而整个引擎无需独立的控制逻辑单元。这种结构缩减了对硬件资源的占用,并使得该引擎可以在无需修改其它模块连线的基础上进行规则模式的扩充,极大地提高了整个引擎的灵活性和规则更新的适应性。
           
          2. 软件部分
          此系统的软件部分主要包括两部分:软件驱动程序设计和应用程序设计。
           
          (1)软件驱动程序设计
          软件驱动部分主要负责应用程序和通信平台之间的数据传输。PCI-E驱动可以参考已经很成熟的PCI驱动结构,再结合PCI-E总线的特点完成设计。PCI-E驱动应该包括PCI-E终端的初始化模块、建立通道模块,关闭通道模块,中断模块、地址映射模块以及IO控制模块等。其中IO控制模块主要负责主机和FPGA开发板之间的DMA传输,进行一次DMA传输所需要的参数DMA传输的长度、传输数据的目的地址/源地址,传输方向等。
           
          (2)应用程序设计
          在匹配引擎发现网络入侵数据包后,通过PCI-E向主机发送当前的网络包及匹配的规则集相关信息,并唤醒主机的响应程序。主机程序被唤醒后,一方面生成相应的日志信息,另一方面通过图形界面提示管理人员发现入侵。主机运行Linux操作系统,响应程序用QT进行开发。
           
          3.2 需要的开发平台
                               
                                        硬件平台

                       
                               
                                        软件平台

                       
                               
                                        PC机

                       
                               
                                        Linux

                       
                               
                                        XUPV5-LX110T开发板

                       
                               
                                        QT

                       
                               
                                        交换机

                       
                               
                                        SNORT规则集

                       
                               
                                         

                       
                               
                                        ISE

                       
                               
                                         

                       
                               
                                        ModelSim

                       
                               
                                         

                       
                               
                                        ChipScope Pro

                       
<div style="clear:both;">
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-29 13:30 , 耗时 0.091783 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表