❶ 简述入侵检测常用的四种方法
入侵检测系统所采用的技术可分为特征检测与异常检测两种。
1、特征检测
特征检测(Signature-baseddetection)又称Misusedetection,这一检测假设入侵者活动可以用一种模式来表示,系统的目标是检测主体活动是否符合这些模式。
它可以将已有的入侵方法检查出来,但对新的入侵方法无能为力。其难点在于如何设计模式既能够表达“入侵”现象又不会将正常的活动包含进来。
2、异常检测
异常检测(Anomalydetection)的假设是入侵者活动异常于正常主体的活动。根据这一理念建立主体正常活动的“活动简档”,将当前主体的活动状况与“活动简档”相比较,当违反其统计规律时,认为该活动可能是“入侵”行为。
异常检测的难题在于如何建立“活动简档”以及如何设计统计算法,从而不把正常的操作作为“入侵”或忽略真正的“入侵”行为。
(1)网络异常攻击检测算法扩展阅读
入侵分类:
1、基于主机
一般主要使用操作系统的审计、跟踪日志作为数据源,某些也会主动与主机系统进行交互以获得不存在于系统日志中的信息以检测入侵。
这种类型的检测系统不需要额外的硬件.对网络流量不敏感,效率高,能准确定位入侵并及时进行反应,但是占用主机资源,依赖于主机的可靠性,所能检测的攻击类型受限。不能检测网络攻击。
2、基于网络
通过被动地监听网络上传输的原始流量,对获取的网络数据进行处理,从中提取有用的信息,再通过与已知攻击特征相匹配或与正常网络行为原型相比较来识别攻击事件。
此类检测系统不依赖操作系统作为检测资源,可应用于不同的操作系统平台;配置简单,不需要任何特殊的审计和登录机制;可检测协议攻击、特定环境的攻击等多种攻击。
但它只能监视经过本网段的活动,无法得到主机系统的实时状态,精确度较差。大部分入侵检测工具都是基于网络的入侵检测系统。
3、分布式
这种入侵检测系统一般为分布式结构,由多个部件组成,在关键主机上采用主机入侵检测,在网络关键节点上采用网络入侵检测,同时分析来自主机系统的审计日志和来自网络的数据流,判断被保护系统是否受到攻击。
❷ 大数据科学家需要掌握的几种异常值检测方法
引言
异常值检测与告警一直是工业界非常关注的问题,自动准确地检测出系统的异常值,不仅可以节约大量的人力物力,还能尽早发现系统的异常情况,挽回不必要的损失。个推也非常重视大数据中的异常值检测,例如在运维部门的流量管理业务中,个推很早便展开了对异常值检测的实践,也因此积累了较为丰富的经验。本文将从以下几个方面介绍异常值检测。
1、异常值检测研究背景
2、异常值检测方法原理
3、异常值检测应用实践
异常值检测研究背景
异常值,故名思议就是不同于正常值的值。 在数学上,可以用离群点来表述,这样便可以将异常值检测问题转化为数学问题来求解。
异常值检测在很多场景都有广泛的应用,比如:
1、流量监测
互联网上某些服务器的访问量,可能具有周期性或趋势性:一般情况下都是相对平稳的,但是当受到某些黑客攻击后,其访问量可能发生显着的变化,及早发现这些异常变化对企业而言有着很好的预防告警作用。
2、金融风控
正常账户中,用户的转账行为一般属于低频事件,但在某些金融诈骗案中,一些嫌犯的账户就可能会出现高频的转账行为,异常检测系统如果能发现这些异常行为,及时采取相关措施,则会规避不少损失。
3、机器故障检测
一个运行中的流水线,可能会装有不同的传感器用来监测运行中的机器,这些传感器数据就反应了机器运行的状态,这些实时的监测数据具有数据量大、维度广的特点,用人工盯着看的话成本会非常高,高效的自动异常检测算法将能很好地解决这一问题。
异常值检测方法原理
本文主要将异常值检测方法分为两大类:一类是基于统计的异常值检测,另一类是基于模型的异常值检测。
基于统计的方法
基于模型的方法
1、基于统计的异常值检测方法
常见的基于统计的异常值检测方法有以下2种,一种是基于3σ法则,一种是基于箱体图。
3σ法则
箱体图
3σ法则是指在样本服从正态分布时,一般可认为小于μ-3σ或者大于μ+3σ的样本值为异常样本,其中μ为样本均值,σ为样本标准差。在实际使用中,我们虽然不知道样本的真实分布,但只要真实分布与正太分布相差不是太大,该经验法则在大部分情况下便是适用的。
箱体图也是一种比较常见的异常值检测方法,一般取所有样本的25%分位点Q1和75%分位点Q3,两者之间的距离为箱体的长度IQR,可认为小于Q1-1.5IQR或者大于Q3+1.5IQR的样本值为异常样本。
基于统计的异常检测往往具有计算简单、有坚实的统计学基础等特点,但缺点也非常明显,例如需要大量的样本数据进行统计,难以对高维样本数据进行异常值检测等。
2、基于模型的异常值检测
通常可将异常值检测看作是一个二分类问题,即将所有样本分为正常样本和异常样本,但这和常规的二分类问题又有所区别,常规的二分类一般要求正负样本是均衡的,如果正负样本不均匀的话,训练结果往往会不太好。但在异常值检测问题中,往往面临着正(正常值)负(异常值)样本不均匀的问题,异常值通常比正常值要少得多,因此需要对常规的二分类模型做一些改进。
基于模型的异常值检测一般可分为有监督模型异常值检测和无监督模型异常值检测,比较典型的有监督模型如oneclassSVM、基于神经网络的自编码器等。 oneclassSVM就是在经典的SVM基础上改进而来,它用一个超球面替代了超平面,超球面以内的值为正常值,超球面以外的值为异常值。
经典的SVM
1
基于模型的方法
2
基于神经网络的自编码器结构如下图所示。
自编码器(AE)
将正常样本用于模型训练,输入与输出之间的损失函数可采用常见的均方误差,因此检测过程中,当正常样本输入时,均方误差会较小,当异常样本输入时,均方误差会较大,设置合适的阈值便可将异常样本检测出来。但该方法也有缺点,就是对于训练样本比较相近的正常样本判别较好,但若正常样本与训练样本相差较大,则可能会导致模型误判。
无监督模型的异常值检测是异常值检测中的主流方法,因为异常值的标注成本往往较高,另外异常值的产生往往无法预料,因此有些异常值可能在过去的样本中根本没有出现过, 这将导致某些异常样本无法标注,这也是有监督模型的局限性所在。 较为常见的无监督异常值检测模型有密度聚类(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一种典型的无监督聚类方法,对某些类型的异常值检测也能起到不错的效果。该算法原理网上资料较多,本文不作详细介绍。
IF算法最早由南京大学人工智能学院院长周志华的团队提出,是一种非常高效的异常值检测方法,该方法不需要对样本数据做任何先验的假设,只需基于这样一个事实——异常值只是少数,并且它们具有与正常值非常不同的属性值。与随机森林由大量决策树组成一样,IsolationForest也由大量的树组成。IsolationForest中的树叫isolation tree,简称iTree。iTree树和决策树不太一样,其构建过程也比决策树简单,因为其中就是一个完全随机的过程。
假设数据集有N条数据,构建一颗iTree时,从N条数据中均匀抽样(一般是无放回抽样)出n个样本出来,作为这颗树的训练样本。
在样本中,随机选一个特征,并在这个特征的所有值范围内(最小值与最大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。
这样得到了一个分裂条件和左、右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直至达到终止条件。 终止条件有两个,一个是数据本身不可再分(只包括一个样本,或者全部样本相同),另外一个是树的高度达到log2(n)。 不同于决策树,iTree在算法里面已经限制了树的高度。不限制虽然也可行,但出于效率考虑,算法一般要求高度达到log2(n)深度即可。
把所有的iTree树构建好了,就可以对测试数据进行预测了。预测的过程就是把测试数据在iTree树上沿对应的条件分支往下走,直到达到叶子节点,并记录这过程中经过的路径长度h(x),即从根节点,穿过中间的节点,最后到达叶子节点,所走过的边的数量(path length)。最后,将h(x)带入公式,其中E(.)表示计算期望,c(n)表示当样本数量为n时,路径长度的平均值,从而便可计算出每条待测数据的异常分数s(Anomaly Score)。异常分数s具有如下性质:
1)如果分数s越接近1,则该样本是异常值的可能性越高;
2)如果分数s越接近0,则该样本是正常值的可能性越高;
RCF算法与IF算法思想上是比较类似的,前者可以看成是在IF算法上做了一些改进。针对IF算法中没有考虑到的时间序列因素,RCF算法考虑了该因素,并且在数据样本采样策略上作出了一些改进,使得异常值检测相对IF算法变得更加准确和高效,并能更好地应用于流式数据检测。
IF算法
RCF算法
上图展示了IF算法和RCF算法对于异常值检测的异同。我们可以看出原始数据中有两个突变异常数据值,对于后一个较大的突变异常值,IF算法和RCF算法都检测了出来,但对于前一个较小的突变异常值,IF算法没有检测出来,而RCF算法依然检测了出来,这意味着RCF有更好的异常值检测性能。
异常值检测应用实践
理论还需结合实践,下面我们将以某应用从2016.08.16至2019.09.21的日活变化情况为例,对异常值检测的实际应用场景予以介绍:
从上图中可以看出该应用的日活存在着一些显着的异常值(比如红色圆圈部分),这些异常值可能由于活动促销或者更新迭代出现bug导致日活出现了比较明显的波动。下面分别用基于统计的方法和基于模型的方法对该日活序列数据进行异常值检测。
基于3σ法则(基于统计)
RCF算法(基于模型)
从图中可以看出,对于较大的突变异常值,3σ法则和RCF算法都能较好地检测出来, 但对于较小的突变异常值,RCF算法则要表现得更好。
总结
上文为大家讲解了异常值检测的方法原理以及应用实践。综合来看,异常值检测算法多种多样 ,每一种都有自己的优缺点和适用范围,很难直接判断哪一种异常检测算法是最佳的, 具体在实战中,我们需要根据自身业务的特点,比如对计算量的要求、对异常值的容忍度等,选择合适的异常值检测算法。
接下来,个推也会结合自身实践,在大数据异常检测方面不断深耕,继续优化算法模型在不同业务场景中的性能,持续为开发者们分享前沿的理念与最新的实践方案。
❸ 异常检测(Anomaly Detection)
异常检测(Anomaly Detection)是机器学习算法的一个常见应用。它主要用于非监督学习,但又类似一些监督学习问题。
异常检测常用在对网站异常用户的检测;还有在工程上一些零件,设备异常的检查;还有机房异常机器的监控等等
假设有数据集 ,当又有一个新的测试样本 ;
想要知道这个新样本是否是异常的;
首先对x的分布概率建模p(x) ,用来说明这个例子不是异常的概率;
然后定一个阈值 ,当 时说明是异常的。
当出现在高概率分布的区域时,说明该例子时正常的;当出现在低概率的区域时,说明是异常的。
高斯分布又被称之为正态分布,曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线
假设x是一个实数随机变量,如果它的概率分布为高斯分布,定义几个变量:
=平均值
=标准差
=方差
那么x的概率分布可以用公式来表示:
其平均值 决定了其位置,其标准差 决定了分布的幅度
完整的高斯分布的概率公式为:
当参数平均值 和标准差 变化时:
关于平均值和方差的求解:
在一个异常检测的例子中,有m个训练样本,每个样本的特征值数量有n个,那么某个样本的分布概率模型p(x)就可以用样本的每个特征值的概率分布来计算:
上面的式子可以用更简洁的方式来表达
总计一下,异常检测的过程:
如何评估一个异常检测算法,以及如何开发一个关于异常检测的应用:
首先,在获取到的一堆数据中,取一大部分正常的(可能包含少部分异常)的数据用于训练集来训练分布概率公式p(x)。
然后,在交叉验证和测试集中使用包含正常和一定比例异常的数据,来通过查准率和召回率,以及F值公式来评价一个算法。
举个例子
假设有:
下面分割一下训练集,交叉验证集和测试集:
在训练集上训练出概率分布函数p(x)
在交叉验证集上,预测y:
下面通过和真实标签的比较,可以计算出 查准率(Precision)和召回率(Recall),然后通过F值公式来得到一个数值。
总结一下,我们将正常的数据分成60:20:20,分别给训练集,交叉验证集,测试集,然后将异常的数据分成两半,交叉验证集和测试集各一半。
我们可以通过改变不同的阈值 从而得到不同的评信档价系数来选取一个最佳的阈值。
当得到的评价系数不佳时,也可以通过改变特征值的种类和数量来获取理想的评价系数
在使用异常检测时,对性能影响最大的因素是特征值的选择。
首先要对特征向量使用高斯分布来建模,通常情况下,我们得到的原始数据并没有呈现高斯分布,例如这种:
有几种方法可以实现:
通过上述办法,可以将数据转换成高斯分布的形式。
异常检测有点类似监督学习中的二元分类问题。
我们的目标是使得p(x)对于正常的数据来说好坦中是大的,而对于异常的数据来说是很小的,而在异常检测中一个常见的问题是最终我们的到的p(x)对于正常和异常的都很大。
在这种情况下需要观察一下交叉验证集中的异常示例,尝试找出能更好区分数据的新特性。
例子
例如,有一个关于机房机器的样本示例,开始收集的样本示例中包含的特征值有关于cpu负载和网络流量的。
cpu负载和网络流量是呈线性关系的,当网络流量变大时,cpu也会相应增大。
现在有一个异常的示例是网络流量不大,cpu确负载很大。假如在只有这两个特征值的情况下运行异常检测算法得出的p(x),可能就效果不佳。这时可以添加一个特征值,是流量和cpu的比例关系,这样就约束来上述的异常示例,通过这三个特征值得到的异常检测算法可能就会好一点。
异常检测一般用于:
样友山本中 的数量非常少(0-50个),而 的非常多。这样由于样本数量的过少,达不到良好的训练效果,而在异常检测中确能够表现良好。
还有就是导致 的情况非常多,且有不可预见性。
监督学习一般用于:
样本中 和 的数量都非常多。这样就有足够的样本数量去训练算法。
多元高斯分布是异常检测的一种推广,它可能会检测到更多的异常。
在原始高斯分布中,模型p(x)的搭建是通过分别计算 来完成的,而多元高斯分布则是一步到位,直接计算出模型:
PS: 是一个协方差矩阵。
通过改变 和 可以得到不同的多元高斯分布图:
原始高斯分布模型,它的多个特征值之间的关系是轴对齐的(axis-aligned),两个或多个高斯分布之间没有相关性。
而多元高斯分布能够自动捕获x的不同特征之间的相关性。因此它在图像上会现实椭圆或有斜率的椭圆。
在平常的使用中,一般是使用原始高斯分布模型的,因为它的计算成本比较低。
在多元高斯分布中,因为要计算多个特征值之间的相关性,导致计算会慢很多,而且当特征值很多是,协方差矩阵就会很大,计算它的逆矩阵就会花费很多时间。
要保证样本数量m大于特征值数量n,否则协方差矩阵会不可逆;
根据经验法则,当 时,多元高斯分布会表现良好。
在原始高斯分布模型中可以手动添加相关性高的特征值之间的关系,可以避免了使用多元高斯分布,减小计算成本。
❹ 如何理解异常入侵检测技术
入侵检测是用于检测任何损害或企图损害系统的机密性、完整性或可用性等行为的一种网络安全技术。它通过监视受保护系统的状态和活动,采用异常检测或误用检测的方式,发现非授权的或恶意的系统及网络行为,为防范入侵行为提供有效的手段。入侵检测系统(IDS)是由硬件和软件组成,用来检测系统或网络以发现可能的入侵或攻击的系统。IDS通过实时的检测,检查特定的攻击模式、系统配置、系统漏洞、存在缺陷的程序版本以及系统或用户的行为模式,监控与安全有关的活动。
入侵检测提供了用于发现入侵攻击与合法用户滥用特权的一种方法,它所基于的重要的前提是:非法行为和合法行为是可区分的,也就是说,可以通过提取行为的模式特征来分析判断该行为的性质。一个基本的入侵检测系统需要解决两个问题:
一是如何充分并可靠地提取描述行为特征的数据;
二是如何根据特征数据,高效并准确地判断行为的性质。
入侵检测系统主要包括三个基本模块:数据采集与预处理、数据分析检测和事件响应。系统体系结构如下图所示。
数据采集与预处理。该模块主要负责从网络或系统环境中采集数据,并作简单的预处理,使其便于检测模块分析,然后直接传送给检测模块。入侵检测系统的好坏很大程度上依赖于收集信息的可靠性和正确性。数据源的选择取决于所要检测的内容。
数据分析检测。该模块主要负责对采集的数据进行数据分析,确定是否有入侵行为发生。主要有误用检测和异常检测两种方法。
事件响应。该模块主要负责针对分析结果实施响应操作,采取必要和适当的措施,以阻止进一步的入侵行为或恢复受损害的系统。
异常入侵检测的主要前提条件是入侵性活动作为异常活动的子集。理想状况是异常活动集同入侵性活动集相等。在这种情况下,若能检测所有的异常活动,就能检测所有的入侵性活动。可是,入侵性活动集并不总是与异常活动集相符合。活动存在四种可能性:
异常入侵检测要解决的问题就是构造异常活动集并从中发现入侵性活动子集。异常入侵检测方法依赖于异常模型的建立,不同模型就构成不同的检测方法。异常入侵检测通过观测到的一组测量值偏离度来预测用户行为的变化,并作出决策判断。异常入侵检测技术的特点是对于未知的入侵行为的检测非常有效,但是由于系统需要实时地建立和更新正常行为特征轮廓,因而会消耗更多的系统资源。
❺ 入侵检测系统的检测方法
在异常入侵检测系统中常常采用以下几种检测方法: 基于贝叶斯推理检测法:是通过在任何给定的时刻,测量变量值,推理判断系统是否发生入侵事件。 基于特征选择检测法:指从一组度量中挑选出能检测入侵的度量,用它来对入侵行为进行预测或分类。 基于贝叶斯网络检测法:用图形方式表示随机变量之间的关系。通过指定的与邻接节点相关一个小的概率集来计算随机变量的联接概率分布。按给定全部节点组合,所有根节点的先验概率和非根节点概率构成这个集。贝叶斯网络是一个有向图,弧表示父、子结点之间的依赖关系。当随机变量的值变为已知时,就允许将它吸收为证据,为其他的剩余随机变量条件值判断提供计算框架。
基于模式预测的检测法:事件序列不是随机发生的而是遵循某种可辨别的模式是基于模式预测的异常检测法的假设条件,其特点是事件序列及相互联系被考虑到了,只关心少数相关安全事件是该检测法的最大优点。 基于统计的异常检测法:是根据用户对象的活动为每个用户都建立一个特征轮廓表,通过对当前特征与以前已经建立的特征进行比较,来判断当前行为的异常性。用户特征轮廓表要根据审计记录情况不断更新,其保护去多衡量指标,这些指标值要根据经验值或一段时间内的统计而得到。 基于机器学习检测法:是根据离散数据临时序列学习获得网络、系统和个体的行为特征,并提出了一个实例学习法IBL,IBL是基于相似度,该方法通过新的序列相似度计算将原始数据(如离散事件流和无序的记录)转化成可度量的空间。然后,应用IBL学习技术和一种新的基于序列的分类方法,发现异常类型事件,从而检测入侵行为。其中,成员分类的概率由阈值的选取来决定。
数据挖掘检测法:数据挖掘的目的是要从海量的数据中提取出有用的数据信息。网络中会有大量的审计记录存在,审计记录大多都是以文件形式存放的。如果靠手工方法来发现记录中的异常现象是远远不够的,所以将数据挖掘技术应用于入侵检测中,可以从审计数据中提取有用的知识,然后用这些知识区检测异常入侵和已知的入侵。采用的方法有KDD算法,其优点是善于处理大量数据的能力与数据关联分析的能力,但是实时性较差。
基于应用模式的异常检测法:该方法是根据服务请求类型、服务请求长度、服务请求包大小分布计算网络服务的异常值。通过实时计算的异常值和所训练的阈值比较,从而发现异常行为。
基于文本分类的异常检测法:该方法是将系统产生的进程调用集合转换为“文档”。利用K邻聚类文本分类算法,计算文档的相似性。 误用入侵检测系统中常用的检测方法有: 模式匹配法:是常常被用于入侵检测技术中。它是通过把收集到的信息与网络入侵和系统误用模式数据库中的已知信息进行比较,从而对违背安全策略的行为进行发现。模式匹配法可以显着地减少系统负担,有较高的检测率和准确率。 专家系统法:这个方法的思想是把安全专家的知识表示成规则知识库,再用推理算法检测入侵。主要是针对有特征的入侵行为。 基于状态转移分析的检测法:该方法的基本思想是将攻击看成一个连续的、分步骤的并且各个步骤之间有一定的关联的过程。在网络中发生入侵时及时阻断入侵行为,防止可能还会进一步发生的类似攻击行为。在状态转移分析方法中,一个渗透过程可以看作是由攻击者做出的一系列的行为而导致系统从某个初始状态变为最终某个被危害的状态。