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