《并行与分布入侵检测技术研究》由会员分享,可在线阅读,更多相关《并行与分布入侵检测技术研究(86页珍藏版)》请在金锄头文库上搜索。
1、 并 行 与 分 布 入 侵 检 测 技 术 研 究 国 防 科 学 技 术 大 学 研 究 生 院 分类号 TP393.08 学号 09060068 U D C 密级 公 开 工学硕士学位论文 并行与分布入侵检测技术并行与分布入侵检测技术研究研究 硕士生姓名 王晗 学 科 专 业 计算机科学与技术 研 究 方 向 计算机应用技术 指 导 教 师 殷建平 教授 国防科学技术大学研究生院国防科学技术大学研究生院 二一一二一一年年十一十一月月 Research on Parallel and Distributed Intrusion Detection Technologies Candidat
2、e:Wang Han Advisor:Prof. Yin Jianping A thesis Submitted in partial fulfillment of the requirements for the degree of Master of Engineering in Computer Science and Technology Graduate School of National University of Defense Technology Changsha,Hunan,P.R.China November,2011 国防科学技术大学研究生院工学硕士学位论文 第 I
3、页 目目 录录 摘 要 . i ABSTRACT iii 第一章 绪论 1 1.1 研究背景 1 1.1.1 入侵检测系统与网络安全 1 1.1.2 不断增长的网络带宽需要高速入侵检测 1 1.1.3 传统手段的失效与并行检测的兴起 2 1.1.4 分布式检测的兴起 2 1.2 研究现状 . 2 1.2.1 并行入侵检测技术的研究现状 3 1.2.2 分布入侵检测技术的研究现状 4 1.2.3 研究现状的总结 5 1.3 研究内容 . 5 1.3.1 并行检测系统体系结构的研究 6 1.3.2 流量划分算法的分析 6 1.3.3 基于实时处理速度的流量划分算法 6 1.3.4 高效的分布检测机
4、制的研究 6 1.3.5 并行与分布检测系统性能评估平台的研究 7 1.4 研究成果 . 7 1.5 论文结构 . 8 第二章 统一的并行检测体系结构与流量划分算法分析 . 10 2.1 引言 . 10 2.2 统一的并行检测体系结构 . 11 2.2.1 分发模块 12 2.2.2 映射 第二,在保持攻击证据的前提下,映射 #else . #endif if (pcap_ret 检测-输出。关键代码如下: int Preprocess(Packet * p) boSetAllBits(p-preprocessor_bits); /打开所有的预处理器 while (idx != NULL) i
5、f (IsPreprocBitSet(p, idx-preproc_bit) idx-func(p, idx-context); idx = idx-next; /遍历所有预处理器插件,对报文进行处理 if (do_detect) /进入检测引擎 retval = SnortEventqLog(p); /输出 图 3.4 报文在 Snort 系统中的踪迹图 国防科学技术大学研究生院工学硕士学位论文 第 30 页 通过对源代码的分析可以发现,当Snort工作在IDS模式时,一个报文在系统 中的主要踪迹如图 3.4 所示:报文首先被 Libpcap 的库函数 pcap_loop 捕获; pcap_
6、loop交由回调函数PcapProcessPacket进行处理;在PcapProcessPacket中,首 先完成一些累积计数等基本处理,然后调用 ProcessPacket 函数处理该报文; ProcessPacket 首先将报文解码,放在一个通用的数据结构 p 中,然后根据系统的 工作模式,调用函数PreProcess处理解码后的报文;在PreProcess函数中,依次完 成对报文的预处理器处理,检测引擎检测以及报警输出。 每次按照上述流程处理完一个报文,回调函数 PcapProcessPacket 返回,则 pcap_loop 开始捕获下一个报文。因此,对于每一个被捕获的报文,分别记录下
7、处 理它的回调函数开始和结束的时间 1 t, 2 t,则 Snort 处理该报文的时间为 12 tt 。 然后根据报文的大小,就可以得到Snort对该报文的瞬时处理速度,如下式所示: 12 Instant tt PacketSize PS (3.1) 其中,PacketSize表示报文的大小,PSInstant表示Snort对该报文的瞬时处理 速度。 一个自然的想法是,计算Snort对每个报文的瞬时处理速度,并把每个报文的 瞬时处理速度反馈给 Splitter,作为探测器的实时处理速度表征其实时负载。然而 这样做会有两方面的问题:一是探测器的计算、通信开销都会很大;二是系统的 实时负载处于不断
8、变化中,流量划分算法也要随之不停地改变对流量的划分。两 者都将极大地降低并行检测系统的处理能力。 本文的解决思路是采用周期取样的方法,用Snort对一个报文的瞬时处理速度 评估一个周期内的实时处理速度。设定一个取样周期T,探测器在每个周期内随 机取样一个报文,根据式(3.1)计算对该报文的瞬时处理速度。探测器i在每个周 期内对取样报文的瞬时处理速度称为样本处理速度,用 i SampledPS表示; i L表示 探测器i的实时处理速度。当一个周期的样本处理速度 i SampledPS到达时,根据 下式更新探测器i在这个周期的实时处理速度 i L: iii SampledPSLL, 1, 0, i
9、=1,2,N (3.2) 注意到, i L的新值是由以前的 i L值与 i SampledPS新值加权组合得到的加权平 均值。这个加权平均对新样本处理速度赋予的权值要大于对老样本赋予的权值, 这是很自然的, 因为越新的样本越能更好地反映出 Snort 当前对报文的处理速度。 样本值既要反应 NIDS 当前处理速度的最新情况,又不致引起探测器实时负载 (进 而引起流量划分算法)的激烈震荡。从统计学的观点讲,这种平均被称为指数加指数加 权移动平均权移动平均(exponential weighted moving average, EWMA)。在 EWMA 中的“指 国防科学技术大学研究生院工学硕士
10、学位论文 第 31 页 数”一词是指一个给定的 i SampledPS的权值在更新过程中呈指数型衰减。 3.2.3 算法描述 RTPSF算法动态维护两个列表,探测器实时负载列表L和转发概率列表FP。 L 记录每个探测器的实时负载,也即根据(3.2)式得到的实时处理速度。FP 记录 对Splitter捕获的报文分别转发给不同探测器的转发概率。RTPSF算法主要有三个 工作程式:样本处理速度的反馈;列表L和FP的更新;报文的划分。其中,样本 处理速度的反馈在探测器中实现;列表 L 和 FP 的更新、报文的划分在 Splitter 中 实现。三个工作程式共同构成完整的流量划分算法 RTPSF。 3.
11、2.3.1 样本处理速度的反馈样本处理速度的反馈 大多数网络入侵检测系统(NIDS)使用 Libpcap 捕获报文。NIDS 使用回调函 数处理完一个被捕获报文后,马上循环捕获下一个报文进行处理。对于每个被捕 获的报文,可以分别得到处理它的回调函数开始和结束时的系统时间 1 t, 2 t,以及 该报文的大小PacketSize。那么,根据(3.1)式就可以得到 NIDS 对该报文的瞬时 处理速度。 在 RTPSF 算法中, 探测器的实时负载用它的实时处理速度表示。 根据上一节, 探测器的实时处理速度根据每个周期的样本处理速度来估算。所谓样本处理速度 就是探测器对被随机取样的报文的瞬时处理速度,
12、每个周期产生一个样本处理速 度。 i SampledPS表示探测器i的样本处理速度,它的值在每个周期内是不同的。 每个探测器周期地将它的样本处理速度反馈给 Splitter,如图 3.2 所示。在图 3.2 中, i SampledPS),.,2 , 1(Ni 表示探测器i的样本处理速度,指向为左的箭头 表示样本处理速度是由探测器反馈给 Splitter。定义采样周期为 T, 样本处理速度 反馈程式的流程表示如下: for (; ; t=t+T) 获得样本报文的大小及其处理时间; 计算样本处理速度; 调用反馈函数,将样本处理速度发送给 Splitter; 3.2.3.2 列表列表 L 和和 F
13、P 的更新的更新 RTPSF 根据每个探测器周期反馈的样本处理速度,估算探测器的实时负载, 进而根据估算得到的探测器实时负载,计算对于每个探测器的报文转发概率,完 成探测器实时负载列表 L 和转发概率列表 FP 的更新。 国防科学技术大学研究生院工学硕士学位论文 第 32 页 在每个周期内,Splitter 每接收到探测器i反馈的样本处理速度 i SampledPS, RTPSF 算法立刻估算探测器i的实时负载,并以此更新列表 L 中记录探测器i实时 负载信息的相应元素值。实时负载是根据(3.2)式得到的指数加权移动平均值。 至于加权参数,要求。这样既可以反映探测器当前最新的处理速度,又不 会
14、引起实时负载激烈震荡,进而导致流量划分剧烈变化。 当探测器实时负载列表 L 更新完毕后,RTPSF 算法立刻根据本周期 L 中记录 的探测器实时负载,更新转发概率列表 FP。 对于 Splitter 从网络链路接收的每个报文,用 i FP),.,2 , 1(Ni 表示 RTPSF 将 其划分给探测器i进行处理的概率。RTPSF 算法根据每个探测器的实时负载,按 比例划分网络流量。探测器i的报文转发概率 i FP根据(3.3)式得到。用 i FP的新 值更新转发概率列表 FP 中的对应元素值。 N j j i i L L FP 1 ), . . . ,2 , 1(Ni (3.3) 在RTPSF算
15、法中,列表L中的元素全部初始化为0,列表FP中的元素全部初 始化为 25%。列表更新程式的流程表示如下: for (; ; ) while (在一个周期中,L 的更新尚未完成) if (获得探测器i的样本处理速度) 根据(3.2)式计算探测器i的实时负载,并将其记录在 L 中; if (在一次更新中,L 的更新已完成) 根据(3.3)式更新转发概率列表 FP; 3.2.3.3 捕获报文的转发捕获报文的转发 对于Splitter从网络链路中截获的每一个报文,RTPSF算法根据转发概率列表 FP 中记录的面向各个探测器的转发概率,随机将其转发到某个探测器上。报文转 发程式的流程如下: for (;
16、 ; ) if (一个报文被捕获) 国防科学技术大学研究生院工学硕士学位论文 第 33 页 产生一个(0,1)之间的随机数k; for(i=1;i150Mbps,表明网络流量的规模在系统的 处理能力之内。 根据轮转算法,每个探测器将接收 50Mbps 的网络流量,超出了 Sensor1 的处理能力。在 Sensor1 中将丢弃大量报文。而使用 RTPSF 算法,则在探 测器实时负载列表 L 中0L =30, 1 L=60,2L=85。根据转发概率列表 FP,划 分给探测器 Sensor1,Sensor2,Sensor3 的期望网络流量分别为 25.7Mbps, 51.4Mbps,72.9Mbps,均未超过探测器当前的处理能力。因此,发生丢包的可能 性很小。 分析证明,RTPSF 算法在负