褚騰飛1,王建章2,許德森2,李東垣2,趙鵬2,王國相1,錢明1
(1. 北京郵電大學, 北京 100876; 2. 中華通信系統有限責任公司,北京 100070)
摘要:隨著互聯網的迅猛發展,單位內部用戶的監管和網上行為責任追溯審計方法成為必需。文中根據局域網的特點,針對局域網網絡行為審計問題,對相關技術進行了一定的研究和分析,提出了一種有效的基于TCP重組和快速多字符匹配的局域網行為審計方法,應用該方法可以更為高效地實現局域網中網絡行為的審計,實際測試表明該方法具有更高的效率和可操作性。
關鍵詞:局域網;行為審計;TCP重組;字符匹配
中圖分類號:TP306+.3;TP309.2文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.05.023
引用格式:褚騰飛,王建章,許德森,等.一種面向局域網的網絡行為審計方法的研究[J].微型機與應用,2017,36(5):76-79.
0引言
隨著互聯網的迅猛發展,許多單位內部局域網都和互聯網相連,互聯網給人們工作、生活帶來了極大的方便,同時也造成新的安全隱患。解決網絡安全主要采取的技術手段一般有防火墻、入侵檢測系統(IDS)[1]、加密應用等,它們對防止系統入侵[2]都有一定的效果,但在監控和處理網絡內部用戶訪問外部網絡、預防用戶泄漏重要資料等方面卻不盡如人意。審計[3]能夠提供系統事件的記錄,可更迅速和系統地識別問題,是網絡事故處理的重要依據。近年來,上網行為審計系統已成為網絡安全領域的研究重點之一,國內外相繼提出了一些安全審計系統的模型[4],如通過修改Linux內核實現的基于主機的安全審計系統[5],以及利用防火墻日志實現的安全審計系統[6]等,其審計的重點也逐步從傳統的本主機和系統調用過渡到網絡的訪問行為和網絡中的各種數據,但相關研究尚處在探索階段。
1局域網審計系統架構
根據局域網的特點,一般情況下,局域網內的主機通過交換機再經由網關和路由器連接外部互聯網。所以,本系統采用旁路的方式利用交換機鏡像技術[7]將局域網內的數據映射到被審計主機的端口,同時采用JPCAP技術[8]設置審計主機網卡為混雜模式來獲取通過網卡的所有數據。本系統通過對網絡數據的采集、分析、識別[9],實時動態監測通信內容、網絡行為和網絡流量,發現和捕獲各種敏感信息、違規行為,實時報警響應,全面記錄網絡系統中的各種會話和事件,實現對網絡信息的智能關聯分析[10]、評估及安全事件的準確定位。系統部署環境如圖1。
1.1系統體系
局域網審計系統由三層構成,分別為數據采集層、數據分析處理層以及應用展示層,該架構使得技術和業務有了良好的結合,IT基礎結構復雜性低,整體軟件開發、支持和維護成本較低,應用程序移植性良好,網絡訪問、管理簡便。系統架構如圖2。
數據采集層主要功能是基于JPCAP技術捕獲流經審計主機網卡的數據,并根據被審計主機的規則配置過濾掉無用的數據包,為數據分析處理層提供可靠的數據源。
數據分析處理層的主要功能包括:TCP重組、協議解析、內容審計。由于局域網的特性,網卡獲取到的TCP數據包有可能會出現重復包、序號錯亂和丟包等情況,所以線程進行內容還原操作之前,還需要對TCP數據包進行重組,保證截獲到的數據的有效性。TCP重組模塊將重組成功的TCP鏈接放入緩存隊列中,協議解析模塊將緩存隊列中的TCP鏈接取出并根據其端口號判斷所屬協議,根據相應的協議對數據包進行解析和內容還原。本系統主要針對郵件收發協議SMTP和POP以及HTTP協議進行解析。內容審計模塊對協議解析后得到的文本內容進行分析,根據數據庫中的敏感詞匯進行查找和匹配并生成相應的告警信息。
應用展示層基于B/S結構,采用SSH框架實現了Web端的行為審計系統平臺,該平臺功能包括審計系統的各種配置、審計結果的展示、審計人員管理等。
2關鍵算法
2.1TCP重組算法
TCP重組模塊在整個系統中處于承上啟下的位置,也是系統最重要的一環。捕獲網絡中的數據包有很多開源的工具包,例如Linux系統下的Libcap、Windows系統下的Winpcap[11]以及Java中間件JPCAP。但是,單單捕獲數據包并不能保證數據的正確性。因為同一數據流中的數據包可能經過不同的網絡路徑到達目的地,造成數據包的不同時延、丟失、亂序等現象出現。因此,將從網絡中間鏈路捕獲來的數據包整合成有序的、不丟失的有序數據流的技術成為了很多安全系統研究的關鍵技術。
基于以上考慮,本文基于哈希表和TCP鏈接序列號的TCP數據重組算法[12],根據TCP鏈接的特點提出了一個高效的TCP算法,使得哈希映射的沖突盡可能的低,同時利用哈希表實現簡單的特點,提高了TCP重組的效率。其基本思想是:對于一個捕獲的數據包,需要根據一個哈希函數將其映射到哈希表中,同時根據哈希表中TCP鏈接數據流的接收序列號來判斷該數據包是否合法。利用哈希表查找的高效性保證高速大流量TCP數據流重組,利用數據包的序列號保證數據包接收的正確性。TCP重組算法流程圖如圖3所示。
TCP會話重組算法的基本流程如下:
(1)利用JPCAP抓取TCP數據包,提取其四元組信息并記錄其序列號、確認號和標識位。對于任何一個TCP鏈接,都存在唯一的四元組:<源IP地址,目的IP地址,源端口,目的端口>。
將四元組的信息傳入哈希函數中會得到該TCP鏈接的一個哈希值,根據該哈希值可以定位到哈希表中該鏈接。
(2)在新的數據包到達時,如果這個包SYN為1,ACK為0,說明這是一個請求同步包,所以創建一個新的TCP鏈接放入HASH表中。同時初始化該鏈接中發送流的信息:狀態為SYN_SENT,下一個包的序列號為當前包的SEQ+1。
(3)如果數據包的SYN為1,ACK為1,根據該包的四元組的哈希值去哈希表中查找,如果找到,表示服務器同意建立鏈接,如果該數據包的ACK_NUM等于客戶端的下一個包的序列號,那么初始化該鏈接中服務器端的信息:狀態為SYN_RCVD,設置服務器端的期望接收序列號為數據包的ACK_NUM。
(4)如果數據包ACK為1,來自客戶端,且客戶端的狀態為SYN_SENT,服務器端狀態為SYN_RCVD,且它的序列號與服務器端期待接收的序列號相等,則連接建立成功,更新客戶端和服務器端狀態為ESTABLISHED。
(5)如果數據包長度不為0或者標志位FIN為1,說明這是普通的數據包或者釋放連接的包。如果當前包的序列號等于接收數據流中期待接收的序列號,則把當前包加入到接收流中,如果這個包FIN為1,則要設置發送流的狀態為FIN_SENT,如果ACK同時也為1,通過接收流狀態為FIN_SENT,則更新其狀態為CONFIRMED,更新接收流的期待接收序列號為:數據包的長度+1;如果這個包FIN為0,則更新接收流的期待接收序列號為:數據包的長度。更新后遍歷接收流中的亂序包緩沖區,判斷是否有包符合接收流期待的序列號,如果有重復該步驟。
(6)如果包ACK為1,且接收流狀態為FIN_SENT,則更新其狀態為CONFIRMED,如果接收流和發送流都為CONFIRMED,則TCP鏈接完成接收。
(7)如果包RST為1,在哈希表中移除該鏈接。
2.2快速多字符串匹配算法
協議解析完成后,需要對解析后的文本內容進行敏感詞匯匹配,檢索是否存在敏感信息,從而保證局域網的安全。目前關于敏感詞匹配算法的研究已經比較成熟,其中使用范圍最為廣泛的是單模式和多模式匹配算法。單字符查找算法中,最著名的兩個是KMP算法和BM算法[13]。這兩個算法在最壞情況下均具有線性的查找時間。但是如果模式字符串不止一個而是多個模式字符串組成的集合,那么BM算法就不太適合。WM算法是一種典型的多模式匹配算法,它是在BM算法基礎上改進而來的高效匹配算法,WM算法具有很多優點,它使用多個字符組成的字符塊來進行匹配,不像其他算法的單個字符比較。前綴表的恰當運用,使其顯著降低了匹配過程中所消耗的時間,因此能夠取得良好的實際效果,使其在多模式匹配領域得到了很快的發展。
本系統實現了一種基于改進Trie樹的有限自動機(DFA)多模式匹配算法,DFA的基本功能是可以通過event和當前的state得到下一個state,即event+state=nextstate。在敏感詞匹配系統中,為了能夠應付較高的并發,應該盡量減少計算,而在DFA中基本沒有什么計算,有的只是狀態轉移。本系統采用改進Trie樹比矩陣更為簡單地實現DFA算法。改進的Trie樹由首字哈希表和子節點構成,每個敏感詞都能構成一棵Trie樹,構造Trie樹的過程中把字符參與構詞的位置信息定義成不同的狀態,這樣就構成一個有限的自動機。如果一個字符不是某個敏感詞的尾字,稱為中間態,用0表示,反之如果是尾字則用1表示,稱為結尾態。
根據以上描述,改進的Trie樹結構邏輯圖如圖4所示。
子節點是所有以當前字符為前綴的字符集合,子節點的數據結構采用哈希結構。敏感詞的首字形成的節點存放在首字哈希表中,子節點采用哈希結構,狀態用來判斷是否到達詞尾,改進的Trie樹邏輯結構如圖5所示。
在進行敏感詞匯匹配之前,需要把敏感詞庫加載到內存中構造Trie樹,構造Trie樹的算法如下:
(1)讀取字條首字,判斷Trie樹中是否有該字符,如果有跳轉步驟(2);如果沒有將其作為一棵Trie樹的頭節點插入首字符哈希表中,并設置狀態為中間態。
(2)讀取下一個字符,判斷Trie樹中是否存在該字符,如果有重復步驟(2);如果沒有則插入該字符,如果該字符為該詞的最后一個字符,設置狀態為結尾態,反之為中間態。
(3)重復步驟(2),直至最后一個字符。
(4)重復步驟(1),直至所有敏感詞插入完畢,Trie樹構造完成。
Trie樹構造完成之后就可以對文本進行快速多字符匹配了。匹配算法如下:
(1)依次讀取待匹配的字符,在Trie樹中首字符哈希表中查找是否有匹配的字符,如果沒有,跳轉(1),反之跳轉(2);
(2)判斷當前字符狀態,如果為中間態,讀取待匹配文本的下一個字符,在當前的子節點中查找是否存在該字符,如果不存在跳轉(1),反之跳轉(2)。如果當前字符為結尾態,則匹配成功,跳轉步驟(1)直至待匹配文本匹配完成。
2.3審計系統模型測試結果分析
本系統是基于TCP重組算法和快速多字符匹配算法的安全審計系統,針對這兩種算法對系統進行了測試。通過搭建一個小的局域網環境,瀏覽一定數量的網頁,記錄實際的TCP鏈接個數以及重組成功的TCP鏈接個數,測試結果如圖6。
從圖6中可以看出,隨著TCP鏈接個數的增多,基于該TCP重組算法的重組成功率會下降,這主要是因為在數據包數據比較多、網絡比較復雜的情況下,由丟包或者數據包亂序導致了重組失敗。
為了測試快速多字符串匹配算法的效率,選擇5 MB的字符串與AC算法和WM算法進行比較,測試環境為Win7,內存4 GB。測試結果如圖7。
由圖可知,快速多字符串匹配算法可以在一定程度上提高匹配的效率,并且隨著模式串數據的增加,本文的算法匹配速度就越有優勢。
3結束語
本文介紹了網絡行為審計的相關背景和研究現狀,分析了相關的技術,并以此為基礎提出了基于TCP重組和敏感詞匹配的局域網審計系統,該系統可以有效地檢測用戶的網絡訪問行為,及時發現非法訪問并發出報警,保證內部網絡的安全,更好地維護網絡安全并提高網絡信息的使用效率。另外,本文提出的TCP重組算法可以有效地實現TCP重組;快速多字符串匹配算法也比傳統的多字符匹配算法的效率高,實現簡單。
本文方法在前人的研究基礎上取得了一定的進步,但是仍舊存在著很大的不足,比如,在大并發量的情況下本系統還是會出現重組失敗以及匹配失敗的情況,所以如何使系統承受大的網絡吞吐量以及如何提高重組算法的成功率和敏感詞匹配算法的效率是需要繼續研究的課題。
參考文獻
[1] 周遠大.面向用戶行為的內網安全管理系統研究與實現[D].北京:北京郵電大學,2014.
[2] KUMAR G D, RAO C V G, SINGH M K, et al. Using jpcap API to monitor, analyze, and report network traffic for DDoS attacks[C]. 14th International Conference on Computational Science and Its Applications,2014:35-39.
[3] 王斌.上網行為審計系統的研究與實現[D].北京:北京交通大學,2011.
[4] 黃媛.基于局域網的安全審計組件的設計與實現[D].西安:西安電子科技大學,2014.
[5] 王波.LINUX內核級安全審計系統的設計與實現[J].電腦知識與技術,2008,2(14):57-58.
[6] Xia Qing.Log based network security audit system research and design[J].Advanced Materials Research, 2010, 129-131:1426-1431.
[7] 于進玉.面向無線局域網的輿情監控框架設計與實現[D].北京:北京郵電大學,2015.
[8] SHEN Z, WANG H.Network data packet capture and protocol analysis on jpcap based[C].International Conference on Information Management, 2009:329-332.
[9] 張運明.協議行為審計關鍵技術研究與實現[D].長沙:國防科學技術大學, 2010.
[10] 趙燦明,李祝紅.基于數據挖掘及數據分析的局域網用戶網絡訪問行為審計系統[J].通訊世界,2015(1):41-43.
[11] 付強,左仁輝.基于winpcap實現網絡監聽技術[J].電腦知識與技術, 2008, 2(13):624-627.
[12] 梁勇.網絡TCP數據流重組技術研究[J].信息通信,2012(6):35-36.
[13] WANG X, GE B Z, WANG W.A BM algorithm oriented on network security audit system[C].International Conference on E-business & Information System Security,2010:1-4.