分布式入侵检测机制的研究

入侵检测系统相关理论分析 的文章对入侵检测系统的发展做了分析整理,本章作者将对分布式入侵检测机制进行研究。

作者研究分布式入侵检测机制主要有四个核心技术的支持:算法支持(高效的入侵检测算法)、框架支持(安全、稳定、灵活的分布式MAS框架)、代理响应策略支持(有效的代理检测控制)和负载均衡策略支持(提供系统资源优化保证)。

图1 研究内容框架图

基于MAS的分布式入侵检测体系架构

作为IDS的应用基础,MAS分布式入侵检测架构为IDS提供:任务逻辑执行单元(代理);代理通信协议(包括通信安全机制);代理消息框架;代理行为接口。入侵检测系统通过对MAS提供的基础框架、接口按照业务逻辑功能和代理应用视点进行设计分类,构建IDS组件。

MAS入侵检测系统的六类通用组件

不同的MAS分布式入侵检测系统之间千差万别,采用的检测技术、体系结构模型、组件功能、所能检测的攻击类型往往也不相同。虽然不同组织各自开发的系统对一些组件的表述不同,但大多数组件的功能却是非常类似的,可以将其按照功能的不同,概括为以下六类:采集器、分析器、协调器、管理器、响应器、用户界面。其架构图如图2所示:

图2 通用组件架构

采集器(Collector):负责采集、过滤原始数据资料,产生约定格式的事件(event)传送给分析器。分析器(Analyzer):分析一个或多个采集器传送过来的事件,判断是否存在异常或入侵事件,报告给管理器或者协调器。协调器(Coordinator):负责接收多个分析器传来的告警并判断其内容,报告给不同的分析器。它协助多个分析器共同完成分布式入侵的检测任务,是分布式入侵检测系统特有的元件。管理器(Manager):负责接收和处理分析器或协调器传送来的告警信息。响应器(Responser):响应器负责执行相关的响应措施,比如:可以中断网络会话、禁止相关的用户访问权限等等。用户界面(User Interface):以直观的形式显示告警,并给管理员提出处理建议;同时,用户界面动态监控各个系统组件的工作状态,允许管理员查看、管理和维护。

MAS入侵检测系统的三大新视点

MAS分布式入侵检测系统除了采集、分析数据和响应操作外还需要进行组件协同工作。以此为依据确立了三种新视点:分析视点AV(Analyzer View)、协调视点CV(Cordinator View)和管理视点MV(Manager View),分别说明如下:

分析视点AV:从分析器的工作模式进行考察,可分为两类:集中分析和分布分析。集中分析指所有主机的信息都被传送到单一的分析器进行集中分析和处理;分布分析则指信息的分析和处理分散在网络的各个部分进行。协调视点CV:从协调器的工作模式进行考察,可初步粗分为两类:静态协调和动态协调。静态协调指的是入侵检测系统中分析器或协调器的信息被传送到固定的地点;动态协调则指协调器可以根据收到的告警的内容不同而将消息传送到不同的分析器。管理视点MV:从管理器的工作模式进行考察,可初步粗分为两类:集中管理和分散管理。集中管理指的是管理器可以在较高层次描述分布式入侵特征,并将检测任务分解为一系列子任务,分派给各个元件执行;而没有提供这种任务分派功能的管理器我们就划分为分散管理。 通过以上分析,将目前国内外部分分布式协同入侵检测系统根据各自的体系结构特征,综合分析器、协调器、管理器三者的工作模式来进行分类,

图3 分布式入侵检测系统结构分类表

总共可分为5类:

集中管理、集中分析型:DIDSt、NsTA集中管理、分布分析、静态协调型:IDA集中管理、分布分析、动态协调型:MAIDS 、CARDS NetSTAT。分散管理、分布分析、静态协调型:GdDS 、AAFID、MADAM 。分散管理、分布分析、动态协调型:CSM、EMILALD。

基于业务功能的MAS独立组件结构

从上述通用组件和视点的讨论中可以看出,传统的MAS入侵检测系统的架构设计都要求IDS各个组件和视点模块持续地采集、分析网络数据,以便在网络入侵发生时及时响应。尽管这样在一定程度上保证了系统响应的实时性(但这一特性被各层组件进行集中式决策分析带来的性能瓶颈所掩盖),但付出的代价就是IDS会持续占用系统资源,并且处于全负荷状态工作。这就造成节点资源浪费,同时高负荷节点本身就是系统异常的温床。 为应对上述问题,作者研究提出了基于业务功能的MAS独立组件结构

