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

完成數據挖掘后將異常網絡流量送入告警模塊產生告警信息,再將無異常流量信息文件刪除,整個異常網絡流量檢測即完成。
雖然網絡安全技術越來越先進,但是網絡攻擊技術的發展也不斷水漲船高,且計算機網絡大規模、爆炸式的增長,互聯網數據信息也越來越多,導致網絡攻擊的潛在可能性也越大。為了營造一個更加良性、健康的網絡生態環境,就需要研究更多、更有效的網絡安全保障方法。本研究提出的基于數據挖掘的異常網絡流量分析與檢測系統是一種快速、高效的異常流量檢測識別方法,能夠幫助網絡安全管理人員排查網絡異常,維護安全的網絡環境。