数据分析是入侵检测系统的核心。各种分析方法各有利弊,但基于规则的检测方法因为事先将各种入侵方式表示为规则存放于规则库中,因此在规则库比较完备的基础上,可以有很好的检测效率,所以我们在该系统的实现中主要考虑了基于规则的检测方法。
基于规则的检测方法是误用检测的一种。规则一般都是文本的、高层协议的过滤规则,如“目标地址为xxx.xxx.xxx.xxx的http协议包”。规则所能描述的入侵行为的范围和准确程度影响着探测引擎的效率和准确度。每一种基于规则的入侵检测方法都需要一个确定的入侵模式库,即规则库,其中存放着描述入侵方法和行为的规则。规则通常是在探测引擎初始化时被读入内存,形成一个链表或决策树。入侵检测系统需要从以往的攻击入侵活动中,归纳识别出对应的入侵模式,并将这些入侵模式存放于规则库中,然后将系统现有的活动与规则库中的规则进行模式匹配,从而决定是否有入侵行为发生。
规则库的匹配流程如下:
在我们的系统中,采用了与SNORT兼容的入侵行为描述方法。SNORT是一个开放源代码的轻量级的基于网络的入侵检测系统,这种描述方法简单、易于实现,能够描述绝大多数的入侵行为。由于其简单,因此检测速度比较快。
Snort
在真正执行检测之前会对规则集进行初始化,它会把规则按头部信息(主要是动作、源目标
IP
、源目标端口信息)及选项信息初始化成链表头和链表选项。在链表头中包含的是多个规则中的共有属性,而不同的检测属性选项则包含在不同的链表选项中。
Snort
作者提供的图示如下:
Rule Chain logical structure
------------------------------------------------
------------------------------------------------