图4 MAS独立组件结构

每一个组件单元都包含自己的数据收集接口、决策分析模块和响应模块。组件在没有任务时处于休眠状态,当通信接口接收到相关事件后,组件从休眠状态唤醒,通过数据收集接口从网络数据缓冲池中采集数据。在分析决策逻辑模块中结合通信接口输入进行决策分析,最后将分析结果从通信接口中发出。组件的决策、分析依据就是数据接口从网络数据缓冲池中提取的相关数据和通信接口得到的其他组件决策分析结果。这样的结构说明每个MAS组件的输入和输出是独立的,消除各层集中式决策分析带来的瓶颈。同时,由于每个组件都能够独立的获取所需数据,这就意味着同一时刻,只需要启动和当前网络状态相关的组件,其他组件在相关网络事件发生时启动。

通过上述分析可知,采用MAS独立组件结构可以使IDS在同一时刻只有部分组件工作,这就大大节省节点系统资源。并且,组件的独立性使得组件之间消除层级关系,克服集中式分析决策时的系统瓶颈,使IDS实现真正意义上的分布式工作模式。

改进的CUSUM流量检测算法

作为入侵检测系统模型中的核心算法,流量检测算法是独立MAS组件的逻辑决策核心算法也是作者的重要研究内容。对应用在工程制造中突变点检测算法—CUSUM算法进行研究,通过算法的抽象、推演等方法设计出能够用于检测网络流量异常的非参数CUSUM算法。针对CUSUM算法在应用到网络流量检测场景当中时有着结束点的判断灵敏度较低的不足,研究用于克服此项缺点的阈值回归算法。

非参数CUSUM算法

CUSUM算法是工业生产过程中常用的异常检测算法,它基于这样一个事实:如果检测到统计过程的均值发生变化,则随机的概率分布也会发生变化。

设X1,X2...Xt为独立的N (0, 1)同分布,Xt+1,Xt+2,Xt+3,为独立的N (δ, 1)同分布(其中t + 1是未知变点) ,对于给定检测序列X1,X2...Xn,令v = t + 1 ( v < n) ,假设t = ∞的对数似然比统计量为

如果事先选择一个阈值h > 0,Qn-1<=h( i = 1, 2,…, n – 1) ,说明前n – 1个检测值的均值没有发生偏移,网络流量为正常状态。若某个Qn>h,说明网络流量发生异常。

传统的CUSUM算法需要一个随机序列的参数模型,这样概率密度函数才能够被应用于监测该随机序列。但是互联网是一个动态、复杂的实体,对互联网流量模型进行理论建模是一个复杂的开放性问题,这个问题已经超出本文的讨论范围。由于非参数方法并不需要模型特例,这些方法更加适合用来分析互联网。在文中提出的入侵检测系统中使用非参数CUSUM算法。该方法基于在论文中提出的CUSUM算法。

设Xn为待监测统计量数值,非参数CUSUM 算法的主要思想是:累积明显比正常运行情况下平均水平高的Xn的值。这一算法的优点之一是能以连续方式监控输入随机变量,从而达到实时检测的目的。通常在受到分布式拒绝服务攻击时可以得到如图5所示( 表示新出现IP地址占数据包总量的百分比,横轴为时间参量,在m时刻开始攻击后Xn的统计均值由α跃升到α+h):

图5 在一个攻击中的新出现IP地址占数据包总量的百分比变化

下面把问题一般化,设Δn为第n个抽样间隔内的网络流量统计值,随机序列{Δn ,n=0,1,…}的均值依赖于网络的规模,并随抽样时刻变化。为降低相关性,使检测通用于各种情况,给出Δn的归一化定义,即Δn=Δn/J 。

J为检测时间窗内网络流量统计值的均值,可进行实时估计周期更新,J的递归估计定义为:

J (n)=λ J (n−1)+(1−λ)StatisticValue(n)

(0<λ <1, StatisticValue (n)为当前间隔内的统计量数值) 。

随机序列{Δn}不再与网络规模和抽样时刻有关,而是一个平稳的随机过程。网络长时间正常运行时,{Δn}的均值接近于0,而一旦发生影响流量的攻击行为,{Δn}的均值会发生突变。

