白宗 侯珂 尚夢(mèng)瑩
(鄭州工業(yè)應(yīng)用技術(shù)學(xué)院 河南省新鄭市 451100)
入侵檢測(cè)系統(tǒng)主要將入侵檢測(cè)技術(shù)植入到可部署系統(tǒng)中,以識(shí)別計(jì)算機(jī)網(wǎng)絡(luò)中違反安全策略的攻擊行為,并做出對(duì)應(yīng)的處理?,F(xiàn)階段針對(duì)入侵檢測(cè)的技術(shù)研究越來(lái)越深入,常用的入侵檢測(cè)方法包括免疫系統(tǒng)、數(shù)據(jù)挖掘、遺傳算法等。其中免疫系統(tǒng)法是將入侵行為視作免疫系統(tǒng)中的異己細(xì)胞,免疫系統(tǒng)就是識(shí)別異己細(xì)胞的過(guò)程,因此在入侵檢測(cè)系統(tǒng)中,免疫系統(tǒng)方法通常用于建立正常行為輪廓知識(shí)庫(kù)及異常行為檢測(cè),不過(guò)免疫系統(tǒng)方法對(duì)于策略違背或偽裝的異常,則不易檢測(cè)出來(lái)。遺傳算法的理論基礎(chǔ)是自然選擇,即分析自然進(jìn)化的過(guò)程,最終確定最優(yōu)解。在入侵檢測(cè)中應(yīng)用遺傳算法,系統(tǒng)會(huì)先對(duì)某種入侵事件做出假設(shè),并進(jìn)行檢測(cè),假設(shè)符合條件就保留,不符合條件就剔除,并針對(duì)保留的假設(shè)再進(jìn)一步檢測(cè),最終確定合的方法。在入侵檢測(cè)中應(yīng)用遺傳算法,雖然能夠獲得較好的異常檢測(cè)效果,但是該技術(shù)實(shí)現(xiàn)復(fù)雜,且對(duì)于誤用檢測(cè)效果不佳。數(shù)據(jù)挖掘則是從訓(xùn)練集中計(jì)算、分析出數(shù)據(jù)實(shí)體之間潛在的聯(lián)系,建立能夠反映數(shù)據(jù)實(shí)體關(guān)系的模型,數(shù)據(jù)挖掘的主要分析對(duì)象是海量的網(wǎng)絡(luò)數(shù)據(jù),因此非常適用于入侵檢測(cè)系統(tǒng)。
所謂楊顧名思義是指利用一定的算法從海量的網(wǎng)絡(luò)數(shù)據(jù)中挖掘出關(guān)鍵信息。數(shù)據(jù)挖掘的基本流程包括:首先,數(shù)據(jù)采集,即從數(shù)據(jù)庫(kù)或從信息庫(kù)中獲取相關(guān)數(shù)據(jù),針對(duì)選擇的數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理,消除噪音或干擾數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,便于后續(xù)數(shù)據(jù)挖掘的操作;數(shù)據(jù)預(yù)處理完成后再利用相關(guān)算法提取需要的數(shù)據(jù)模式,即數(shù)據(jù)挖掘;挖掘出來(lái)的數(shù)據(jù)信息通過(guò)知識(shí)表示環(huán)節(jié)在客戶端展示出來(lái),整個(gè)數(shù)據(jù)挖掘過(guò)程即完成。
常用的數(shù)據(jù)挖掘算法包括關(guān)聯(lián)規(guī)則、分類分析、聚類分析、序列模式。其中關(guān)聯(lián)規(guī)則是指從大數(shù)據(jù)中查找出相關(guān)性的數(shù)據(jù),主要包括兩個(gè)步驟,先是發(fā)現(xiàn)所有滿足最小支持閾值的頻繁項(xiàng)目集,然后再將項(xiàng)目集轉(zhuǎn)換為達(dá)到置信度閾值的關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則中適用于入侵檢測(cè)的算法包括Apriori、FP-growth等,不過(guò)在入侵檢測(cè)系統(tǒng)中采用傳統(tǒng)的關(guān)聯(lián)規(guī)則檢測(cè)網(wǎng)張絡(luò)數(shù)據(jù)中的可疑活動(dòng)或行為時(shí),可能會(huì)將所發(fā)現(xiàn)的所有項(xiàng)目集誤認(rèn)為同等重要,導(dǎo)致檢測(cè)效率低下,因此現(xiàn)在的很多入侵檢測(cè)系統(tǒng)中采用的關(guān)聯(lián)規(guī)則都是經(jīng)過(guò)改進(jìn)的。序列模式也是一種分析數(shù)據(jù)之間關(guān)系的方法,不過(guò)序列模式更側(cè)重于數(shù)據(jù)集中每條記錄之間的相關(guān)性、與時(shí)間的關(guān)系等,而關(guān)聯(lián)規(guī)則則側(cè)重于數(shù)據(jù)集中不同數(shù)據(jù)項(xiàng)的關(guān)系分析。序列模式是將具有時(shí)序的數(shù)據(jù)進(jìn)行排序,再將達(dá)到最小支持度閾值要求的頻繁序列挖掘出來(lái)。在入侵檢測(cè)系統(tǒng)中應(yīng)用序列模式方法可以準(zhǔn)確檢測(cè)出對(duì)有時(shí)間性類型的攻擊行為,但是一旦攻擊者掌握了正常網(wǎng)絡(luò)行為與時(shí)間的關(guān)系,就會(huì)偽裝攻擊行為,此時(shí)應(yīng)用序列模式算法就無(wú)法檢測(cè)出攻擊行為,導(dǎo)致網(wǎng)絡(luò)存在安全隱患。分類分析又稱為監(jiān)督學(xué)習(xí),主要是判定未標(biāo)記類別的數(shù)據(jù)所屬的實(shí)際類別。分類分析方法包括兩大部分,一是學(xué)習(xí)階段,主要將原始訓(xùn)練集中的噪聲、缺失值、異常值等清除,再選擇分類算法學(xué)習(xí),以解決目標(biāo)問(wèn)題,最后存儲(chǔ)最佳模型;二是分類階段,主要是對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理后,對(duì)數(shù)據(jù)集中的每條數(shù)據(jù)進(jìn)行預(yù)測(cè),判定其類別。由于分類分類主要針對(duì)數(shù)據(jù)集的用途及場(chǎng)景進(jìn)行預(yù)測(cè),因此可應(yīng)用該方法檢測(cè)網(wǎng)絡(luò)中的非法入侵行為,針對(duì)已經(jīng)被標(biāo)記實(shí)際類別的數(shù)據(jù)可使用分類算法進(jìn)行審計(jì),未被標(biāo)記實(shí)際類別的可應(yīng)用分類算法判斷是否為入侵行為。與分類分析不同,聚類分析又被稱為無(wú)監(jiān)督分析,該方法是根據(jù)數(shù)據(jù)之間的相似性劃分為不同的簇,每簇內(nèi)數(shù)據(jù)特征或?qū)傩韵嗨贫容^高,分類分析主要針對(duì)已經(jīng)進(jìn)行實(shí)際標(biāo)記的數(shù)據(jù)進(jìn)行學(xué)習(xí)、分類,聚類分析則是針對(duì)未被標(biāo)記的數(shù)據(jù)進(jìn)行劃分,因此聚類分析可以處理不同類型的數(shù)據(jù),噪聲數(shù)據(jù)對(duì)其影響也相對(duì)更小,且聚類分析可以聚類高維數(shù)據(jù),并能夠降低輸入次序的敏感性,對(duì)先驗(yàn)知識(shí)的依賴性更小,因此在入侵檢測(cè)中應(yīng)用聚類分析可以檢測(cè)出新的攻擊行為。
入侵檢測(cè)系統(tǒng)需要根據(jù)其檢查對(duì)象、檢查范圍進(jìn)行系統(tǒng)部署,通常部署于因特網(wǎng)接入路由器后的第一臺(tái)交換機(jī)上,或者服務(wù)器交換機(jī)上。系統(tǒng)核心是通過(guò)捕獲、過(guò)濾、分析網(wǎng)絡(luò)中的數(shù)據(jù)包發(fā)現(xiàn)網(wǎng)絡(luò)中存在的入侵行為。本研究中網(wǎng)絡(luò)數(shù)據(jù)流量的收集應(yīng)用Libcap數(shù)據(jù)采集工具,存儲(chǔ)數(shù)據(jù)庫(kù)采用My SQL,采用聚類分析與關(guān)聯(lián)分析算法確定入侵行為。系統(tǒng)主要包括管理控制、數(shù)據(jù)解析、數(shù)據(jù)預(yù)處理、聚類分析、關(guān)聯(lián)分析、入侵檢測(cè)、告警響應(yīng)等八個(gè)模塊,下文針對(duì)每個(gè)模塊的設(shè)計(jì)進(jìn)行詳細(xì)分析:
管理模塊主要針對(duì)用戶管理、日志管理及各子模塊進(jìn)行調(diào)度,配置聚類分析、關(guān)聯(lián)分析及入侵檢測(cè)模塊的相關(guān)參數(shù)。管理控制模塊采用B/S架構(gòu),數(shù)據(jù)解析及數(shù)據(jù)預(yù)處理模塊的開(kāi)關(guān)連接管理控制模塊,針對(duì)聚類分析模塊的參數(shù)配置、關(guān)聯(lián)規(guī)則的展示與配置,也是通過(guò)管理控制模塊來(lái)完成,此外,諸如用戶權(quán)限控制、系統(tǒng)開(kāi)關(guān)控制等常規(guī)操作均是通過(guò)管理控制模塊來(lái)實(shí)現(xiàn)。
數(shù)據(jù)解析模塊則主要用于協(xié)議數(shù)據(jù)包的采集與解析,通過(guò)解析數(shù)所包,將數(shù)據(jù)中有用的字段提取出來(lái),確定必要的統(tǒng)計(jì)屬性,最后將其轉(zhuǎn)換為易處理的格式,再經(jīng)過(guò)解析存儲(chǔ)于數(shù)據(jù)庫(kù)。可以說(shuō)系統(tǒng)功能的實(shí)現(xiàn)是從數(shù)據(jù)采集模塊開(kāi)始的,其包括兩個(gè)子模塊,即數(shù)據(jù)采集子模塊與協(xié)議分析子模塊。
其中數(shù)據(jù)采集子模塊主要負(fù)責(zé)檢測(cè)對(duì)象的收集,本研究中采用Libcap函數(shù)庫(kù)捕獲原始數(shù)據(jù)包,并統(tǒng)計(jì)流量,為保證所有流經(jīng)網(wǎng)卡的流量均能夠被監(jiān)聽(tīng),網(wǎng)絡(luò)接口設(shè)置為混雜模式,Libcap包括三個(gè)流程,即面向數(shù)據(jù)鏈路層的包捕獲、數(shù)據(jù)包的過(guò)濾及向用戶提供最終結(jié)果,其不僅可以統(tǒng)計(jì)流量,還能應(yīng)用于網(wǎng)絡(luò)協(xié)議分析器、網(wǎng)絡(luò)流量發(fā)生器等。通過(guò)pCap_Open_live()函數(shù)捕獲數(shù)據(jù)包描述字,作為其它函數(shù)的入?yún)⑹褂?。其中pcap_loop()函數(shù)主要負(fù)責(zé)捕獲數(shù)據(jù)包,并通過(guò)callback變量注冊(cè)自己的回調(diào)函數(shù),捕獲數(shù)據(jù)包后通過(guò)該函數(shù)可以進(jìn)行數(shù)據(jù)包的解析與存儲(chǔ),捕獲回調(diào)函數(shù)處理數(shù)據(jù)包。數(shù)據(jù)包的存儲(chǔ)可以通過(guò)pcap_dump()函數(shù)向pcap_dump_open()打開(kāi)的文件寫(xiě)出數(shù)據(jù)包,即可將數(shù)據(jù)包保存為文件。程序結(jié)束前需要關(guān)閉整個(gè)會(huì)話,通過(guò)函數(shù)pcap_close()即可實(shí)現(xiàn)。
入侵檢測(cè)模塊、告警響應(yīng)模塊需要的數(shù)據(jù)信息,由數(shù)據(jù)采集中的另一個(gè)子模塊——協(xié)議分析子模塊來(lái)實(shí)現(xiàn)的。要保證入侵檢測(cè)系統(tǒng)檢測(cè)結(jié)果的有效性,必須以充分的有效信息為基礎(chǔ),原始數(shù)據(jù)包中的數(shù)據(jù)表現(xiàn)為字節(jié)流的形式,不僅數(shù)據(jù)量大、冗余信息多,而且這種形式不適合入侵檢測(cè)系統(tǒng)的分析,因此就需要通過(guò)協(xié)議分析子模塊來(lái)提取有效信息,并進(jìn)行格式轉(zhuǎn)換,針對(duì)不同的協(xié)議進(jìn)行分析,保證各協(xié)議分析結(jié)果數(shù)據(jù)結(jié)構(gòu)的統(tǒng)一性。
在數(shù)據(jù)挖掘過(guò)程中算法無(wú)法處理缺值,需要數(shù)據(jù)預(yù)處理模塊對(duì)數(shù)據(jù)進(jìn)行缺值處理、清除噪聲點(diǎn)、分析及歸一化處理等操作,便于數(shù)據(jù)挖掘算法能夠處理。數(shù)據(jù)清理過(guò)程中,選擇部分選擇的屬性集,將冗余的、非必要的屬性去除;針對(duì)屬性集中的連續(xù)型屬性進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化處理,針對(duì)離散型屬性則進(jìn)行歸一化處理,預(yù)處理完成的數(shù)據(jù)保存至數(shù)據(jù)庫(kù)中。需要注意一點(diǎn),即數(shù)據(jù)清理時(shí),數(shù)據(jù)的協(xié)議類型不同,其結(jié)構(gòu)也不同,某些數(shù)據(jù)項(xiàng)在數(shù)據(jù)庫(kù)中可能會(huì)出現(xiàn)缺值現(xiàn)象,此時(shí)就需要人工補(bǔ)充為合適的默認(rèn)值,保證數(shù)據(jù)格式的統(tǒng)一性;此外,還要去除冗余的屬性,或者正常、異常數(shù)據(jù)中對(duì)于區(qū)分攻擊類型起不到作用的某些屬性值也要去除,以減少檢測(cè)的復(fù)雜程度。
聚類分析主要入侵檢測(cè)系統(tǒng)提供正常與異常聚類中心,關(guān)聯(lián)分析則為異常檢測(cè)模塊提供關(guān)聯(lián)規(guī)則,二者均為入侵檢測(cè)模塊的基礎(chǔ)。聚類分析模塊通過(guò)訓(xùn)練數(shù)據(jù)進(jìn)行聚類分析,得到正常及異常的聚類中心,并通過(guò)異常聚類中心區(qū)分異常檢測(cè)模塊中的正常數(shù)據(jù)與異常數(shù)據(jù)。選取初始聚類中心的方式有多種,本算法中提供兩種,一種是采取數(shù)據(jù)集中第一條數(shù)據(jù),另外一種則使用generateRandVect(vSize)生成隨機(jī)聚類中心。數(shù)據(jù)迭代過(guò)程中會(huì)重新劃分?jǐn)?shù)據(jù)集,涉及到多個(gè)聚類,因此每個(gè)數(shù)據(jù)計(jì)重新劃分后都要對(duì)所有聚類中心進(jìn)行重新計(jì)算。關(guān)聯(lián)分析模塊采用FP-Growth算法,其主要作用是挖掘異常規(guī)則作為入侵檢測(cè)模塊的知識(shí)庫(kù),對(duì)其中的聚類分析結(jié)果進(jìn)行矯正。聚類分析模塊中的異常聚類是關(guān)聯(lián)分析模塊的源數(shù)據(jù),挖掘出的關(guān)聯(lián)規(guī)則保存在數(shù)據(jù)庫(kù)中。
入侵檢測(cè)模塊是整個(gè)入侵檢測(cè)系統(tǒng)的核心功能模塊,其在進(jìn)行入侵檢測(cè)時(shí),數(shù)據(jù)采集模塊捕獲數(shù)據(jù)流量后,將要測(cè)需要的屬性信息提取出來(lái),由數(shù)據(jù)預(yù)處理模塊對(duì)數(shù)據(jù)包進(jìn)行處理及分類,入侵檢測(cè)模塊再針對(duì)處理好的數(shù)據(jù)進(jìn)行檢測(cè),將最終的檢測(cè)結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中,并通過(guò)可視化界面向用戶展示檢測(cè)結(jié)果。如果系統(tǒng)檢測(cè)到入侵行為,就會(huì)通過(guò)告警響應(yīng)模塊做出反饋處理??梢哉f(shuō)入侵檢測(cè)的最終目的就是告警響應(yīng),以將系統(tǒng)入侵行為的破壞后果降至最低。入侵檢測(cè)系統(tǒng)的告警響應(yīng)包括兩種,一種是主動(dòng)響應(yīng),主動(dòng)追蹤入侵者發(fā)起攻擊的源地址,采取對(duì)應(yīng)措施禁止這類用戶訪問(wèn)網(wǎng)絡(luò),或者對(duì)系統(tǒng)中引起攻擊的缺陷進(jìn)行修正,也可以通過(guò)添加規(guī)則阻斷攻擊行為。雖然主動(dòng)告警響應(yīng)能夠阻斷正在進(jìn)行的攻擊,但是網(wǎng)絡(luò)中正常用戶的操作行為也會(huì)受到影響,因此多數(shù)情況下采用被動(dòng)告警響應(yīng)。
總之,雖然人們對(duì)于網(wǎng)絡(luò)安全問(wèn)題的研究越來(lái)越深入,然而網(wǎng)絡(luò)入侵行為也并沒(méi)有因此而減少,互聯(lián)網(wǎng)產(chǎn)品的更新?lián)Q代日新月異,各種安全漏洞也層出不窮。網(wǎng)絡(luò)攻擊行為不僅會(huì)影響到用戶的正常生活及工作,嚴(yán)重者還可能造成巨大的經(jīng)濟(jì)損失,因此研究入侵檢測(cè)技術(shù)具有重要的現(xiàn)實(shí)意義。本研究提出一種基于數(shù)據(jù)挖掘的入侵檢測(cè)系統(tǒng),其包括數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、聚類分析與關(guān)聯(lián)分析、入侵檢測(cè)及告警響應(yīng)等模塊,設(shè)計(jì)過(guò)程中利用模塊內(nèi)高內(nèi)聚、模塊之間低耦合的設(shè)計(jì)思路,經(jīng)過(guò)實(shí)驗(yàn)可知,本系統(tǒng)能夠保證較好的檢測(cè)效率,且系統(tǒng)誤報(bào)率也較低。