发明名称 一种基于主机日志分析的云数据中心实时风险评估方法
摘要 本发明属于云计算和网络安全技术领域,具体为一种基于主机日志分析的云数据中心实时风险评估方法。本发明基于主机日志的入侵检测系统和脆弱性扫描工具OSSEC,提出影响资产风险指数的四个风险因子:告警数量、告警类型、告警等级和告警威胁程度,并将它们作为评价资产风险情况的“证据”,将证据理论(D-S理论)和模糊数学的思想结合,设计出DSFM(D-SFuzzyMathematic)算法,将这些“证据”进行组合,得到资产的风险指数RI;风险指数和资产值的组合就是该资产的风险值R;一个数据中心所有的资产风险值的组合就是该数据中心的风险值。模拟攻击实验验证表明,本发明方法可以实时对整个云数据中心系统进行风险评估,得到的评估结果具有较高的准确性。
申请公布号 CN104125217A 申请公布日期 2014.10.29
申请号 CN201410309016.0 申请日期 2014.06.30
申请人 复旦大学 发明人 吕智慧;刘思帆;吴杰
分类号 H04L29/06(2006.01)I;H04L29/08(2006.01)I;H04L12/24(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 上海正旦专利代理有限公司 31200 代理人 陆飞;盛志范
主权项 一种基于主机日志分析的云数据中心实时风险评估方法,其特征在于具体步骤为:第一步:确定风险评估因子通过对入侵检测数据样本的分析和研究,归纳出影响云数据中心系统资产风险状况的因子;系统资产的风险值由两部分构成:资产价值,用A表示;风险指数,用RI表示;影响风险指数的有四个因子:告警数量,用Num表示,告警类型,用Cate表示,告警级别,用Levl表示,告警威胁程度,用Seve表示;各个因子的含义如下:告警数量,是指在一个时间段内,云数据中心某个主机上检测到的告警数量;告警类型,是指某个时间段内,主机检测到的告警类型;告警级别,是指常见的入侵检测系统或工具,在对潜在的安全事件进行报警时,对报警事件赋予的等级,来告诉用户该事件对主机可能造成的威胁的大小;告警威胁程度,是指告警信息对系统产生的危害程度;第二步:风险组成因子的获取及量化将一个资产的状态设定为无风险(S<sub>1</sub>)、有风险(S<sub>2</sub>)和不确定(ε);这里都以OSSEC作为基础平台来描述风险评估因子数据的获取和量化方法;(1)告警数量(Num)的获取及量化在入侵检测系统中,有自己特定的数据库或文件用来存储各个时间段内发生的告警信息;OSSEC发出的告警信息格式如下:告警信息=(id,server_id,rule_id,timestamp,location_id,src_ip,dst_ip,src_port,dst_port,alertid)它对应的含义是:告警信息=(id标识,服务器的id,对应的规则id,时间戳,安全事件位置id,源ip地址,目的ip地址,源端口,目的端口,报警id)根据告警信息的格式,想要获取某个agent的一段时间内的告警数量,可以以目的ip地址(dst_ip)和时间戳(timestamp)为判断依据来设定区间;假如,希望获取目的ip地址为DIP<sub>0</sub>在T<sub>0</sub>之前n分钟之内的告警数量,可以通过以下两步完成:(1)取最新的告警信息的时间戳为T<sub>0</sub>,获取之前n分钟的所有agent端的告警信息,那么需要从后往前遍历,满足T<sub>0</sub>‑T<sub>i</sub>≤300的数据都统计在内;(2)将获取的这些数据以dst_ip进行分组,获取dst_ip值为DIP<sub>0</sub>的一组数据,数据的总量就是希望获取的Num值;在获取Num值后,需要判断它对于资产的风险是怎样的;在这里,设定不同的区间,用函数来表示告警数量Num对S<sub>1</sub>、S<sub>2</sub>的支持情况;定义r<sub>ij</sub>表示第i个风险因子对状态S<sub>j</sub>的隶属度,则有:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>r</mi><mn>11</mn></msub><mo>=</mo><mfenced open='' close=''><mtable><mtr><mtd><mrow><mo>(</mo><mi>Num</mi><mo>&lt;</mo><mo>=</mo><msub><mi>n</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>Num</mi><mo>></mo><msub><mi>n</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000530570960000021.GIF" wi="365" he="140" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>r</mi><mn>12</mn></msub><mo>=</mo><mfenced open='' close=''><mtable><mtr><mtd><mrow><mo>(</mo><mi>Num</mi><mo>&lt;</mo><mo>=</mo><msub><mi>n</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><msub><mi>n</mi><mn>1</mn></msub><mo>&lt;</mo><mi>Num</mi><mo>&lt;</mo><mo>=</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>Num</mi><mo>></mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000530570960000022.GIF" wi="893" he="323" /></maths>公式1的含义表示当告警数量小于或等于n<sub>1</sub>时,认为资产当前无风险的可能性为<img file="FDA0000530570960000023.GIF" wi="185" he="108" />有风险的可能性为0;在(n<sub>1</sub>,n<sub>2</sub>]这个区间内,有风险的可能性用简单的线性关系表示为<img file="FDA0000530570960000024.GIF" wi="176" he="108" />超过最大阀值n<sub>2</sub>就直接设定为1;两个阀值n<sub>1</sub>、n<sub>2</sub>的设定由专家或管理员根据历史数据或经验进行设定,在不同的阶段两个值可以发生变化;(2)告警类型(Cate)的获取及量化OSSEC已经将能识别出的异常行为进行了分类,储存在category(cat_id,cat_name)表中,共包含139种;在signature_category_mapping(id,rule_id,cat_id)表中,OSSEC对rule_id和category_id进行了映射,因此将alert表与signature_category_mapping进行连接操作,就可以得到告警类型的数量,即Cate值;告警类型的多少与资产风险程度存在一定的线性关系,与告警数量Num的表示方式类似,这里直接写出隶属函数如下:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>r</mi><mn>21</mn></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mrow><mo>(</mo><mi>Cate</mi><mo>&lt;</mo><mo>=</mo><msub><mi>ca</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>Cate</mi><mo>></mo><msub><mi>ca</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000530570960000025.GIF" wi="413" he="170" /></maths><maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>r</mi><mn>22</mn></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mrow><mo>(</mo><mi>Cate</mi><mo>&lt;</mo><mo>=</mo><msub><mi>ca</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><msub><mi>ca</mi><mn>1</mn></msub><mo>&lt;</mo><mi>Cate</mi><mo>&lt;</mo><mo>=</mo><msub><mi>ca</mi><mn>2</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>Cate</mi><mo>></mo><msub><mi>ca</mi><mn>2</mn></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000530570960000026.GIF" wi="534" he="246" /></maths><maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow>]]></math><img file="FDA0000530570960000032.GIF" wi="84" he="71" /></maths>这里同样考虑了除无风险(S<sub>1</sub>)、有风险(S<sub>2</sub>)两种状态外的不确定状态(ε);两个阀值ca<sub>1</sub>、ca<sub>2</sub>的设定由专家或管理员根据历史数据或经验进行设定,在不同的阶段两个值可以发生变化;(3)告警级别(Levl)的获取及量化OSSEC中,有一张表是专门记录对Rule的描述;在Signature(id,rule_id,level,description)表中,详细记录了每条规则的告警级别和描述;OSSEC的规则是存储在不同的xml文件中,由用户自定义;OSSEC将告警级别分为从0到15共16级,并列为一表,如表1所示:表1 OSSEC告警级别描述<img file="FDA0000530570960000031.GIF" wi="1938" he="1966" /><img file="FDA0000530570960000041.GIF" wi="1939" he="706" />根据表1中的定义来设定告警等级的量化函数;首先将等级进行分类,这里不考虑等级4以下的告警信息;将4‑15分为4个部分,分别是[4,6],[7,11],[12,14],[15];由于等级15表示威胁一定发生,因此,如果遇到等级为15的告警信息,不需要考虑其他信息,直接将资产存在风险的可能性定为1;剩下3个部分在量化处理上需要设定权值来表示它们的严重程度,分别用w<sub>1</sub>,w<sub>2</sub>,w<sub>3</sub>来表示,它们满足w<sub>1</sub>&lt;w<sub>2</sub>&lt;w<sub>3</sub>;获取某个资产某个时间段内的等级信息,同样可以利用表的连接来实现;告警等级Levl与资产风险状态的函数定义如下:(isDanger=true||C<sub>1</sub>≠0||C<sub>2</sub>≠0)(isDanger=false&amp;&amp;Num≠0)(Num=0)     (3)<img file="FDA0000530570960000042.GIF" wi="935" he="247" />公式3中的三个权值w<sub>1</sub>,w<sub>2</sub>,w<sub>3</sub>的设定由专家或管理员设定,需表现出相对重要性;(4)告警威胁程度(Seve)的获取及量化对于同一主机的告警威胁程度(Seve)的量化过程如下:对特定时间段内全部alert信息进行遍历,查看每一条信息的dst_port值,这里定义为P<sub>dst</sub>;如果P<sub>dst</sub>=0,说明这条信息不是从外部引发的,无法辨别它是否是安全相关的事件,考虑到这类信息的安全等级较低,不会对主机风险造成很大的影响,因此,对这类信息,人为设定为可信的,Seve=1;如果P<sub>dst</sub>≠0,就将该端口和Nessus扫描出来的结果进行对比;Nessus对每台主机的扫描结果都会存储在以该主机命名的CSV文件当中;Nessus扫描出的结果分为critical,high,medium,low和information五个等级,每个有对应的CVSS(Common Vulnerability Scoring System)值,范围是0‑10,它描述了脆弱性的程度,可以直接将该值作为可信度的基准值;如果将端口信息就行比对,Nessus中对应的结果为critical,说明该端口运行的服务存在很严重的漏洞,告警信息成功的可能性很大;因此,每一条告警信息的Seve=CVSS/10;最终这组数据的Seve值,取各条记录的平均值;告警威胁程度(Seve)对于资产风险状态的支持度表示为:R<sub>41</sub>=1‑Seve R<sub>42</sub>=Seve   (4)第三步:基于DSFM的风险值计算(1)DSFM算法设计将模糊评价法中模糊集合理论和证据理论的思想结合作为实现动态评估方案的算法,将该算法命名为DSFM,它利用模糊集合理论来计算证据的Mass函数;证据理论中对证据可信度具有影响的因素看作是一个模糊集,利用相应的评判集进行评判,这个过程用隶属度函数来表示;使用隶属度函数来构成Mass函数,然后将证据合成,得到整个系统的风险状况;在证据理论中,对于辨别框架中的某个假设A,根据基本概率分配BPA分别计算出关于该假设的信任函数Bel(A)和似然函数Pl(A),组成信任区间[Bel(A),Pl(A)],用以表示对某个假设的确认程度;这里,在辨别框架Θ上基于BPA,m的信任函数和似然函数的定义分别为:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>Bel</mi><mrow><mo>(</mo><mi>A</mi><mo>)</mo></mrow><mo>=</mo><munder><mi>&Sigma;</mi><mrow><mi>B</mi><mo>&SubsetEqual;</mo><mi>A</mi></mrow></munder><mi>m</mi><mrow><mo>(</mo><mi>B</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000530570960000051.GIF" wi="431" he="160" /></maths><img file="FDA0000530570960000052.GIF" wi="962" he="88" />对于某一假设问题,证实它是否真实可能有来自多方不同的证据,如何对这些证据进行合成得到最接近真实的答案呢在证据理论中定义了多个证据组合的Dempster合成规则,也称证据合成公式,其定义如下:对于<img file="FDA0000530570960000053.GIF" wi="196" he="71" />Θ上的两个mass函数m<sub>1</sub>,m<sub>2</sub>的Dempster合成规则为:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>m</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>m</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>A</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mi>K</mi></mfrac><msub><mi>&Sigma;</mi><mrow><mi>B</mi><mo>&cap;</mo><mi>C</mi><mo>=</mo><mi>A</mi></mrow></msub><msub><mi>m</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>B</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><msub><mi>m</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>C</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000530570960000054.GIF" wi="1205" he="105" /></maths>其中,K为归一化常数;<img file="FDA0000530570960000055.GIF" wi="1152" he="158" />对于n个mass函数的Dempster合成规则定义如下:对于<img file="FDA0000530570960000061.GIF" wi="190" he="71" />Θ上的有限个mass函数m<sub>1</sub>,m<sub>2</sub>,…m<sub>n</sub>的Dempster合成规则为:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><msub><mi>m</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>m</mi><mn>2</mn></msub><mo>&CirclePlus;</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>&CirclePlus;</mo><msub><mi>m</mi><mi>n</mi></msub><mrow><mo>(</mo><mi>A</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mi>K</mi></mfrac><msub><mi>&Sigma;</mi><mrow><msub><mi>A</mi><mn>1</mn></msub><mo>&cap;</mo><msub><mi>A</mi><mn>2</mn></msub><mo>&cap;</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>&cap;</mo><msub><mi>A</mi><mi>n</mi></msub><mo>=</mo><mi>A</mi></mrow></msub><msub><mi>m</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>A</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>&CenterDot;</mo><msub><mi>m</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>A</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><msub><mi>m</mi><mi>n</mi></msub><mrow><mo>(</mo><msub><mi>A</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000530570960000062.GIF" wi="1555" he="98" /></maths>其中,K为归一化常数:<img file="FDA0000530570960000063.GIF" wi="1488" he="173" />最终的组合结果由任意两个证据相结合,再依次与其它证据递归结合得到;DSFM的算法过程分为以下几步:(1)利用证据理论的思想将影响系统风险情况的因素提取出来,得到评价风险的“证据”;(2)这些证据构成因素集U,利用评价集V对U进行评判得到评价矩阵;为了与证据理论结合,对评价集进行特殊处理,评价集中的元素必须是相互独立的,可以单独认定的;利用系统不同的风险状态来定义评价集V,而U与V之间的关系利用隶属度函数表示;(3)通过一定的数学分析创建出适合的隶属度函数r,其中r<sub>ij</sub>表示u<sub>i</sub>关于v<sub>j</sub>的隶属程度;(4)根据隶属函数r的含义,因素U<sub>i</sub>对评价因素V<sub>j</sub>的隶属程度,即为证据U<sub>i</sub>对状态V<sub>j</sub>的支持度,即证据U<sub>i</sub>的可信度,这满足证据理论中对mass函数的定义;因此,该隶属函数r可以与mass函数m进行转换;(5)利用公式(6)或(7)对转换后的Mass函数进行合成,得到最终的结果;(2)基于DSFM的风险指数计算在上一步骤中,通过计算得到了4个风险因子,告警数量(Num)、告警类型(Cate)、告警等级(Levl)、告警威胁程度(Seve)对于资产是否存在风险的支持度;在函数的设定过程中,可能存在一些数据区间使得无法判断这些数据是对S<sub>1</sub>的支持还是对S<sub>2</sub>的支持,把这类数据归纳到不确定的状态ε中,它们满足关系S<sub>2</sub>∩ε=S<sub>2</sub>;将量化后的数据转换为对于不同状态的mass函数的值,需要得到的值m(S<sub>2</sub>),即有风险的情况,公式如下:m<sub>i</sub>(S<sub>2</sub>)=r<sub>i2</sub>     (8)m<sub>i</sub>(ε)=1‑r<sub>i1</sub>‑r<sub>i2</sub>   (9)其中i表示第i个风险因子;最后,将这些证据进行合成,得到资产当前的风险指数RI,利用Dempster证据合成规则,得到将两个证据合成的公式为:<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><mfenced open='' close=''><mtable><mtr><mtd><msub><mi>m</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>m</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>S</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>m</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>S</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>&times;</mo><msub><mi>m</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>S</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>m</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>&epsiv;</mi><mo>)</mo></mrow><mo>&times;</mo><msub><mi>m</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>S</mi><mn>2</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>+</mo><msub><mi>m</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>S</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>&times;</mo><msub><mi>m</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>&epsiv;</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>m</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>&epsiv;</mi><mo>)</mo></mrow><mo>&times;</mo><msub><mi>m</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>&epsiv;</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000530570960000071.GIF" wi="1667" he="212" /></maths>将公式(10)中获得的结果再与m<sub>3</sub>和m<sub>4</sub>合成,得到最终的结果:<maths num="0010" id="cmaths0010"><math><![CDATA[<mrow><mi>RI</mi><mo>=</mo><msub><mi>m</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>m</mi><mn>2</mn></msub><mo>&CirclePlus;</mo><msub><mi>m</mi><mn>3</mn></msub><mo>&CirclePlus;</mo><msub><mi>m</mi><mn>4</mn></msub><mrow><mo>(</mo><msub><mi>S</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>11</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000530570960000072.GIF" wi="1089" he="83" /></maths>(3)基于DSFM的资产风险值的计算在得到风险指数RI之后,若已知资产的价值(A),那么风险值(R)就可以计算出来:R<sub>i</sub>=RI<sub>i</sub>×A<sub>i</sub>    (12)这里i表示第i个资产;那么整个数据中心或信息系统假设有N个资产,它的风险值(R<sub>Total</sub>)表示为:<maths num="0011" id="cmaths0011"><math><![CDATA[<mrow><msub><mi>R</mi><mi>Total</mi></msub><mo>=</mo><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></msubsup><msub><mi>R</mi><mi>i</mi></msub><mo>/</mo><mi>N</mi><mo>=</mo><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></msubsup><msub><mi>RI</mi><mi>i</mi></msub><mo>&times;</mo><msub><mi>A</mi><mi>i</mi></msub><mo>/</mo><mi>N</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>13</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000530570960000073.GIF" wi="1145" he="87" /></maths>公式(13)即是整个风险值的表示形式。
地址 200433 上海市杨浦区邯郸路220号