非参数CUSUM 算法的一个假设条件是随机序列的均值在正常情况下为负,当有变化发生时变为正。在没有丢失任何统计特性的情况下{Δn}就被转换成另一个均值为负的随机序列{Zn}。即: E(Δn)=α, β 是α 的上界,Zn=Δn – β,β >α ,a = α – β。Zn的图形特征如图所示:

图6 Zn的图形特征

如上图所示,在正常情况下 的均值为负。当攻击发生时, 会突然变得很大并且为正,即h+a>0,其中h可以看作在攻击过程中 增长的一个较低的阶跃。因此,累积具有正值(h+a>0)的 来显示攻击发生与否。将h定义为攻击过程中均值增长的最小值,不是攻击检测的门限。攻击检测的门限N 用作Zn累积的正值Yn。非参数CUSUM算法Yn的递归版本如下,即:

其中(Yn-1+Zn)+表示当M>0 时等于M,否则等于0。Yn越大表明攻击越强。入侵行为判定式为:

Yn的图形特征如图:

图6 Yn的图形特征如图

上图中N是攻击检测的门限,Dn(Yn)代表在时刻n的判决:如果测试统计Yn大于N,则该值为“1”,表示有攻击发生,否则该值为“0”,表示是正常运作(随机序列{Zn}没有统计特性的变化)。

阈值回归算法

非参数CUSUM算法在实际应用中能够有效地检测出监测统计量的突变时间点,但是当网络入侵停止时,整体监测统计量的算术均值不能迅速及时地到门限值以下。这就造成使用非参数CUSUM算法进行入侵检测难以及时判断网络入侵行为的停止时刻,由此会造成对于网络入侵行为的误报。

例如:产生如图7所示的网络入侵流量特征(附加型攻击)时,系统的 值与网络流量之间的关系如图8所示。在这一情况下由于攻击结束的时候 值的回归速度较慢, 这样导致200秒处发生第二次攻击时 值仍然大于阈值N,这导致系统会将两次攻击错误地识别成一次。

图7 附加攻击流量特征

图8 yn值与网络流量之间的关系

为解决这一问题,作者提出阈值回归算法(Deviations Regression Algorithm,DRA)。算法的思想类似于TCP协议在拥塞控制问题上的方法。即为Yn值设置一个时间窗(YnWindow)在该时间窗内计算Yn值函数随时间变化的斜率。如果在时间窗内,Q个连续时间间隔 ΔTk中Yn值的变化斜率连续为负值且在特定斜率阈值(γ<0)区间内则将Yn值减半,即有如下公式:

DOS或DDOS攻击这一类通过增加网络带宽负载迫使攻击目标服务器不能正常为合法用户提供服务的网络入侵行为,在攻击发生时的相应统计量特征具有一定程度的相似性。以SYNflood攻击为例,攻击发生时SYN半连接数据包数量为正常值的数十倍,其他增加网络带宽负载的拒绝服务攻击在攻击时会向目标服务器发送高过带宽数倍乃至数十倍的非法数据信息。当这些攻击行为停止时,相应的流量特征数值会骤减,恢复至攻击发生前的平均正常水平。这一情况在非参数CUSUM算法所监测的统计量数值的计算结果中体现为Zn恢复到特定的负值范围内。由Yn的递归公式,Zn值的恢复会造成监测数值以特定范围的速率下降,因此只要监测到这一个下降趋势就可以初步断定网络攻击的结束。根据初步判定结果,将Yn数值试探性减半,进行进一步判定。如果判定失误,攻击仍在继续Yn值会迅速恢复到攻击报警时的Yn值水平;如果判定正确Yn值会进一步减半直至恢复至零值状态。上述公式正是利用这一原理来加速Yn值与网络流量之间的关系如图9所示:

图9 加速回归的yn值与网络流量之间的关系

由上图可见应用阈值回归算法对非参数CUSUM算法进行改进之后,系统可以更加精确地判定攻击结束时间,从而大大减少误报率、提升入侵检测系统性能。

基于事件驱动模型的代理响应策略

作者提出将事件驱动模型思想应用于入侵检测系统,采用触发器代理驱动检测。该机制是独立MAS组件结构中驱动IDS响应网络异常的功能入口,在正常网络状态下,IDS系统只有触发器代理组件进行持续网络监控,当网络异常发生时,触发器代理通过通信接口在IDS中发送触发异常事件,使IDS其他休眠组件进行连锁响应,最终得出网络异常状态结论。

