晁緒耀
(鄭州職業(yè)技術(shù)學(xué)院,河南 鄭州 450001)
異常是指數(shù)據(jù)集產(chǎn)生于完全不同的機(jī)制、并非隨機(jī)偏差的、與眾不同的數(shù)據(jù),與其他數(shù)據(jù)顯著不同。異常流量檢測(cè)技術(shù)需要建立正常使用模式,并將系統(tǒng)或用戶行為與該模式做比較,對(duì)流量數(shù)據(jù)的偏離程度做出判斷[1]。在一個(gè)異常流量檢測(cè)系統(tǒng)中,無(wú)法保證所定義的度量可以將所有異常行為模式準(zhǔn)確的表示出來(lái),因此需要不斷修正、更新正常模式。異常網(wǎng)絡(luò)流量包括:網(wǎng)絡(luò)掃描、DDoS攻擊、網(wǎng)絡(luò)蠕蟲(chóng)病毒、網(wǎng)絡(luò)故障及性能問(wèn)題導(dǎo)致的異常等。網(wǎng)絡(luò)掃描是常見(jiàn)的異常網(wǎng)絡(luò)流量之一,其主要表現(xiàn)就是在單位時(shí)間內(nèi)同一個(gè)源IP連續(xù)訪問(wèn)大量不同的目標(biāo)IP或同一目標(biāo)IP的不同端口[2]。DDoS攻擊即拒絕服務(wù)攻擊,大量不同源IP對(duì)同一目標(biāo)IP發(fā)送數(shù)據(jù)包,其主要目標(biāo)是消耗服務(wù)器端資源,迫使服務(wù)器停止響應(yīng),因此會(huì)在單位時(shí)間內(nèi)發(fā)送大量數(shù)據(jù)包,占用帶寬資源。網(wǎng)絡(luò)蠕蟲(chóng)病毒主要目的是消耗系統(tǒng)資源,造成大量網(wǎng)絡(luò)流量。蠕蟲(chóng)病毒主要利用操作系統(tǒng)漏洞傳播擴(kuò)展,且傳播方式多種多樣。僅僅通過(guò)局部鏈路上的流量測(cè)量數(shù)據(jù)很難檢測(cè)到這類(lèi)異常,需要分析全網(wǎng)的流量特征或者通過(guò)分析、統(tǒng)計(jì)全網(wǎng)的流量進(jìn)行檢測(cè)[3]。由網(wǎng)絡(luò)故障和性能問(wèn)題導(dǎo)致的異常最典型的就是文件服務(wù)器故障、網(wǎng)絡(luò)內(nèi)存分頁(yè)錯(cuò)誤、廣播風(fēng)暴、瞬間擁塞等。此外,用戶網(wǎng)絡(luò)資源使用不當(dāng)或者惡意下載也會(huì)導(dǎo)致流量異常,浪費(fèi)網(wǎng)絡(luò)帶寬。
隨著數(shù)據(jù)挖掘技術(shù)的不斷發(fā)展,數(shù)據(jù)挖掘領(lǐng)域也融入了統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)、數(shù)學(xué)等各個(gè)領(lǐng)域的算法,在異常網(wǎng)絡(luò)流量檢測(cè)中,很多方法都具有較強(qiáng)的實(shí)用性及指導(dǎo)意義。數(shù)據(jù)挖掘技術(shù)在異常網(wǎng)絡(luò)流量檢測(cè)中的過(guò)程如下:系統(tǒng)先收集入侵?jǐn)?shù)據(jù)集,捕獲流量;再對(duì)其進(jìn)行預(yù)處理,將其處理成適用于數(shù)據(jù)挖掘技術(shù)的形式;最后,對(duì)數(shù)據(jù)進(jìn)行模式提取,如能夠建立正常模式,系統(tǒng)就判定為正常流量,如不符合正常模式,系統(tǒng)就判定為未知流量數(shù)據(jù),產(chǎn)生警報(bào)[4]。這些方法用于異常流量檢測(cè)時(shí),為了更好地適應(yīng)流量數(shù)據(jù)或獲得更好的性能,每種方法會(huì)在特定的條件下進(jìn)行改進(jìn),或者與其他方法互相結(jié)合,達(dá)到優(yōu)勢(shì)互補(bǔ)的目的。具體而言,基于數(shù)據(jù)挖掘的異常網(wǎng)絡(luò)流量檢測(cè)常用的方法包括以下幾種。
基于分類(lèi)的異常檢測(cè)是根據(jù)訓(xùn)練數(shù)據(jù)集的特點(diǎn)構(gòu)建分類(lèi)器,如流量為未知類(lèi)別,可通過(guò)分類(lèi)器將其映射到已有類(lèi)別中,學(xué)習(xí)算法的輸入為已有類(lèi)型標(biāo)記的訓(xùn)練數(shù)據(jù)集、某類(lèi)特定的分類(lèi)算法等,數(shù)據(jù)集用于構(gòu)建預(yù)測(cè)分類(lèi)模型及分析分類(lèi)模型,以預(yù)測(cè)未知類(lèi)別的審計(jì)記錄數(shù)據(jù),最終根據(jù)預(yù)測(cè)分類(lèi)及分析模型判定數(shù)據(jù)類(lèi)型是否異常。有監(jiān)督學(xué)習(xí)方法由于利用了數(shù)據(jù)分類(lèi)標(biāo)記信息,所以檢測(cè)出異常數(shù)據(jù)的準(zhǔn)確率高于無(wú)監(jiān)督方法,不過(guò)有監(jiān)督學(xué)習(xí)方法也有一定的不足,比如該方法可以將未知類(lèi)別的數(shù)據(jù)分到已有類(lèi)別標(biāo)記中,但無(wú)法對(duì)新的入侵類(lèi)別做出準(zhǔn)確分類(lèi);該方法需要利用類(lèi)標(biāo),然而網(wǎng)絡(luò)中很難獲得準(zhǔn)確且具有代表性的標(biāo)記信息,因此學(xué)術(shù)界通常會(huì)采用半監(jiān)督學(xué)習(xí)方法標(biāo)記部分?jǐn)?shù)據(jù),再通過(guò)其他方法傳播標(biāo)記,標(biāo)記出無(wú)標(biāo)記數(shù)據(jù)[5]。
分類(lèi)算法叫做有監(jiān)督學(xué)習(xí)方法,聚類(lèi)算法則為無(wú)監(jiān)督學(xué)習(xí)方法,新收集的網(wǎng)絡(luò)流量無(wú)法通過(guò)有監(jiān)督學(xué)習(xí)方法做到準(zhǔn)確、快速地標(biāo)記類(lèi)別,因此聚類(lèi)方法通常應(yīng)用于當(dāng)前網(wǎng)絡(luò)環(huán)境的異常流量檢測(cè)。聚類(lèi)算法是將物理或抽象對(duì)象的集合分為多個(gè)小組,每個(gè)小組均由相似的對(duì)象組成,一個(gè)小組叫做簇,小組中的對(duì)象與其他小組中的對(duì)象有所不同。聚類(lèi)算法應(yīng)用于異常網(wǎng)絡(luò)流量檢測(cè)時(shí)無(wú)需標(biāo)記數(shù)據(jù)類(lèi)別,不用將數(shù)據(jù)按照訓(xùn)練數(shù)據(jù)或測(cè)試數(shù)據(jù)分類(lèi),因此可以處理網(wǎng)絡(luò)中異構(gòu)、高維的海量數(shù)據(jù),且聚類(lèi)算法具有較強(qiáng)的自適應(yīng)能力與自學(xué)習(xí)能力,反應(yīng)速度也更快。
數(shù)據(jù)挖掘領(lǐng)域中的數(shù)據(jù)通常以向量組的形式存在,數(shù)向量維數(shù)表明了數(shù)據(jù)的特征數(shù)。如果抽取數(shù)據(jù)特征過(guò)多就會(huì)出現(xiàn)問(wèn)題,過(guò)高的向量維數(shù)會(huì)增加向量之間的計(jì)算量,造成維數(shù)災(zāi)難的發(fā)生,并且某些聚類(lèi)算法中維數(shù)過(guò)高時(shí),相比在低維空間,兩個(gè)數(shù)據(jù)點(diǎn)在高維空間的距離匹分度更加不明顯。特征選擇算法就是從所有特征集合中選擇出具有代表性的子集在保留屬性的可解釋性的基礎(chǔ)上組成新的特征空間,一旦出現(xiàn)流量異常問(wèn)題,某些屬性取值就會(huì)發(fā)生急劇變化[6]。
基于數(shù)據(jù)挖掘的異常網(wǎng)絡(luò)流量分析檢測(cè)系統(tǒng)包括訓(xùn)練階段與異常檢測(cè)階段。在訓(xùn)練階段,將整理好的正常流量數(shù)據(jù)與異常流量數(shù)據(jù)輸出神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練,達(dá)到訓(xùn)練要求后再進(jìn)入異常檢測(cè)階段。系統(tǒng)采集實(shí)時(shí)網(wǎng)絡(luò)流量信息,將整理過(guò)的具有異常特征屬性的數(shù)據(jù)送出訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),最終判斷流量信息是否異常及異常的種類(lèi)。如果網(wǎng)絡(luò)異常流量無(wú)法準(zhǔn)確識(shí)別,將其特征屬性存入特征庫(kù)由網(wǎng)絡(luò)安全管理員進(jìn)行判斷,系統(tǒng)會(huì)針對(duì)異常流量生成告警信息,并在交互界面展現(xiàn)異常的類(lèi)型。基于上述需求,本研究提出的基于數(shù)據(jù)挖掘的異常網(wǎng)絡(luò)流量檢測(cè)系統(tǒng)包括:數(shù)據(jù)采集、數(shù)據(jù)整理、數(shù)據(jù)挖掘與異常檢測(cè)、告警4個(gè)基本模塊。
數(shù)據(jù)采集模塊的主要目的是為數(shù)據(jù)挖掘提供數(shù)據(jù)集,為保證網(wǎng)絡(luò)流量采集的實(shí)時(shí)性與完整性,本研究中系統(tǒng)設(shè)計(jì)采用了tcpdump工具。tcpdump工具兼具高效性與輕量級(jí)的特點(diǎn),不會(huì)對(duì)原系統(tǒng)性能產(chǎn)生影響,采集到的數(shù)據(jù)以文件的形式保存于系統(tǒng)服務(wù)器,再由數(shù)據(jù)整理模塊提取到檢測(cè)需要的特征屬性。Sniffer,tcpdump等Linux環(huán)境中常用的數(shù)據(jù)采集工具都是基于BPF的Libpcap函數(shù)庫(kù)實(shí)現(xiàn)的。其中,tcpdump是一款強(qiáng)大的網(wǎng)絡(luò)數(shù)據(jù)采集分析工具,其定義為dump the traffic on a network,其可對(duì)協(xié)議、主機(jī)、網(wǎng)絡(luò)及端口提供邏輯語(yǔ)句,功能強(qiáng)大,能夠靈活截取策略。tcpdump截獲的數(shù)據(jù)還是沒(méi)有完全解碼的十六進(jìn)制形式,可以采用帶“-w”參數(shù)的命令將其存儲(chǔ)于文件中,再利用其他程序?qū)ξ募M(jìn)行解碼,以方便、直觀地分析數(shù)據(jù),該部分功能由數(shù)據(jù)整理模塊來(lái)完成[7]。數(shù)據(jù)采集模塊設(shè)計(jì)過(guò)程中系統(tǒng)網(wǎng)卡采用混雜模式,用于采集正常流量及異常流量。Linux環(huán)境下需要添加對(duì)tcpdump進(jìn)程的守護(hù),以采集到實(shí)時(shí)的流量信息。
數(shù)據(jù)采集模塊采集到的數(shù)據(jù)是以十六進(jìn)制的形式存儲(chǔ)于服務(wù)器中,數(shù)據(jù)整理模塊則需要對(duì)采集到的數(shù)據(jù)進(jìn)行解析,提取需要的特征屬性,主要用于后續(xù)的數(shù)據(jù)挖掘。從某種程度上講,異常檢測(cè)的準(zhǔn)確性由特征屬性的選擇而決定的,因此數(shù)據(jù)整理模塊需要提取合適的異常流量特征屬性。本研究提出的異常網(wǎng)絡(luò)流量檢測(cè)系統(tǒng)主要對(duì)其實(shí)用性及檢測(cè)能力進(jìn)行評(píng)估,針對(duì)實(shí)時(shí)流量信息進(jìn)行設(shè)計(jì),文件解碼后取出異常檢測(cè)需要的特征性。在選擇特征屬性時(shí),采用以固定時(shí)間為單位進(jìn)行提取,降低數(shù)據(jù)挖掘部分的計(jì)算壓力,減少資源占用,降低對(duì)系統(tǒng)性能的影響。特征值信息以文件的形式保存下來(lái)。本模塊中特征屬于包含了不同尋常種類(lèi)的特征,包括TCP數(shù)據(jù)包中URG、ACK、PSH、RST、SYN、FIN標(biāo)志位置的包數(shù)量、協(xié)議數(shù)據(jù)包的長(zhǎng)度、IP數(shù)據(jù)包分片偏移量、ICMP數(shù)據(jù)包等。針對(duì)不同的屬性,結(jié)合常見(jiàn)的異常類(lèi)型計(jì)算正常情況下及異常情況下各種屬性相關(guān)的程度,可以得到以下幾種能夠?qū)?shù)據(jù)挖掘部分神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程進(jìn)行指導(dǎo)的異常流量特征屬性:
(1)tcp_pkt_rata描述單位時(shí)間段內(nèi)TCP協(xié)議報(bào)文數(shù)量與總報(bào)文數(shù)量的比;(2)udp_pkt_rate描述單位時(shí)間段內(nèi)UDP協(xié)議報(bào)文數(shù)量與總報(bào)文數(shù)量比;(3)icmp_pkt_rate描述單位時(shí)間段內(nèi)ICMP協(xié)議報(bào)文數(shù)量與總報(bào)文數(shù)量比;(4)syn_synack描述SYN位置報(bào)文數(shù)理SYN+ACK被置位報(bào)文數(shù)的比,正常情況下該值接近1;(5)syn_fin描述SYN報(bào)文個(gè)數(shù)與所有FIN置位的報(bào)文數(shù)比,該值正常情況下接近1;(6)rst_rate描述RESET置位報(bào)文數(shù)與TCP報(bào)文總數(shù)比;(7)icmp_udp描述CIMP不可達(dá)報(bào)文數(shù)與UDP報(bào)文數(shù)比;(8)reply_echo描述ICMP請(qǐng)求與ICMP應(yīng)答報(bào)文數(shù)比;(9)traffic_fitted描述單位時(shí)間段內(nèi)擬合到[0,1]范圍內(nèi)的流量大?。?10)pkt_fitted描述單位時(shí)間段內(nèi)擬合到[0,1]范圍內(nèi)的數(shù)據(jù)包數(shù)量。
異常流量特征與記錄時(shí)間具有密切相關(guān)性,因此在提取特征屬性將其轉(zhuǎn)化為單位時(shí)間內(nèi)UDP報(bào)文數(shù)量占總報(bào)文數(shù)量的比率等。通過(guò)本模塊將采集到的數(shù)據(jù)解碼成系統(tǒng)可以識(shí)別的格式,按照流量信息的源地址、源端口、包大小、協(xié)議等對(duì)流量數(shù)據(jù)包的基本信息進(jìn)行整理,計(jì)算出單位時(shí)間內(nèi)各個(gè)協(xié)議數(shù)據(jù)包數(shù)量占數(shù)據(jù)包總數(shù)的比值、數(shù)據(jù)包平均字節(jié)數(shù)等與異常種類(lèi)匹配的信息,并與基本信息一起記錄到.log文件中。采用shell腳本完成文件解碼及信息提取,間隔一定時(shí)間執(zhí)行shell腳本,解析.pcap文件提取特征信息,執(zhí)行腳本后將提取到的數(shù)據(jù)保存于本地,并刪除.pcap文件,避免記錄文件過(guò)大而影響系統(tǒng)性能的問(wèn)題[8]。
完成數(shù)據(jù)挖掘后將異常網(wǎng)絡(luò)流量送入告警模塊產(chǎn)生告警信息,再將無(wú)異常流量信息文件刪除,整個(gè)異常網(wǎng)絡(luò)流量檢測(cè)即完成。
雖然網(wǎng)絡(luò)安全技術(shù)越來(lái)越先進(jìn),但是網(wǎng)絡(luò)攻擊技術(shù)的發(fā)展也不斷水漲船高,且計(jì)算機(jī)網(wǎng)絡(luò)大規(guī)模、爆炸式的增長(zhǎng),互聯(lián)網(wǎng)數(shù)據(jù)信息也越來(lái)越多,導(dǎo)致網(wǎng)絡(luò)攻擊的潛在可能性也越大。為了營(yíng)造一個(gè)更加良性、健康的網(wǎng)絡(luò)生態(tài)環(huán)境,就需要研究更多、更有效的網(wǎng)絡(luò)安全保障方法。本研究提出的基于數(shù)據(jù)挖掘的異常網(wǎng)絡(luò)流量分析與檢測(cè)系統(tǒng)是一種快速、高效的異常流量檢測(cè)識(shí)別方法,能夠幫助網(wǎng)絡(luò)安全管理人員排查網(wǎng)絡(luò)異常,維護(hù)安全的網(wǎng)絡(luò)環(huán)境。