CMDIDS 是一个基于 CORBA 的应用,那么系统设计的第一步就应该将系统
中用到的 CORBA 对象提炼出来。CORBA 对象与我们平常所说的(本地)对象一样,
也包含了对象属性和对象操作。但区别在于CORBA 对象必须用 IDL 语言定义。IDL
定义了应用程序构件之间可互操作的接口。有了这个接口才使对象之间的远程调用
成为可能。而 ORB 又保证了对象调用对用户的透明性。换句话说,CORBA 对象提供
远程调用的接口,而本地对象则不可以。
3.1 CMDIS 对象模型
CMDIDS 在物理上由管理点、检测点和安全响应点3 部分组成,因此管理
点的顶级管理者需要和检测点的域管理者以及安全响应点的安全部件管理者通信。
所以首先要将这 3 个管理者抽象为 CORBA 对象。然而在 CMDIS 中存在多个检测点和
响应点,如果多个域管理者和安全部件管理者同时向顶级管理者返回数据,那么就
会使顶级管理者成为系统瓶颈,易造成单点故障。因此,我们在管理点设置一些和
检测点与响应点相对应的通信对象,即检测点管理者和安全响应点管理者,由它们
负责和检测点进行数据交换、解析检测点返回的数据、执行安全响应任务。这样顶
级管理点的任务就简化为通过检测点管理者向相应的检测点和安全响应点发布命
令,进行任务管理。从而将顶级管理点原有的任务管理和数据交互的功能分散在两
类对象中。
顶级管理点要能够对检测点和响应点进行管理,它首先必须获得检测点和
响应点的对象引用。在 CMDIDS 中是通过注册来实现的。检测点或响应点启动后主
动向管理点报告,管理点接到检测点或响应点的注册请求后,为它生成一个检测点
管理者或和响应点管理者,并记录它们的对应关系。
3.2 CMDIDS 系统的实现
3.2.1 误用入侵检测点
CMDIDS 利用专家系统进行误用入侵的检测。在系统实现时,
先将有关入 侵的特征转化为 IF-THEN 蕴含规则,其中 IF 部分是对入侵特征的描述,
即判断攻
击是否出现的必然条件,THEN 部分是系统的防范措施。推理机根据特征库中的规
则,对待判别数据进行模式匹配,只有当规则左边的条件都满足时,规则右边的动
作才会执行。知识库中的规则按照与上下文的关系可以分为两类。第一类规则具有
上下文无关性,也就是说入侵分析无需知道其它数据包的信息,仅根据当前数据包
中提供的信息就能分辨出是否有入侵出现。另一类则具有上下文相关性,当从一个
数据包中无法判断出是否存在攻击时,需要综合与之相关的其它数据包的信息。也
就是说对当前安全事件的分析要与过去所了解的相关历史信息联系起来,使结果更
加准确可信。负责第一类规则匹配的推理机一直处于工作状态,每当捕获到一个数
据包时,它都要使用上下文无关规则进行匹配分析,匹配成功就报警,否则就先将
数据存储在特定的数据结构中,作为第二个推理机的输入;负责第二类规则匹配的
推理机处于睡眠状态,间隔一段时间被唤醒一次。唤醒后,使用上下文相关规则对
存储的数据进行匹配分析。匹配成功则报警,否则将数据传递到管理点进行下一步
分析。攻击模式库作为系统的插件,能进行动态配置和更新,因此系统灵活,扩展
性好。
这种方法的优点是对已知特征的攻击检测准确率和效率高、实时性好。缺
点是防范入侵的有效性取决于专家系统知识库的完备性。为了能最大限度的保证系
统的安全性,安全管理员需经常了解误用入侵的最新动态,提取新的入侵特征,并
用规则表示之,最后加入知识库
[6]
。
3.2.2 异常入侵检测点
为了提高 CMDIDS 对未知攻击的适应,我们采用数据挖掘技术
[7]
,如图 2
所示。先将二进制表示的原始审计数据用 ASCII 码表示,原始数据可以是网络数据
包、操作系统的系统调用过程或用户的操作行为。然后进行数据预处理工作,例如
将原始数据归纳为 TCP 链接、Telnet 会话过程、用户执行命令集和用户使用系统
时的等。将整理好的数据插入训练数据集后,作为某种数据挖掘算法的输入,就可
从这个训练数据集中得到提取到的模式或特征。然后同样执行数据收集和预处理过
程,得到评估数据集,用来评估新得到的模式或特征的准确率。若评估结果令人满
意,则可将当前的模式或特征加入特征库,若不满意,则重新选取数据、挖掘算
法,或重新设置算法中的参数。最后,就可用模式或特征库中已有的知识来处理的
预言数据,得到预言结果。CMDIDS 系统使用分类算法和聚类算法可以发现未知的
攻击形式,使用关联规则可以发现越权用户和假冒用户,同时还能在未知攻击的特
征趋于稳定后,自动将攻击特征转化为规则,下发到检测点中,从而实现自动维护
专家系统中的规则库。