当触发器代理事件启动,系统按照独立功能组织结构提取相应类型代理信息。这样入侵检测系统需要维护的入侵特征库就简化为由有限字符序列组成的异常编码集合,有利于建立高速访问索引以及动态维护。填加新的异常特征只需维护独立代理功能组织树并在特征库添加新异常编码即可。

在AAFID、IDA、CoIDS等IDS的Agent管理机制中都是从入侵检测步骤的角度出发将代理职能划分为数据采集和分析决策两大类。代理之间的级别不平等使得在这些分布式系统当中需要进行不通规模的数据汇总,从而失去了完全分布式特性。这造成代理采集的数据要交由一个更高级别的分析决策代理进行处理,而决策代理恰恰又称为了系统的性能瓶颈。本论文提出面向入侵检测应用的Agent功能划分方法,将Agent按照不通入侵检测应用进行功能划分。本系统中为每类代理设置唯一编号用大写字母表示。如图10所示,触发器代理为R,源IP监测代理为S,SYN/FIN检测代理为F。

图10 事件驱动代理工作逻辑

当代理判断异常条件时则累计响应的编号表,直到叶子节点。便得到一个异常编号表,如RS、RF。每个编号表便代表一种异常。如RS表示伪造源IP数据包通过分布式肉鸡发动的拒绝服务攻击、RF表示SYNFlooding攻击。

实现事件模型之后就需要对代理功能进行划分,不同功能的代理响应不同的网络异常事件,本系统将Agent按照不通入侵检测应用进行功能划分。如图11所示,每类代理负责一个独立的入侵检测应用,其中包含有限数量的相同职能Agent。

图11 Agent划分示例

使用这种方法对代理功能进行划分可以做到各类代理之间功能独立,代理之间不需要持续不断地相互传输数据,大大减少了IDS对网络环境中的带宽浪费。代理之间的独立性使得IDS没有了需要进行数据汇集分析的性能瓶颈问题。

入侵检测系统的负载均衡策略

IDS需要负载均衡机制保证系统各个节点的资源合理分配。通用的基础负载平衡算法描述如下:

轮询法:新任务轮询各个节点。散列法:将节点按IP(等)散列映射管理,IP地址、HASH。最少连接法:通过节点连接数目判断负载情况。最快响应法:网络响应时间。加权法:CPU、内存利用率、I/O等因素,配合其他方法使用。

通过对各个算法进行比较分析,本论文采用如下负载平衡策略:

启动策略包括两个方法:轻载申请策略和重载发送策略。本系统采用重载发送策略,由发送者启动。通过负载阈值和重载持续时间来决策是否启动负载平衡调整。转移策略采用静态门限控制,将负载程度划分为轻载、中等负载和重载。启动策略启动之后计算社区内平均负载情况和节点间负载插值进行决策。选择策略主要用来决定迁移哪些任务代理,这里以代理工作时间进行评估,因为最新生成的代理需要维护的状态参数代价最小,所以这一类代理具有较高的迁移权值。定位策略负责选择任务迁移方向,主要由负载平衡代理维护社区负载向量计算负载相对差来完成决策。信息交换策略负责完成负载信息统计交换任务,这里采用重载代理发动平衡申请后启动更新的策略。

负载均衡机制的算法流程如图12所示:

图12 负载均衡机制算法流程图

论文中采用的负载调度算法步骤如下:

获得本地节点CPU利用率X、本地CPU队列的长度Y和本地I/O利用率Z确定调度的阈值,如属于轻负载则在本地执行任务,转步骤5执行作业如在作业执行过程中符合启动策略则进行迁移算法修正,根据实际作业执行时间调整

通过前面的计算方法的负载W(i),总负载 :

由此可计算出平均负载 :

得出负载上、下界:

在负载评估策略方面,设IP、ICMP、TCP、UDP处理时间为T1、T2、T3、T4,取其中最小值Tmin做归一化处理T 1 /Tmin、T2 /Tmin、T3/Tmin、T4 /Tmin得到:W1、W2、W3、W4。设ΔT为负载计算的一个采样周期,在ΔT内网络流量中IP、ICMP、TCP、UDP包的数量分别为N1、N2、N3、N4,有负载:

负载最大值为

负载本身也分为两类,即:运行环境负载和Agent任务负载。运行环境负载主要考虑加权法中顾及的因素,Agent任务负载主要是由代理处理的数据包大小和数据类型决定的。

研究完分布式入侵检测机制,下节我们将描述入侵检测原型系统的设计与实现。