本文是一篇软件工程论文,软件是由计算机程序和程序设计的概念发展演化而来的,是在程序和程序设计发展到一定规模并且逐步商品化的过程中形成的。软件开发经历了程序设计阶段、软件设计阶段和软件工程阶段的演变过程。(以上内容来自百度百科)今天为大家推荐一篇软件工程论文,供大家参考。
1 绪论
1.1 研究背景及意义
近年来互联网的安全问题进入了我们视野,因为目前的科技水平较低,互联网的安全性很不稳定,而网民对于网络安全缺乏足够的重视,中国的国家互联网应急中心发布的数据表明,2015 年僵尸或木马的控制端已经近 11 万,危害到我国境内近两千万台主机。移动网络上危险应用多达 148 万;而受到攻击并被篡改的网站竟然有近三万个[1]。出现这样严重后果的根源在于:目前的网络安全存在许多复杂的问题,导致现存的入侵检测系统(Intrusion Detection System ,IDS)单纯用自身得到的数据不能判定事件是否具有危险。权威分析机构IDC的研究报告中显示,在2020 年左右,全世界的数据量将高达35ZB,即 3.5 万 EB,0.35 亿 PB[2]。众所周知,所有事物都具有正反两个方面。大数据时代也是如此,一方面,我们将其与小数量数据相比,我们得到的数据不能给予我们的专业知识与价值,同时海量数据的疯狂增长带来了极大的压力[3]。所以如何找到更有效的数据分析工具,从而达到避免出现在对大量数据挖掘时,数据使用者和所有者无法找到有用数据的局面。利用数据挖掘在海量的任意数据中寻找有用的信息,它不仅能总结过去,还能预测未来,而在网络安全问题中,其高效与快速的特性大有可为之处[4,5]。由于大数据的兴起,海量的数据让现存的计算机技术和应用不能有效解决现在的计算问题,完成现有的计算量,所以为了达成数据挖掘技术改进的重要目标,就需要完成计算能力的大幅度提升,本课题针对 Snort 入侵检测系统中海量数据的运算,传统算法在这种情况下存在着效率低下的问题。因此本文将频繁项集挖掘算法在 Hadoop 框架下并行化处理,解决了因数据量增加而降低处理速度的问题;而将频繁项集挖掘算法引入到 Snort-IDS 中,解决了Snort-IDS 自身无法对安全事件作出判断的问题,使系统具备检测新型入侵行为的能力,完善了 Snort-IDS 的体系,提升了整个系统的性能。
.........
1.2 研究现状
1.2.1 IDS 在国内外的研究现状
在针对入侵检测研究中,美国走在世界最前列[6,7]。IDS 的研究和发明展现了过程的多元化,与此同时在职能化和分布式两方面都取得了显著的进步。为了让入侵检测系统高效运行,必须使其跟上当今日益增长的链路速度流量。然而入侵检测系统至今仍然存在着严重的缺陷,最为典型的就是在执行数据包检测时无法达到所需要的速率,导致数据包无法按要求进入网络。Abbas 和 Vermeirenet al 等人,进行了一项初步研究,将 Snort-IDS 设计为利用当今多核架构的多线程应用程序。 Aldwairi,Weinsberg,等人使用了新颖的优化技术,结合定制的 FPGA(Field-Programmable Gate Array)和硬件,大大改善了规则和字符串匹配。通过使用不同的数据包捕获库来提高性能,并允许 Snort 直接访问为 NIC(Network Interface Card)分配的内核接收环形缓冲区。当完全消除传统的网络 TCP / IP堆栈和套接字接口机制时,显示出显著的改进。终端用户整合较难,且系统兼容性不好[6]。而在实际应用领域中,无论是国内还是国外的入侵检测产品,绝大多数都是利用开放源代码 Snort 进行改进而生成的,故其在检测新型攻击行为时存在一定的缺陷[7]。
............
2 相关技术介绍
2.1 Hadoop 框架
Apach Hadoop 项目主要是用于开源软件的开发,其特点是采用分布式计算,具有良好的扩展性能,可靠程度也很好。详见图 2-1。它能够运用较简易的编程模型越过计算机集群对巨大的数据集进行分布式分析、解决。其目标是在数以千计的主机上同时进行本地运算和存储[12]。从附图 2-1 中可以看到该框架的主要组成部分:Hadoop 的核心分布式文件系统(Hadoop Distributed File System,HDFS)、编程框架 Mapreduce、数据库集群[14]。HDFS性质为一个主/从(Master/Slave)的系统构造,能够使用目录路径来使文件进行CRUD(Create、Retrieve、Update、Delete)操作,通过它来为生态系统这个整体打下了十分稳固的底层存储支持的基础。MapReduce 运用“逐一治理”的理论,对大规模数据集的各个操作进行区分从而分给附属在主节点的各分节点统一完成,最后把完成的各个分节点操作中间结果进行汇集得到完美的成果,这样的方法可以使系统的计算水平得到增加。HBase 处在结构化存储层, HBASE 是在结构化存储层中,HBase 的实体服务和故障转移系统是基于 ZooKeCube 集群的功能。
..........
2.2 MapReduce 模型
2.2.1 MapReduce 模型概述
该模型于 2004 年 Google 自主研发的 MapReduce 面世,由于它有高效并发处理巨大数据的优势, MapReduce 达到了忽略底层实现细节目标的同时,极大程度简化了编程,提高了编程效率,它的亮点在于成本低,但保证了高性能;松耦合增加了其可扩展性,而无共享的结构更加提高了这一性能。提高了其的实用性;对于系统组件例如 Map 和Partition,用户可以按照自身需要对其进行自定义,Reduce 组件也是如此;且工作效率较高[2]。数据库要想在 MapReduce 模型中运行或应用,首先应当具备如下基本条件:该数据集可以进行拆分,且拆分后的每个小数据都能够独立并行地进行运算。每个 MapReduce作业(job)在进行运算时,都会对输入其中的大数据集进行拆分,Map 任务(task)会对每一个被拆分后具有独立属性的小数据块采用并行化的方式进行运算。Map 输出过程的键值对会通过 MapReduce 来完成排序,其结果会通过 Reduce 阶段输入进一步传送到 Reduce任务,在此过程中Map、Reduce阶段的输入和输出都会被记录并保存在系统中。MapReduce的完整体系负责作业的更动、监督和把未成功完成的任务再一次进行的工作。HDFS 分布式文件系统的运行节点通常与 MapReduce 是相同的,亦即多数情况下进行计算或存储的节点是处于同一位置。其优点是极大提高了运行速度和工作效率[15]。MapReduce 框架由一个 Master Job Tracker 和若干个 Slave Job Tracker 共同组成,其中 Slave JobTraker 数量取决于集群的节点数。Master 的重点是完成每一次作业的一切任务的更改与变动,其中含有未成功完成需要再一次进行的任务,所有任务散布在不同的Slave 中, Master 用来监督和控制其执行,而其发布的任务由 Slave 完成。用户通过设置文件输入/输出路径以及相应的 Map 和 Reduce 函数,在加上运行所需的其他参数,即可构成一次作业配置(Job Configuration)。最后把信息提交给 Job Tracker,后者会将其状态发送到 Job Client[16]。其原理图如图 2-2 所示。
.........
3 基于 MapReducce 频繁项集挖掘算法的 Snort-IDS 的架构.......21
3.1 Snort-IDS 的缺陷..........21
3.2 基于 MapReducce 频繁项集挖掘算法的 Snort-IDS 的设计.......21
3.3 核心功能模块设计.......22
3.3.1 数据提取模块....22
3.3.2 引擎检测模块....23
3.3.3 动态规则生成模块.......25
3.4 本章小结............27
4 MapReduce 频繁项集挖掘算法与 MapReduce 优化模型的实现.............29
4.1 MapReduce 化的频繁项集挖掘算法.........29
4.2 动态自适应 MapReduce 模型实现..............36
4.3 本章小结............41
5 实验设计与分析...........43
5.1 实验环境搭建....43
5.1.1 硬件环境............43
5.1.2 软件环境............43
5.2 实验数据准备....44
5.3 实验结果及分析...........45
5.3.1 运算效率对比分析.......45
5.3.2 运行结果分析....46
5.4 本章小结............47
5 实验设计与分析
5.1 实验环境搭建
本实验使用了 6 台服务器搭建 Hadoop 的运行环境,6 台服务器均采用 CentOS7 作为操作系统、jdk1.8.0、Hadoop2.6.0。表 5-1、表 5-2 为各个服务器硬件配置及 IP 等信息。为了比较基于 MapReducce 的频繁项集算法与原始算法运算效率的比较,本文进行了实验,实验采用 kddcup.data_10_percent_corrected 数据集。KDD Cup 该数据集是网络入侵检测系统最常用的标准测试集,也是国内外学术界最具代表性和影响力的入侵检测数据集。该数据集中的记录被分成了两大部分:用于进行训练的数据集和用于做测试的数据集。其中,训练的数据具有特定的标识,测试数据没有标识。kddcup.data_10_percent_corrected 数据量仅为 KDD Cup99 数据集的 10%,该数据集共有494 021 条数据记录,其中,正常数据 97 278 条,各种攻击数据如表 5-4 所示。实验采用的模拟攻击软件为 IDSInformer,它是公司开发的模拟攻击软件,它能够产生多达种攻击数据,是用来测试的有效工具。釆用在实验中针对每一种攻击、完整准确地录制真实攻击过程的网络数据包,再经过封装,自动化处理,形成一个攻击文件,由此构建了一个庞大的攻击库,来对的各种攻击识别策略进行检测。用 IDSInformer 发送模拟攻击数据包,并将这些数据包保存到日志文件中。—共记录了约 2000 个攻击数据包,用于衡量系统预检测的效果。系统的预检测引擎会将认为正常的数据包丢弃,以减少不必要的滥用检测工作。
..........
总结
此论文对目前的 Snort 入侵检测系统的特点进行了分析,该系统具有运用已有的开源性和支持插件的优点,但是也存在着无法检测新型入侵行为,以及误报率高,效率低下的问题。因此本文引入了频繁项集挖掘算。主要工作体现在以下几个方面:
(1)本文介绍了频繁项集挖掘算法及其优缺点。其两个主要弱点有:海量的候选数目集,需要对数据据进行多次重复扫描而造成的效率低下。本文提出了对数据进行切片的分布式算法,该方式能够存储各数据项之间所有的关系,然后把整个数据库拆分为各个较小的数据片进行挖掘处理,此算法最强大的优势使是有效减少了扫描次数,提高了效率,所以此常用于动态特征提取模块。
(2)传统的 Snort 入侵检测存在以下缺陷:适用性较差、漏报率或误报率较高、检测过于单一、规则缺少广泛的测试和分析、过度依赖于自身的规则库等不足,这些不足已经使得传统 Snort 无法应对如今日趋复杂的网络环境。
(3)通过对频繁项挖掘算法的优化,从而解决了此前所遇到的问题,并在 Hadoop平台上提出了具有高可扩展性的 MapReduce 化的频繁项挖掘算法,并将其进行运用,在运行中获取了大量与其关联的规则,从而证实该算法能够与云技术相结合进行运算,并获得较好的效果。
(4)设计了基于分布式数据挖掘的入侵检测系统并测试了其效果。通过比较和分析得出的研究结果,证明了改良之后检测功能和检测效率得到了显著提高,同时解决了对未知异常的遗漏和误判,有效地对避免了 Snort 入侵检测系统的缺点导致的问题发生。
..........
参考文献(略)