第四章 基于 spark 的检测算法实现与实验
4.1 引言。
本文第三章节构建了云检测平台,并且对平台所涉及的相关技术进行了阐述。
本章节主要阐述了 cart 决策树和贝叶斯分类器算法的基本原理,同时还介绍了算法在spark 框架中的实现以及在 DDoS 检测中的应用,同时提出了两个传统的网络入侵检测系统,分别为 bro 和 corsaro,并且与机器学习算法在 DDoS 检测效率时间方面进行了对比。本章节实验环节分别采用了 darknet 数据集和 kdd99 数据集分别进行试验。
本章节具体内容安排如下:4.2 小节讲述了传统的开源安全管理工具如何采用具体算法进行 DDoS 攻击探测;4.3 小节描述了朴素贝叶斯算法;4.4 小节描述了决策树算法;4.5 小节提出了基于 Cart 决策树和贝叶斯算法的 DDoS 检测方法;4.6 小节采用了实验验证;4.7 小节描述了实验过程及其结果分析。
4.2 传统的开源安全管理工具。
4.2.1 Bro 和 corsaro.
Bro 是一种开源的网络流量分析器。它既可以用于检测异常流量同时可以帮助增加网络系统的性能,因为它通过扩展的结构化的日志记录了所有网络活动,并且提出了这样的报告,包括网络的安全漏洞。值得注意的是,除了使用特征,bro 也支持语音滥用和异常探测通过监本来识别特殊攻击。表 1 代表在 Bro 中预先定义的特征例子。这个规则用于使用 DNP-3 议。
Corsaro 它是一种由 CAIDA 用 c 语言设计的网络分析器,这个分析器可以快速有效的用来监控大规模被动网络望远镜流量。这个分析器使用 libtrace 库来存储数据并且以时间间隔来展现,因为它把数据通过 io 线程分成一组,它在分析数据和写日志上有很快的速度。
Corsaro 使用以下八个不同的元组代表一个包。为了更好的展示攻击分类,Corsaro 从 ip包头检索信息和匹配检索到的信息与与定义的规则。主要基于 syn,ack 和 rst 标记过滤 tcp 包。
基于他们的种类分类他们的包。
4.3 朴素贝叶斯算法描述。
4.3.1 贝叶斯算法原理。
贝叶斯法则又被称为贝叶斯定理、贝叶斯规则,是指在概率统计中,根所观察到的现象,来对有关概率分布的主观判断(指的是先验概率)进行修正的标准方法。当被分析样本数目大到接近总体数时,样本当中事件发生的概率将趋向于总体中事件发生的概率[40].
贝叶斯法作为一种规范的原理,则对于所有概率的解释是有效的;然而,贝叶斯主义者和频率主义者对于在如何赋值应用中概率,持有着不同的看法:频率主义者根据随机事件发生的频率,或者总体样本里面的个数来赋值概率;贝叶斯主义者则会根据那些未知的命题来对其进行赋值概率。
先验分布和后延分布被称作为贝叶斯统计中的两个基本概念:
(1)先验分布。是指总体分布参数中 θ 的一个概率分布。贝叶斯学派的根本观点,是认为在关于总体分布参数 θ 的任何统计推断问题中,除了使用样本所提供的信息外,还必须规定一个先验分布,它是在进行统计推断时不可缺少的一个要素。他们认为先验分布不必有客观的依据,可以部分地或完全地基于主观信念[41].
(2)后验分布。根据样本分布和未知参数的先验分布,用概率论中求条件概率分布的方法,求出的在样本已知下,未知参数的条件分布。因为这个分布是在抽样以后才得到的,故称为后验分布。贝叶斯推断方法的关键是任何推断都必须且只须根据后验分布,而不能再涉及样本分布[42].
贝叶斯公式为其中:
(a)其中 指的是 的先验概率或边缘概率,称作"先验"是因为它不考虑 因素。
(b) 是已知 发生后 的条件概率,也称作 的后验概率。
(c) 是已知 发生后 的条件概率,也称作 的后验概率,这里称作似然度。
(d) 是的先验概率或者边缘概率,这里称作标准化常量。
(e) / 称作标准似然度。
贝叶斯法则又可表述为:
后验概率=(似然度*先验概率)/标准化常量=标准似然度*先验概率随着 和 的增长而增长,随着 的增长而减少,即如果 独立于时被观察到的可能性越大,那么 对 A的支持度越小[43].
贝叶斯公式为利用搜集到的信息,这些信息对原有判断进行修正提供了有效手段。在采样之前,经济主体对各种假设有一个判断先验概率,关于先验概率的分布,通常可根据经济主体的经验判断确定(当无任何信息时,一般假设各先验概率相同),较复杂精确的可利用包括最大熵技术,边际分布密度或者相互信息原理等方法来确定先验概率分布。
4.3.2 朴素贝叶斯。
贝叶斯分类是一种基于统计学的分类方法。朴素贝叶斯算法是在贝叶斯算法上基于独立假设的贝叶斯定理的简单概率分类器,因此这里谈到技术的就是数据挖掘中很小的一部分了。
其主要基本思路如下:(1)需求分析(2)提取特征(3)训练样本(4)检测特征(5)计算后验概率(6)判定。
首先是需求分析,我们需要清楚自己的目的:即对这些数据分析能够得出什么结果?我们需要什么结果?一个分类模型;还是其他。例如:我们需要对大量的邮件进行分析处理,最终需要建立一个模型能够自动判定一封邮件是够为垃圾邮件或者正常邮件,因此,最终我们只有两个类别,即垃圾邮件、正常邮件。这就是我们的需要。
其次是提取特征,需要对待分析的数据进行详细分析,提取不同点。
再次是训练样本,这个步骤一般是提取大量样本按照其上一步提取的特征值进行分析并统计,得到一个比较详细的特征统计表。例如:随机从邮件服务器中提取 1000 封邮件,然后对每封邮件内容按照前面提到的特征进行统计分析。
再次是检测特征,通过前面的过程我们已经建立了一个朴素贝叶斯模型,我们可以通过编写代码实现自动检测特征。例如,可以通过 python 或者 c++实现文本的特征匹配,这里可以采用其他文本匹配算法。再次是计算后验概率,根据朴素贝叶斯算法,可以计算在已知分类情况下的特征概率,即先验概率[45].最后,我们可以通过比较先验概率的值和概率来判定该样本属于哪种类型。系统性能指标一般会通过正确率、准确率、检出率这三个指标进行评定。
4.4 决策树算法描述。
决策树是附加概率结果的一个树状的决策图,是直观的运用统计概率分析的图法。机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。
4.4.1 决策树算法原理。
决策树可以被看成一种类似树状的预测模型,决策树是由有向边和节点组成的层次结构。
树包含 3 中节点: 根节点 、 内部节点 、 叶子节点 .决策树的根节点只有一个 ,这个根节点就是全体训练数据的集合。树中每个内部节点都是一个分裂问题:它指定了对实例的某个属性的测试,它将到达该节点的样本按照某个特定的属性进行分割,并且这个节点的每一个后继分支对应于该属性的一个可能值。每个 叶子节点 是带有分类标签的数据集合即为实例所属的分类。
决策树算法很多,例如:ID3、C4.5、CART 等。这些算法均采用的是自上而下的贪婪算法,从每个内部节点中选择分类效果最佳的属性来分裂节点,同时可以分烈成两个或者更多的子节点,继续此过程,一直到这棵决策树能够将所有的训练数据集准确的分类,或所有属性都被用到为止。该算法的简化版本是在使用了全部样本的假设来构建决策树的。具体步骤如下:
(1):假设 T 为训练样本集。
(2):从属性集合 Attributes 中选择一个最能区别 T 中样本的属性。
(3):创建一个树节点,它的值为所选择的属性。创建此节点的子节点,每个子链代表所选属性的一个唯一值(唯一区间),使用子链的值进一步将样本细分为子类。对于每一个分支继续重复(2)(3)的过程,直到满足以下两个条件之一:
(a):所有属性已经被这条路径包括。
(b):与这个节点关联的所有训练样本都具有相同的目标属性(熵为 0)。
4.5 基于 Cart 决策树和贝叶斯算法的 DDoS 检测方法。
4.5.1 基本原理描述。
监督学习是机器学习一项技术,它用来分析带标签的训练数据,人们都知道,带标签的分类是为了创造一个模型来分类实例到独立的种类。我们使用的决策树和朴素贝叶斯算法就是两个比较流行的机器学习技术。训练集中纪录的数目和特征值对监督学习分类器有很大的影响。
在这个案例中,决策树分类器使用整个训练集作为树根节点,当算法检查完所有可能的分裂点基于节点的属性值树根开始分裂成子树。因此,决策树把最重要的变量作为根节点,这样可以协助特征选择过程。另一方面,朴素贝叶斯是一个简单的线性分类器根据预测的类值把实例分配到它属于的类中。这也增加了它在构建模型中的计算效率。
为了设计决策树模型,我们使用了 rpart 包,这个包使用了 Cart 方法[46].Cart 方法主要的优势是具有较高的鲁棒性,因此它也为了这个案例提供了一个高预测精度。Cart 方法直接的消除了非重要的属性值。因此,它需要较少的计算时间和任何不相关的属性,这些属性对该方法没有什么重要影响。这个方法使用 gini 系数模型来测量分裂点属性的值。
朴素贝叶斯主要的优点是可以作出非独立的假设,这个假设可以减少不相关特征的影响。
4.5.2 数据的特征选择。
特征选择是数据预处理重要的阶段,它的目的是消除较少信息的特征值来增加机器学习分类器的效率,它通过消除训练集中冗余和不相关的特征来提高分类的效率。它同时也减少了数据处理的时间减少了数据存储的内存。在这里最重要的挑战是选择信息最翔实的特征。
为了完成这个目的,我们分析了我们数据集的属性而且认定了 12 个特征作为做翔实的属性:
(a)ip 源:定义了数据包发送的来源 ip 地址。
(b)来源国:定义了数据包发送来源的国家。
(c)ip 源端口:定义了数据包发送的端口号码。
(d)ip 目的端口:定义了数据包发送到的端口号。
(e)协议:定义了网络层用来发送数据包的协议。
(f)Syn 标记:定义了 syn 标志的值(g)Ack 标记:定义了 ack 标记的值(h)Rst 标记:定义了 rst 标记的值包长度:定义了包的长度数据包的生命周期:定义了数据包的生命周期delta 时间:定义了两个连续数据包之间的间隔警告:这是类的标签这八个特征值的重要性在之前的工作中已经有了说明。另外,我们还检查了 delta 时间值,因为 latmon 使用在连续的数据包中的时间间隔来分类攻击。同时探究人员更倾向于用包比率来探测 DDoS 攻击。当我们分析 DDoS 攻击包我们希望能观察低 delta 时间值,因为高的 delta时间值表示在接收两个连续数据包时以一个较高的比率。而这个比率通常不是 DDoS 攻击是的状况。此外,因为 JIN 等人,强调了使用 TTL 作为探测 DDoS 攻击的重要性。Corsaro 也使用 TTL 作为一个信息最翔实的特征值,我们也使用 TTL 作为一个特征值。注意,我们使用 Tshark 这是一个开源的网络分析器,为了从流量中提取特征值,因为目的 ip 地址被隐藏在CAIDA 中,我们不能使用它作为特征值。
我们指定了两个不同的特征值集来评估我们的分类器。特征值集 1 包括之前提到的所有特征值,特征值集合 2 包括除了 ip 地址和源/目的端口以外的特征值。我们的目的是观察我们选择的特征值如何影响分类器的效果。尤其,当我们注意到了 ip 地址可以被欺骗而端口号码可以被动态的修改。
4.5.3 Darknet data 数据处理流程。
Darknet data 在大数据分析平台中处理流程如图 4.1 所示。
步骤1:将 Darknet data 数据经过过滤与计算,然后使用flume数据采集框架将darknet data传送到 HDFS 当中,提取出计算层所需要的格式以便计算层集群进行统计计算。
步骤 2:在计算层中使用 Spark 计算框架从 HDFS 中读取数据,再对该网络原始流量数据包使用 sparkmllib 机器学习库中决策树和朴素贝叶斯算法进行分类。
步骤 3:将异常检测结果存入数据库,分别用于阈值分析、异常检测。
随着我国居民生活水平的提高,居民可支配的收入越来越高,随之而来的是居民生活压力增加,不健康饮食、不健康的生活习惯和生活压力导致居民的健康水平却越来越低,近些年我国居民对健康越来越重视。...
2.4Sparkmllib库与基于spark的数据挖掘算法。Spark之所以在机器学习方面具有得天独厚的优势,有以下几点原因:(1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果...
第五章系统测试整个智能家居系统的硬件平台搭建完成,软件编程和调试结束后,需要对系统进行一个全面的测试,来验证系统的功能的实现和稳定性。系统测试分为功能测试和性能测试。功能测试主要检测系统设计的功能是否都能完成;性能测试主要检验系统的稳定...
第四章个人防火墙系统设计与实现4.1开发环境操作系统:Windows7开发工具:VisualStudio20104.2防火墙系统设计架构4.2.1防火墙系统总体结构PSFW个人防火墙分为三个模块(总体模块划分见表4.1):(a)PSFWIOCONTROL为动态链接库模块和可执...
本文以软件开发为主线论述了主要的系统分析、设计与实现工作。在需求分析方面,从嘉饰公司亟需解决的主要营销问题出发,着重从营销基础信息管理、营销方案管理和营销的定价与成本信息管理方面进行了分析。...
第五章结论本文通过对物联网智能家居市场走访调查,结合行业发展趋势进行综合分析,充分考虑大众需求,研究和分析智能家居设备的控制技术,主要研究工作有以下几个方面:?1、对物联网和智能家居的发展历史,智能家居的发展现状进行了深入细致地研究,通...
第1章绪论随着计算机技术、互联网技术和嵌入式技术的日趋成熟,物联网开始逐渐走进人们的生活。在国家的政策支持下,科技在飞速的发展,智慧中国的概念也已经逐渐走入我们的城市。智能城市、智能家居、智慧医疗等基于物联网的智能系统已经为人们的生活...
本文的研究目标是以软件工程理论为指导,采用 PHP+My SQL 技术设计并实现科学合理、实用好用、能够满足实际需求的作业管理系统,以提高教学中作业管理环节的效率,增强教学效果,提高人才培养的质量。...
摘要微信是腾讯公司于2011年1月21日推出的一款通过网络快速发送语音短信、视频、图片和文字,支持多人群聊的手机即时通信软件,截止到2014年底,微信注册用户已接近8亿,海外用户突破1亿。面对如此庞大的用户群体,各种各样基于微信的应用系统...
第3章酒店客房预订管理系统的数据库分析及系统设计3.1数据库分析软件系统在工作的过程中,相关的数据信息都保存在数据库中,数据库的主要作用就是对软件系统中的数据信息进行存储和管理,保证这些数据信息的稳定和安全。数据库就是软件系统的后台,是...