• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      多節(jié)點(diǎn)系統(tǒng)異常日志流量模式檢測方法?

      2020-01-02 03:46:04王曉東趙一寧肖海力遲學(xué)斌王小寧
      軟件學(xué)報(bào) 2020年10期
      關(guān)鍵詞:日志聚類閾值

      王曉東,趙一寧,肖海力,遲學(xué)斌,王小寧

      1(中國科學(xué)院 計(jì)算機(jī)網(wǎng)絡(luò)信息中心,北京 100190)

      2(中國科學(xué)院大學(xué),北京 100049)

      系統(tǒng)日志是由Linux 系統(tǒng)syslog 服務(wù)產(chǎn)生的日志,用于記錄系統(tǒng)中發(fā)生的各類事件信息,在大規(guī)模系統(tǒng)中具有很重要的意義.中國國家高性能計(jì)算環(huán)境是由國內(nèi)眾多超算中心和高校的計(jì)算集群組成的國家級大型高性能計(jì)算環(huán)境,采用中國科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心自主研發(fā)的網(wǎng)格環(huán)境中間件SCE[1]聚合了大量的通用計(jì)算資源,為全國眾多高校和研究機(jī)構(gòu)的用戶提供了優(yōu)質(zhì)的計(jì)算服務(wù).由于環(huán)境的系統(tǒng)中存在種類繁多的應(yīng)用和服務(wù),使得每個(gè)節(jié)點(diǎn)都會產(chǎn)生大量的系統(tǒng)日志,這使得最終的日志文件變得極為龐大,直接采用人工的方法處理這些日志顯然是一項(xiàng)不可能的任務(wù).而這些日志中往往包括各種異?,F(xiàn)象的信息,為了從大量的日志中提取出這些異常的流量信息,我們需要使用一些異常檢測方法對其進(jìn)行分析.

      傳統(tǒng)的流量異常檢測方法基于簽名,這種方法有一個(gè)顯著的局限性,它們的本質(zhì)是利用以前出現(xiàn)過的攻擊來過濾發(fā)現(xiàn)異常,即它們無法檢測出可能會出現(xiàn)的新異常.此外,即使一個(gè)新的攻擊被檢測到了,對應(yīng)的簽名也得到了開發(fā),但是該簽名在網(wǎng)絡(luò)上的部署通常會有延遲.這些限制使得基于機(jī)器學(xué)習(xí)的入侵檢測技術(shù)越來越受到關(guān)注.基于機(jī)器學(xué)習(xí)的檢測技術(shù)主要分為兩大類:誤用檢測和異常檢測[2].誤用檢測屬于機(jī)器學(xué)習(xí)中的有監(jiān)督算法,這種算法在使用時(shí)需要將所有訓(xùn)練樣本標(biāo)記為“正?!焙汀爱惓!?然后通過輸入這些有標(biāo)簽的數(shù)據(jù)進(jìn)行學(xué)習(xí)訓(xùn)練,更新模型參數(shù).當(dāng)新的流量特征輸入時(shí),就可以通過學(xué)習(xí)到的模型預(yù)測對應(yīng)時(shí)刻的流量為“正?!边€是“異常”.誤用檢測的主要優(yōu)點(diǎn)是在檢測已知類型的異常時(shí)具有很高的精度,但其缺點(diǎn)是無法檢測未知的流量異常.而異常檢測在使用時(shí)不需要提前得到數(shù)據(jù)的標(biāo)簽類型,屬于無監(jiān)督學(xué)習(xí)算法.其主要思想是:根據(jù)已知的大量數(shù)據(jù)進(jìn)行模型建立,然后自動地從這些數(shù)據(jù)中找到偏離數(shù)據(jù)中心的少量數(shù)據(jù)作為潛在可能的異常.因此,此類異常檢測技術(shù)可以自動地識別任何新的異常,但其缺點(diǎn)是可能出現(xiàn)誤判的情況,即將正常的流量標(biāo)記為異常.高性能計(jì)算環(huán)境中,多節(jié)點(diǎn)產(chǎn)生的日志復(fù)雜,內(nèi)容豐富,迭代性強(qiáng),因此使用無監(jiān)督學(xué)習(xí)算法較為合適.

      Vaarandi[3]提出了一個(gè)輕量級的、開源的、與平臺無關(guān)的基于規(guī)則的事件相關(guān)的工具,稱為SEC(簡單事件相關(guān)器),并在文獻(xiàn)[4,5]中描述了它的應(yīng)用經(jīng)驗(yàn).該工具的主要思想是:通過寫配置文件對日志中的不同日志類型進(jìn)行匹配,然后通過匹配的類型出現(xiàn)順序來進(jìn)行模式判定.比如匹配出一條端口掃描的日志,隨后匹配出一條防火墻生成的拒絕日志,則代表有人企圖訪問一臺主機(jī)的一種流量異常.因此,不同類型的日志按照一定順序出現(xiàn),可能代表一種異常的流量模式.其不足之處是:所有配置文件都必須自己完成,對于不同的日志系統(tǒng)都需要修改配置文件.

      本文在對日志進(jìn)行分析時(shí),首先自動地將日志分類,然后通過無監(jiān)督異常檢測方法得到異常日志類型的序列,并將這些序列所代表的異常日志流量模式進(jìn)行聚類,最后分析結(jié)果并得出結(jié)論.本文的整體流程除了設(shè)定少量閾值外,得到異常日志流量模式的過程全自動化進(jìn)行,這樣使得系統(tǒng)管理員對系統(tǒng)日志流量的監(jiān)控變得簡單.

      本文第1 節(jié)介紹相關(guān)研究內(nèi)容.第2 節(jié)描述系統(tǒng)日志前期的分類研究和后續(xù)討論中使用的數(shù)學(xué)符號.第3節(jié)對整體方法進(jìn)行描述.第4 節(jié)設(shè)置實(shí)驗(yàn)并對實(shí)驗(yàn)結(jié)果進(jìn)行分析.最后在第5 節(jié)進(jìn)行總結(jié)和展望.

      1 相關(guān)研究

      本節(jié)簡單討論一下日志模式分類、日志后驗(yàn)分析以及日志類型序列度量的相關(guān)研究.

      (1)日志模式分類

      Vaarandi[6]對于日志文件數(shù)據(jù)展示了一種創(chuàng)新的聚類算法SLCT,該聚類算法基于Apriori 頻繁項(xiàng)集,需要使用者提供支持閾值作為輸入.這個(gè)支持閾值既要控制這些算法的輸出,同時(shí)也是其內(nèi)部實(shí)現(xiàn)機(jī)理的基礎(chǔ).之后,他又在文獻(xiàn)[7]中改進(jìn)了日志的聚類算法,得到名為LogHound 的算法.這一算法是一種基于廣度優(yōu)先搜索的頻繁項(xiàng)集挖掘算法,用于從事件日志中挖掘頻繁模式.該算法結(jié)合了廣度優(yōu)先和深度優(yōu)先算法的特點(diǎn),同時(shí)考慮了事件日志數(shù)據(jù)的特殊屬性,因此比SLCT 更接近地反映Apriori 算法.SLCT 和Loghound 兩種算法都將那些不匹配任何頻繁模式的日志分類為離群值.Makanju 等人[8]引入了IPLoM 算法,這是一種用于挖掘事件日志簇的新算法.與SLCT 不同的是,IPLoM 是一種層次聚類算法,它以整個(gè)事件日志作為單個(gè)分區(qū)開始,并在3 個(gè)步驟中迭代分割分區(qū).與SLCT 類似,IPLoM 將事件日志行中的位置視為單詞,因此對單詞位置的移位敏感.由于其分層性,IPLoM 不需要支持閾值,而是需要其他一些參數(shù)(如分區(qū)支持閾值和簇優(yōu)度閾值),這些參數(shù)對分區(qū)的劃分進(jìn)行了細(xì)粒度的控制.IPLoM 相對于SLCT 的一個(gè)優(yōu)點(diǎn)是能夠使用通配符尾部(例如Interface * *)來檢測日志行模式,其作者將IPLoM 算法與SLCT 和LogHound 算法進(jìn)行比較,并得出其效果優(yōu)于上述兩種聚類算法的結(jié)論.此后,Vaarandi 和Pihelgas[9]提出了logcluster 算法,該算法對于文本事件日志進(jìn)行數(shù)據(jù)聚類和日志行模式挖掘,并修復(fù)現(xiàn)有聚類算法的一些缺點(diǎn).而本文使用基于字符匹配的分類算法,針對于國家高性能計(jì)算環(huán)境的系統(tǒng)日志進(jìn)行分類,代碼壓縮率和后續(xù)特征創(chuàng)建都顯示出了不錯(cuò)的效果.

      (2)日志后驗(yàn)分析

      一些學(xué)者在分析日志尋找相關(guān)異常方面進(jìn)行了研究,比如,Xu 等人[10]通過源代碼匹配日志的格式找出相關(guān)變量,通過詞袋模型提取對應(yīng)日志變量的特征,然后使用這些特征,通過主成分分析方法降維,根據(jù)主成分分析的最大可分性檢測異常的日志文件,最后使用決策樹可視化該結(jié)果.Fronza 等人[11]使用隨機(jī)索引為代表的操作序列,根據(jù)其上下文為每個(gè)日志中的操作特征化,然后使用支持向量機(jī)關(guān)聯(lián)序列到故障或無故障的類別上,以此來預(yù)測系統(tǒng)故障.Weiss 等人[12]研究了從有標(biāo)簽特征的事件序列中預(yù)測稀少事件的問題,基于遺傳算法的機(jī)器學(xué)習(xí)系統(tǒng),能夠在預(yù)測稀有任務(wù)上達(dá)到比較好的結(jié)果.Yamanishi 和Maruyama[13]提出了一種新的動態(tài)系統(tǒng)日志挖掘方法,以更高的置信度檢測故障癥狀,并發(fā)現(xiàn)計(jì)算機(jī)設(shè)備間的連續(xù)報(bào)警模式.Yuan、Mai 和Xiong[14]提出了一個(gè)名為Sher-Log 的工具,它利用運(yùn)行時(shí)日志提供的信息來分析源代碼,以推斷在失敗的生產(chǎn)運(yùn)行期間必須或可能發(fā)生的事情.它不需要重新執(zhí)行程序,也不需要知道日志的語義.它推斷關(guān)于執(zhí)行失敗的控制和數(shù)據(jù)值信息.Peng、Li 和Ma[15]應(yīng)用文本挖掘技術(shù)將日志文件中的消息分類為常見情況,通過考慮日志消息的時(shí)間特性來提高分類的準(zhǔn)確性,并利用可視化工具來評估和驗(yàn)證用于系統(tǒng)管理的有趣的時(shí)間模式.Wang[16]也使用機(jī)器學(xué)習(xí)方法對日志進(jìn)行后驗(yàn)分析,但是主要突出的是日志線上的可視化展示.本文使用文獻(xiàn)[10]中描述的異常檢測方法,但是輸入的日志類別對應(yīng)于基于字符匹配生成的分類結(jié)果,同時(shí),研究對象為日志類型的有序排列,在得到未知的異常日志流量模式上更有優(yōu)勢.

      (3)日志類型序列度量的研究

      日志類型序列的分類問題,實(shí)際上可以歸類為字符匹配模式.在字符匹配中,為了判別兩個(gè)序列的相似度,Hamming[17]在對兩個(gè)字符串之間進(jìn)行比較時(shí)使用了最直接的一對一匹配法,以兩個(gè)序列匹配的字符數(shù)目作為兩個(gè)序列之間的相似度衡量指標(biāo).Damerau 和Levenshtein[18]使用兩個(gè)序列之間的最小操作數(shù)(包括序列的插入、刪除、替換或兩個(gè)相鄰字符之間的轉(zhuǎn)換)作為兩個(gè)序列之間的相似度衡量指標(biāo).在序列對比方面,Needleman[19]和Smith[20]分別對序列進(jìn)行全局對比和局部對比,用以得到最符合兩個(gè)序列的全局序列和局部序列.本文在選擇日志序列特征時(shí)考慮到了字符串序列的特點(diǎn).根據(jù)Seker[21]在字符串匹配算法中對人名字符度量上選擇的方法,即前K個(gè)頻繁出現(xiàn)次數(shù)的字母項(xiàng)和其對應(yīng)數(shù)量作為識別序列的關(guān)鍵要素.將不同類型的日志抽象為不同的字符,根據(jù)其特點(diǎn)實(shí)現(xiàn)自適應(yīng)K值的挑選,在日志類型序列的比較上更為適合.

      2 背 景

      2.1 系統(tǒng)環(huán)境日志前期分類研究

      日志預(yù)處理需要完成的主要任務(wù)是如何將日志內(nèi)容壓縮并分類,這樣做既可以減少數(shù)據(jù)量,又有利于后續(xù)使用相關(guān)機(jī)器學(xué)習(xí)算法進(jìn)行分析.我們在前期工作中,使用了一種基于字符匹配的方法對系統(tǒng)日志的分類問題進(jìn)行研究,主要方法是根據(jù)字符匹配原則對系統(tǒng)日志進(jìn)行分類[22].日志模式匹配的核心思想是字符一一對應(yīng),即:將整體匹配的字符數(shù)與總字符數(shù)進(jìn)行比值,并將得到的數(shù)值與設(shè)定的閾值進(jìn)行對比,如果結(jié)果超過設(shè)定的閾值,則將這兩行日志定義為一類[22].

      我們在對日志類型進(jìn)行字符對比分類時(shí),為了減少分類的模式,在字符匹配時(shí)引入了最長公共子序列的概念[23],這樣使得計(jì)算時(shí)得到的匹配模式大量減少.得到分類結(jié)果后,可以驗(yàn)證日志的壓縮率達(dá)到99%以上.

      2.2 后續(xù)內(nèi)容中基本符號解釋

      后續(xù)系統(tǒng)設(shè)計(jì)和分析時(shí),我們?yōu)榱撕喕懻?將定義一些數(shù)學(xué)符號,具體解釋見表1.

      Table 1 Mathematical notation and interpretation表1 數(shù)學(xué)符號與解釋

      3 方法結(jié)構(gòu)

      為了適應(yīng)高性能計(jì)算環(huán)境下出現(xiàn)的流量異常檢測問題,我們根據(jù)系統(tǒng)中產(chǎn)生的日志特性,選擇適當(dāng)?shù)念A(yù)處理和無監(jiān)督機(jī)器學(xué)習(xí)算法來對系統(tǒng)日志的分析過程進(jìn)行整體的構(gòu)建與規(guī)劃,設(shè)計(jì)出一種異常流量模式檢測的方法,該方法的結(jié)構(gòu)主要包含3 部分:預(yù)處理模塊、異常處理模塊、分類模塊.各部分的功能簡述如下.

      (1)預(yù)處理模塊:根據(jù)日志匹配算法對輸入的大量日志進(jìn)行分類,輸出日志類別文件;

      (2)異常處理模塊:根據(jù)輸入的待分析日志以及上一步得到的日志類別文件,使用基于主成分分析的異常檢測方法,得出異常的時(shí)間片內(nèi)不同節(jié)點(diǎn)的異常類型序列;

      (3)分類模塊:根據(jù)輸入的大量異常類別序列,使用基于最長公共子序列的距離度量進(jìn)行層次聚類,得出不同的異常日志流量模式.

      根據(jù)各個(gè)功能的作用,我們得到日志整體結(jié)構(gòu)圖,如圖1 所示.

      Fig.1 Flow chart of log overall structure圖1 日志整體結(jié)構(gòu)流程圖

      3.1 預(yù)處理模塊

      異常流量模式檢測方法進(jìn)行預(yù)處理的目的是將日志類型記錄在本地的日志類型倉庫中,以便后期分析.日志類型提取的具體方法[23]是讀取一行日志,并與日志倉庫中的日志類型逐一進(jìn)行比較.設(shè)該條日志l包含n個(gè)單詞,日志倉庫中取出的待比較日志類型l′包含m個(gè)單詞,則定義l與l′的相似度為

      其中,|LCS(l,l′)|表示l與l′的最長公共子序列的單詞數(shù)量.計(jì)算出S(l,l′)后,即可將該值和預(yù)定義閾值t(0<t<1)進(jìn)行比較:如果結(jié)果小于該閾值,則將該類型加入到日志類型倉庫中;否則,讀取下一條日志進(jìn)行比較.其處理流程如圖2 所示.

      Fig.2 Flow chart of preprocessing module圖2 預(yù)處理模塊流程圖

      需要指出的是:預(yù)處理模塊分析的對象是所有待分析的系統(tǒng)日志,并根據(jù)這些日志進(jìn)行模式匹配,得到不同的日志類型,然后根據(jù)這些日志類型建立日志倉庫.其目的是化簡日志類型的維度,本身并沒有過濾掉任何待分析的日志.在后續(xù)進(jìn)行實(shí)際流量分析時(shí),可以將每個(gè)時(shí)間片內(nèi)出現(xiàn)的日志與日志倉庫中的日志類型進(jìn)行對比,抽象出不同類型的日志在對應(yīng)時(shí)間片內(nèi)出現(xiàn)次數(shù)的一個(gè)向量,以利于使用相關(guān)機(jī)器學(xué)習(xí)算法進(jìn)行分析.

      3.2 異常處理模塊

      日志的異常處理輸入需要用到上一小節(jié)得到的日志類型.我們首先根據(jù)日志倉庫中不同日志的類型生成日志類別文件,然后基于該日志類別文件,將需要具體分析的日志文件進(jìn)行特征創(chuàng)建,得到日志時(shí)間片向量,之后根據(jù)待分析日志的格式特點(diǎn)將日志文件的每一行數(shù)據(jù)按照數(shù)據(jù)表的格式存儲,得到結(jié)構(gòu)化的日志數(shù)據(jù),最后將上述得到的3 個(gè)文件加載,并使用無監(jiān)督異常檢測方法進(jìn)行分析,即可得到對應(yīng)具有異常流量特征的時(shí)間片.具體實(shí)現(xiàn)方法如下.

      (1)特征創(chuàng)建

      我們首先在內(nèi)存中加載待分析日志,然后根據(jù)日志的時(shí)間計(jì)算出時(shí)間戳,在得到時(shí)間戳后,即可根據(jù)時(shí)間戳的大小將日志按時(shí)間順序進(jìn)行排序,并根據(jù)實(shí)際情況把日志按照給定的時(shí)間片進(jìn)行拆分,每一個(gè)時(shí)間片可以作為一個(gè)樣本的輸入向量.該向量的每一個(gè)維度代表一種類型的日志,而其對應(yīng)的數(shù)值等于該類型在當(dāng)前時(shí)間片段內(nèi)出現(xiàn)的次數(shù).例如:如果取時(shí)間片為5 分鐘,并且假設(shè)在t1時(shí)間片內(nèi)得到的日志可見表2.

      Table 2 Log in t1 time slice表2 t1 時(shí)間片內(nèi)得到的日志

      根據(jù)該時(shí)間片內(nèi)不同類型日志出現(xiàn)的次數(shù),可以得到的樣本輸入向量見表3 中的t1行.

      Table 3 Log type’s vector of time slice表3 時(shí)間片日志類型向量

      表3 代表待處理日志經(jīng)分析后得到的輸入矩陣,其中,n代表預(yù)處理模塊中使用日志模式匹配得到的日志類型數(shù)量,m代表待分析日志按照固定時(shí)間片分割的時(shí)間片個(gè)數(shù).假設(shè)待分析日志的總時(shí)間跨度為T,則可得到.根據(jù)上述方法即可將待分析日志轉(zhuǎn)換為m行、n列的數(shù)據(jù)矩陣,該矩陣每行代表一個(gè)樣本數(shù)據(jù),每列代表一個(gè)樣本的特征段位.

      (2)基于主成分分析的流量異常檢測

      主成分分析是一種常用的機(jī)器學(xué)習(xí)算法,該算法在推導(dǎo)過程中使用了最近重構(gòu)性原理,即:將高維的數(shù)據(jù)映射到低維空間中,使得每個(gè)高維空間中的數(shù)據(jù)映射到低維空間后的距離之和達(dá)到最小.這樣做使得原始數(shù)據(jù)投影到低維空間時(shí)的距離最小,所以當(dāng)找到這個(gè)最近重構(gòu)的低維空間后,計(jì)算出原空間樣本點(diǎn)到低維空間的距離,該距離即可以作為異常與否的度量標(biāo)準(zhǔn).即:該距離越大,原來數(shù)據(jù)更可能是異常數(shù)據(jù).該方法的具體實(shí)現(xiàn)步驟如下.

      步驟1 將m行n列的數(shù)據(jù)矩陣A輸入,將所有數(shù)據(jù)中心化得到矩陣B.

      步驟2 解得BTB的特征值λi(i=0,1,…,n).注意:這里需要自己選擇降維后的方差比重,這里我們選擇90%為方差比重.帶入計(jì)算使得>90%.

      步驟3 將得到數(shù)值最高的k個(gè)特征向量V1,V2,…,Vk組成矩陣P=[V1,V2,…,Vk],計(jì)算該矩陣的正交投影矩陣為VP=P(PTP)-1PT=PPT.

      步驟4 如果原來的向量為y,則該向量到其映射的子空間的歐幾里德距離可以通過計(jì)算平方預(yù)測誤差SPE=||ya||2得到.注意:其中,ya是y到異常子空間sa上的投影,并且可以通過式子ya=(I-VP)y=(I-PPT)y計(jì)算得到.

      步驟5 根據(jù)上述算法計(jì)算出每一個(gè)點(diǎn)到子空間的距離,將其與檢測閾值Qα進(jìn)行比較:如果SPE=||ya||>Qα,則標(biāo)記y是異常的.其中,Qα表示在(1-α)置信水平下SPE 殘差函數(shù)的閾值統(tǒng)計(jì)量.基于主成分分析檢測的方法來源于文獻(xiàn)[10],其檢測的異常數(shù)值Qα可用如下公式得到[24]:

      公式中的λj代表樣本數(shù)據(jù)協(xié)方差矩陣第j個(gè)主成分投影在子空間的特征值.Cα表示標(biāo)準(zhǔn)正態(tài)分布的1-α百分位數(shù).

      上述方法進(jìn)行異常檢測的基本原理是:系統(tǒng)在產(chǎn)生不同類型的日志時(shí),在正常情況下,各個(gè)類型日志出現(xiàn)的比例趨于穩(wěn)定.如果各個(gè)類型日志在某些時(shí)間段內(nèi)出現(xiàn)大量的比例失衡的情況,則很有可能在這個(gè)時(shí)間片內(nèi)有異常的情況發(fā)生,則這些時(shí)間片段需要重點(diǎn)關(guān)注和分析.

      3.3 分類模塊

      日志異常模式是由不同類型的日志有序連接而成的.單個(gè)節(jié)點(diǎn)的異常日志流量模式可定義為日志類型的有序排列.單獨(dú)一種日志類型的出現(xiàn)并不能說明什么問題,比如單獨(dú)出現(xiàn)一次T7(認(rèn)證失敗)類型的日志,可能是由于用戶不小心密碼輸入錯(cuò)誤引起的.但是如果在一定的時(shí)間片內(nèi),同一個(gè)主機(jī)頻繁出現(xiàn)T7(認(rèn)證失敗)類型日志、T11(密碼錯(cuò)誤)類型日志、T3(連接斷開)類型日志,則說明該類型序列可能是一種暴力破解登錄的嘗試.因此,異常模式提取的思想就是在異常時(shí)間片內(nèi)找到同一個(gè)主機(jī)產(chǎn)生的日志類型的關(guān)聯(lián)規(guī)則,然后得到異常日志流量模式.

      (1)異常流量篩選

      將日志時(shí)間片向量帶入上一小節(jié)中介紹的方法,即可得到日志流量中對應(yīng)的異常時(shí)間片.我們統(tǒng)計(jì)出正常、異常時(shí)間片中不同類型日志出現(xiàn)數(shù)量的分布,計(jì)算出其對應(yīng)正常、異常日志和出現(xiàn)數(shù)量的中位數(shù)來進(jìn)行后續(xù)比較.根據(jù)比較的差值來得出正常、異常時(shí)間片主要差異的日志類型.

      為了將時(shí)間片內(nèi)所有的日志類型序列得到,我們單獨(dú)將每個(gè)異常時(shí)間片進(jìn)行抽離.對于每個(gè)單獨(dú)的異常時(shí)間片,根據(jù)不同節(jié)點(diǎn)將對應(yīng)的日志類型序列記錄下來.比如某個(gè)時(shí)間片內(nèi)出現(xiàn)了異常,我們將時(shí)間片內(nèi)的全部日志提取出來,根據(jù)這些日志數(shù)據(jù)得到所有節(jié)點(diǎn)名,之后根據(jù)節(jié)點(diǎn)名單獨(dú)挑選出每個(gè)節(jié)點(diǎn)在對應(yīng)時(shí)間片內(nèi)的所有日志類型,組成一個(gè)日志類型序列.這些序列中有許多并非異常流量的數(shù)據(jù),因此我們根據(jù)兩個(gè)規(guī)則進(jìn)行異常類型序列的篩選,具體規(guī)則如下.

      A 該主機(jī)日志數(shù)量超過給定閾值HTN(host threshold number);

      B 該主機(jī)日志的類型包含前面檢測出的主要差異的日志類型.

      選擇機(jī)制A 的主要原因是:如果時(shí)間片內(nèi)出現(xiàn)的日志數(shù)量比較少,則說明該節(jié)點(diǎn)并沒有發(fā)生流量異?,F(xiàn)象,因此可以不予考慮.選擇機(jī)制B 的主要原因是,根據(jù)正常異常類型分布得到的是最能區(qū)別出正常與異常的日志類型.

      例如:檢測出的某一個(gè)異常時(shí)間片內(nèi)出現(xiàn)的日志見表2,則根據(jù)節(jié)點(diǎn)名得到3 個(gè)不同的日志類型序列:Node1產(chǎn)生的序列S1=T1,T3,T1,Node2 產(chǎn)生的序列S2=T0,T2,T1,Node3 產(chǎn)生的序列S3=T3,T1.假如設(shè)定的閾值為HTN=2,根據(jù)中位數(shù)得到的異常比正常多的日志類型為T3,則根據(jù)過濾規(guī)則A 將會把S3過濾掉,根據(jù)過濾規(guī)則B 將會把S2過濾掉,這樣過濾后留下的日志類型序列是S1.

      使用這兩種過濾機(jī)制篩選后,依然可以得到大量的異常流量類型序列.其中,各個(gè)序列之間有大量重復(fù)的流量序列特征,因此需要對這些日志類型序列進(jìn)行模式分類,建立異常日志流量模式庫.

      (2)基于最長公共子序列距離度量的層次聚類方法進(jìn)行異常流量分類

      層次聚類法是一種基于距離度量的聚類算法,其特點(diǎn)是可以根據(jù)距離閾值的變化得到原始數(shù)據(jù)的分類數(shù)目,因其顯示效果和解釋效果好,而在機(jī)器學(xué)習(xí)中非常常用.我們使用基于最長公共子序列的相似度算法對兩個(gè)日志類型序列計(jì)算距離,然后將上一小節(jié)得到的大量異常流量類型序列進(jìn)行層次聚類.使用最長公共子序列度量兩條日志類型序列,是因?yàn)槿罩绢愋偷挠行蚺帕锌梢詻Q定一個(gè)節(jié)點(diǎn)的異常日志流量模式.在實(shí)際運(yùn)算時(shí),我們認(rèn)為最長公共子序列匹配的日志類型數(shù)目越大,則代表兩條日志序列匹配的效果越好.為了使得兩個(gè)類型序列的相似度越高,距離越近,我們以如下方法定義兩條日志類型序列的距離.

      設(shè)兩個(gè)待比較日志類型的序列為S1和S2,通過最長公共子序列得到匹配的類型序列為S,則距離計(jì)算公式為

      例如,有兩條日志類型序列分別是S1=T7,T11,T7,T11,T3,T2,T1和S2=T7,T11,T7,T11,T2,則對這兩條日志類型序列進(jìn)行最長公共子序列比較后的結(jié)果見表4.

      Table 4 Comparison results of the longest common subsequence表4 最長公共子序列比較結(jié)果

      可以看出,得到的匹配序列為S=T7,T11,T7,T11,T2.根據(jù)上述公式,我們可以得到當(dāng)前變量:|S1|=7,|S2|=5,|S|=5,則計(jì)算得到這兩個(gè)序列之間的距離為.

      3.4 基于自適應(yīng)K項(xiàng)集的標(biāo)準(zhǔn)進(jìn)行類別選擇

      層次聚類中,我們選擇的距離度量僅能計(jì)算出兩條日志類型序列的距離,但無法將任意一個(gè)日志類型的序列映射到向量空間,這樣就無法通過求日志類型序列的幾何中心得到中心位置的日志類型序列.因此,我們需要從其他角度來處理這個(gè)問題.

      日志類型序列可以看成字符串?dāng)?shù)據(jù).Seker[21]在使用字符串匹配算法匹配人名時(shí),通過選擇人名中前K個(gè)頻繁出現(xiàn)次數(shù)的字母項(xiàng)和其對應(yīng)數(shù)量作為識別人名的關(guān)鍵要素.我們也可以使用相似的方法來確定日志類型序列的中心位置和單條日志距離其中心位置的距離.即,將同一種異常日志流量模式中所有出現(xiàn)的日志類型數(shù)量的平均值作為該異常日志流量模式的中心數(shù)量.在尋找最靠近中心數(shù)量的日志類型序列時(shí),考慮到日志序列類型較多,數(shù)量分布不均勻的特點(diǎn),因此不適合使用原文中固定K值法對序列進(jìn)行比較.在實(shí)踐中,我們提出一種自適應(yīng)K值的算法,該算法在計(jì)算不同類型日志中心距離時(shí),采用了平均流量的數(shù)值進(jìn)行比較,而對進(jìn)行比較的類型數(shù)目K的選擇采用如下公式:

      K=CountIf(AverageNumx>AverageTotalNum×Threshold),x=1,…,n.

      AverageNumx代表第x類型日志在該異常日志流量模式中出現(xiàn)次數(shù)的平均值,AverageTotalNum代表所有類別日志在該異常日志流量模式中出現(xiàn)的平均值之和,Threshold代表異常百分比閾值.在實(shí)際操作時(shí),我們將Threshold取值為.這樣選擇是因?yàn)樵诋惓A髁亢Y選時(shí),我們確定的日志數(shù)量閾值為HTN,即保證了篩選出來的每條日志異常流量所包含的日志數(shù)目大于HTN.因此,設(shè)定就保證挑選出的前K個(gè)頻繁類型的日志數(shù)量至少超過1 條.因?yàn)槿绻环N類型的日志數(shù)量低于1 條,則顯然為不頻繁類型.日志數(shù)目超過1條證明如下:

      在確定K值后,即可根據(jù)平均流量計(jì)算每條日志模式序列與中心流量之間的距離,第m個(gè)日志類型序列與中心之間的距離公式為

      其中,AverageNumi代表第i種類型日志在該日志類型序列集合中出現(xiàn)數(shù)量的平均值,TypeNummi代表第m個(gè)序列中第i種類別日志出現(xiàn)的數(shù)量.根據(jù)距離公式將所有距離值計(jì)算出來后,將所有序列計(jì)算的d值中結(jié)果最小的序列作為該類型異常流量的特征序列代表.

      假設(shè)上一小節(jié)聚類后得到的m類異常日志流量模式記為{Y1,Y2,…,Ym},第m類異常日志流量模式Y(jié)m包含的日志類型序列的集合記為,則自適應(yīng)最大k項(xiàng)集算法具體步驟如下.

      步驟1 讀取第w類日志流量模式的全部日志類型序列集合Yw=;

      步驟2 統(tǒng)計(jì)Yw包含的所有日志類型{Tw1,Tw2,…,Twt};

      步驟4 得到前K種頻繁日志類型∈{Tw1,Tw2,...,Twt},滿足在集合Yw包含的日志類型序列中出現(xiàn)數(shù)量的平均值大于閾值A(chǔ)T;

      步驟5 根據(jù)公式dm=計(jì)算所有序列對應(yīng)的距離{d1,d2,…,dnw};

      步驟6 得到最小距離dxw=argmin{d1,d2,…,dnw}對應(yīng)的序列Sxw即為該異常日志流量模式NMw;

      步驟7 返回步驟1 并重復(fù),直至得到所有異常流量模式NM1,NM2,…,NMm.

      4 實(shí)驗(yàn)結(jié)果與分析評價(jià)

      本節(jié)我們將第3 節(jié)介紹的方法用于國家高性能計(jì)算環(huán)境系統(tǒng)在實(shí)際工作中產(chǎn)生的系統(tǒng)日志中.我們選取其系統(tǒng)日志的secure 類別日志作為數(shù)據(jù)輸入.在日志分類時(shí)使用了2017 年7 月~2017 年12 月的日志進(jìn)行分類,得到了84 種類型的日志.考慮到日志在每天不同的時(shí)間段產(chǎn)生的異常日志流量模式的不同,因此我們將日志按照3 個(gè)時(shí)間段分段,即白天、晚上、深夜(參見表1).我們將時(shí)間片跨度設(shè)定為5 分鐘,然后按照上一小節(jié)介紹的方式得到輸入矩陣并進(jìn)行測試.

      4.1 日志異常檢測和篩選的分析評價(jià)

      本小節(jié)我們使用第3.2 節(jié)中介紹的基于主成分分析的異常檢測技術(shù)對實(shí)驗(yàn)日志進(jìn)行檢測,得到各個(gè)時(shí)間片的Q值并與模型的閾值Qα進(jìn)行比較,從而得到異常時(shí)間片.各個(gè)時(shí)間片的Q值和閾值Qα如圖3 所示.

      Fig.3 Q-value and threshold Qα figure of secure logs圖3 Secure 類型日志的白天模型Q 值和閾值Qα圖

      從圖3 可以看出,異常類型時(shí)間片均勻地分布在整個(gè)日志周期時(shí)間片內(nèi).根據(jù)得到的異常時(shí)間片,我們可以統(tǒng)計(jì)正、異常時(shí)間片內(nèi)不同類型日志的中位數(shù)的差異,經(jīng)過實(shí)驗(yàn)分析,異常比正常時(shí)間片內(nèi)日志類型的中位數(shù)差值為1 進(jìn)行區(qū)分,即可達(dá)到很好的過濾效果.通過該差異,我們進(jìn)行了第1 步過濾.第2 步過濾使用基于數(shù)量的過濾,實(shí)際過濾時(shí)我們?nèi)≈鳈C(jī)閾值數(shù)HTN=10 即可達(dá)到很好的過濾效果.根據(jù)這兩條規(guī)則進(jìn)行篩選后,最后得出的所有異常流量數(shù)目見表5.

      Table 5 Number of abnormal flow and its filtered表5 異常流量與過濾后的數(shù)目

      由表5 可以看出:通過我們的異常檢測方法和過濾規(guī)則,使得大量的流量片段數(shù)據(jù)壓縮成少量的日志類型序列,大大降低了后續(xù)分析的難度.

      4.2 日志層次聚類和關(guān)鍵類型挑選的分析評價(jià)

      本節(jié)介紹由上一小節(jié)得到的大量異常日志流量序列按照第3.3 節(jié)的方法進(jìn)行層次聚類的相關(guān)實(shí)驗(yàn).使用層次聚類時(shí)有兩個(gè)關(guān)鍵參數(shù)需要定義:一是不同數(shù)據(jù)之間的距離度量方法,二是不同簇之間的距離度量方法.不同數(shù)據(jù)之間的距離定義我們按照第3.3 節(jié)中介紹的距離公式進(jìn)行計(jì)算,而不同簇間距離度量方法具有多種不同的選擇.在實(shí)驗(yàn)中,我們先使用不同簇間距離度量方法進(jìn)行計(jì)算,然后根據(jù)結(jié)果計(jì)算其對應(yīng)的共表性相關(guān)系數(shù)(cophenetic correlation coefficient)[25]來進(jìn)行評價(jià).共表相關(guān)系數(shù)越大,表明效果越好.我們使用半年secure 類型日志的白天模型進(jìn)行計(jì)算,得到不同的簇間距離計(jì)算方法對應(yīng)的共表相關(guān)系數(shù),見表6.

      Table 6 Cophenetic correlation coefficient obtained by calculating the distance between different clusters表6 不同簇間距離計(jì)算方法得到的共表相關(guān)系數(shù)

      根據(jù)表6,我們選擇使用基于平均值距離標(biāo)準(zhǔn)方法進(jìn)行簇間距離的計(jì)算,因?yàn)樵摲椒▽?yīng)的共表相關(guān)系數(shù)為最大值0.55.最終得到的層次聚類圖如圖4 所示.

      Fig.4 Hierarchical clustering of the secure logs’ daytime sequence圖4 Secure 類型日志白天序列的層次聚類圖

      通過圖4 可以看出:所有數(shù)據(jù)在橫坐標(biāo)為1~3 內(nèi)大量且迅速地聚集,之后趨于穩(wěn)定.因此,選擇層次聚類的距離度量的閾值大致在相對較高的位置.在實(shí)際計(jì)算時(shí),我們選擇的閾值為3.5.使用該值進(jìn)行層次聚類得到的聚類結(jié)果既可以保證類別較少,又可以使得每個(gè)小類別的聚集程度比較高.按照該閾值,我們將半年的secure 日志早、晚、夜數(shù)據(jù)分別進(jìn)行層次聚類,得到日志流量類型序列.之后使用第3.4 節(jié)中所描述的自適應(yīng)K項(xiàng)集的方法進(jìn)行類別選擇,得到3 個(gè)時(shí)間區(qū)間內(nèi)日志異常類型序列的代表.結(jié)果得到的前K項(xiàng)類別數(shù)量平均值以及對應(yīng)的K值見表7.其中,距離幾何中心最近的日志異常類型序列比較長,這里就不再羅列.

      Table 7 Table of secure logs’ sequence表7 Secure 日志類型序列表

      由表7 可以看出,使用半年secure 類別日志產(chǎn)生的類型序列根據(jù)白天、晚上和半夜分別生成了5、3、3 類的異常序列.我們將這11 條異常序列繼續(xù)進(jìn)行層次聚類,結(jié)果如圖5 所示.根據(jù)該圖可以看出:白天的模式代表包含了大部分夜晚和半夜的模式代表,在滿足將所有原本模式代表都分開的前提下,一共可分為7 種異常日志流量模式,見表8.

      Fig.5 Hierarchical clustering of type sequences of secure log in day,night,and midnight圖5 Secure 類型日志的白天、晚上和半夜代表類型序列的層次聚類圖

      Table 8 Table of sequence type of secure logs表8 Secure 日志序列類型表

      我們將找出的6 大類異常日志流量模式NM0、NM1、NM2、NM3、NM4、NM5序列對應(yīng)的日志類型代表D0、D1、D2、D3、D4、N0的各個(gè)類型數(shù)量繪制的梯形圖繪制出來,結(jié)果如圖6 所示.

      Fig.6 Type number trapezoid diagram of secure logs圖6 Secure 型日志的類型數(shù)量梯形圖

      根據(jù)圖示,我們可以分析以下異常流量情景.

      · 情景0:流量序列中占據(jù)異常最重要比重的日志類型是T11(failed password for invalid user 0000 from〈IP〉 port 〈PORT〉 ssh2)和T7(pam_unix(sshd:auth):authentication failure).該種異常日志流量模式表明,此時(shí)間段內(nèi)可能有人進(jìn)行暴力破解密碼的行為;

      · 情景1:流量序列中占據(jù)異常最重要比重的日志類型是T11(同上)和T6(pam_unix(sshd:auth):check pass;user unknown).該種異常日志流量模式表明,此時(shí)間段內(nèi)出現(xiàn)大量登錄的行為,并且檢測通過了,說明系統(tǒng)密碼可能已經(jīng)被攻破;

      · 情景2:流量序列中占據(jù)異常最重要比重的日志類型是T7(同上)和T2(pam_unix(sshd:session):session opened/closed for user).該種異常日志流量模式表明時(shí)間段內(nèi)會話數(shù)量突然增多;

      · 情景3:流量序列中占據(jù)異常最重要比重的日志類型是T1(connection closed by 〈IP〉)和T11(failed password for root from 〈IP〉 port 〈port〉 ssh2).該種異常日志流量模式表明,此時(shí)間段內(nèi)可能有人進(jìn)行暴力破解密碼的行為;

      · 情景4:流量序列中占據(jù)異常最重要比重的日志類型是T1(同上)和T28(usr1:TTY=pts/0; PWD=〈PATH〉;USER=root; COMMAND=/bin/tail -f/var/log/messages).該種異常日志流量模式表明,該時(shí)間段內(nèi)用戶使用的命令突然增多;

      · 情景5:流量序列中占據(jù)異常最重要比重的日志類型是T11(同上)和T7(同上).該種異常日志流量模式與情景1 相同,但是出現(xiàn)的數(shù)量比情景1 高出很多.

      需要指出的是:由該方法得出的日志流量異常模式僅代表由機(jī)器輔助分析得出的流量異常情況,并不等同于該時(shí)間片內(nèi)發(fā)生了實(shí)際的用戶非法行為或系統(tǒng)錯(cuò)誤.具體是否存在需要處理的異常狀況,仍需要人工判斷.但該方法可以自動縮小異常狀況的觀測范圍,極大地減小了人工處理所需的工作量.

      4.3 算法效率方面的分析評價(jià)

      本小節(jié)統(tǒng)計(jì)出進(jìn)行日志異常檢測算法時(shí)在早、晚、深夜這3 個(gè)不同時(shí)間段的不同操作中各個(gè)步驟所用的時(shí)間,并對結(jié)果進(jìn)行分析與對比.上述討論中,半年的日志數(shù)據(jù)在不同時(shí)間段進(jìn)行檢測時(shí)各個(gè)階段所用時(shí)間詳見表9.

      Table 9 Time spent in each stage of the test in different time periods表9 不同時(shí)間段在進(jìn)行檢測的各個(gè)階段所用時(shí)間

      由表9 我們可以分析得出如下結(jié)論.

      (1)通過總時(shí)間的縱向?qū)Ρ任覀兛梢园l(fā)現(xiàn),本文系統(tǒng)在處理白天產(chǎn)生的流量數(shù)據(jù)所用的時(shí)間明顯多于晚上和夜里.這說明從總體來看,白天訪問高性能計(jì)算環(huán)境的人數(shù)較多,進(jìn)行的操作也較多,因此容易出現(xiàn)異常流量;

      (2)通過不同檢測階段的橫向?qū)Ρ任覀兛梢钥闯?層次聚類步驟消耗的時(shí)間較多.因?yàn)閷哟尉垲愃惴ū旧淼臅r(shí)間復(fù)雜度是O(n2logn)(這里的n代表待聚類序列的數(shù)量),同時(shí),我們選擇的距離度量基于最長公共子序列算法,該算法僅需得到子序列長度,無需構(gòu)造出最長公共子序列,其時(shí)間復(fù)雜度是O(mn)(這里的m和n分別代表待比較的兩個(gè)序列的長度).根據(jù)以上分析我們可以看出,層次聚類模塊處理流量數(shù)據(jù)時(shí)受到待分析日志的數(shù)量以及每個(gè)流量序列的長度影響較大.對比白天和晚上層次聚類算法的占比也可以看出:當(dāng)總時(shí)間較長時(shí)(白天>晚上),層次聚類所用時(shí)間的占比也會變大.

      需要指出的是:雖然本文介紹的方法在計(jì)算時(shí)較為費(fèi)時(shí),但是該方法所進(jìn)行的異常流量判別可以得到各個(gè)異常流量的情景,該步驟屬于異常流量情景數(shù)據(jù)建模.當(dāng)建模結(jié)束后即可得到各種異常流量情景,此時(shí)即可根據(jù)新的流量的數(shù)字特征與已經(jīng)得到的異常流量情景進(jìn)行對比,從而較快速地分析出流量的異常與否以及其所屬的異常流量情景.因此,后續(xù)可關(guān)注的一個(gè)研究方向是,如何將該方法得到的異常檢測模型運(yùn)用于實(shí)時(shí)線上的異常流量檢測中.

      5 總結(jié)和展望

      本文介紹了一個(gè)無監(jiān)督異常檢測方法自動挖掘系統(tǒng)日志的異常日志流量模式,該檢測方法可以自動找到系統(tǒng)日志的異常時(shí)間段,并統(tǒng)計(jì)時(shí)間段內(nèi)不同節(jié)點(diǎn)的日志出現(xiàn)序列.本文定義了日志類型序列代表異常日志流量模式,且基于日志類型序列的相似度進(jìn)行層次聚類.聚類過程中,可以全自動地得到最優(yōu)參數(shù).聚類結(jié)果根據(jù)日志類型的平均數(shù)量得到易于判斷的異常日志流量模式.我們使用該系統(tǒng)對國家高性能計(jì)算環(huán)境下半年產(chǎn)生的系統(tǒng)secure 類型日志進(jìn)行測試,最終得到6 種異常日志流量模式.本文在處理日志分類時(shí),采用的是字符串比較法.所以理論上,只要是ASCII 碼格式的日志都可以自動進(jìn)行分類,然后即可將單位時(shí)間的日志流量抽象成向量進(jìn)行后續(xù)的異常檢測處理.在實(shí)際使用中,本方法對于自然語言文本類型的日志適用性更好(該類型日志內(nèi)容通常為一個(gè)英文句子,易于分類),而對于純變量類型的日志適用性相對一般(例如tomcat 的access log).

      本文只是針對單一日志異常流量做了一些前期探索工作,未來還有很多值得關(guān)注的研究點(diǎn).今后的工作主要針對以下幾個(gè)方面:將該異常模式得出的結(jié)果運(yùn)用在流量的監(jiān)控和預(yù)測上;該方法用于不同種類的日志,通過不同種類日志的關(guān)聯(lián)關(guān)系進(jìn)行分析,以找到更全面的異常日志流量模式;基于日志類型序列的角度進(jìn)行更多不同維度的日志分析方法研究,例如日志類型序列的關(guān)聯(lián)性分析等.

      猜你喜歡
      日志聚類閾值
      一名老黨員的工作日志
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      小波閾值去噪在深小孔鉆削聲發(fā)射信號處理中的應(yīng)用
      基于自適應(yīng)閾值和連通域的隧道裂縫提取
      基于DBSACN聚類算法的XML文檔聚類
      電子測試(2017年15期)2017-12-18 07:19:27
      游學(xué)日志
      比值遙感蝕變信息提取及閾值確定(插圖)
      河北遙感(2017年2期)2017-08-07 14:49:00
      室內(nèi)表面平均氡析出率閾值探討
      基于改進(jìn)的遺傳算法的模糊聚類算法
      一種層次初始的聚類個(gè)數(shù)自適應(yīng)的聚類方法研究
      通河县| 罗江县| 永吉县| 固原市| 景谷| 平定县| 托克托县| 通河县| 健康| 大兴区| 尚义县| 东港市| 乌拉特后旗| 宜丰县| 湖口县| 新昌县| 长丰县| 商都县| 田林县| 师宗县| 砚山县| 奉节县| 定陶县| 阿巴嘎旗| 玛多县| 都江堰市| 公安县| 靖宇县| 临城县| 津南区| 綦江县| 九龙城区| 郴州市| 易门县| 奎屯市| 凌云县| 汉源县| 隆德县| 贵南县| 敦化市| 广元市|