蔡旻甫
(攀枝花學院數學與計算機系,四川 攀枝花 617000)
云計算以互聯網作為通信支撐平臺,與傳統計算環境相比,其具有虛擬化、分布式和超大規模等特點,擁有強大的計算能力、海量的存儲空間和豐富的用戶信息,且互聯網具有很大的開放性。而傳統入侵檢測系統只是基于單一或者簡單網絡環境的入侵檢測,這樣傳統產品無法部署到云計算環境下進而及時部署成功,其檢測效果無法滿足云計算網絡安全標準。因此迫切需要開展云計算入侵檢測系統方面的研究,開發出云計算環境下的新的入侵檢測系統產品,為云計算產業的健康發展提供技術支撐。本論文將針對云計算環境下的入侵檢測系統進行全面深入的研究,開發以神經網絡技術為基礎的網絡入侵防御系統。
云計算環境的數據獲取主要是通過抓包工具實現的。為了成功地實現云計算環境中的入侵檢測,就必須能檢測到云計算網絡中的網絡、主機、操作系統以及云計算內部應用程序的運行狀態和數據操作行為。因此數據捕獲的類型必須包含:網絡和主機系統日志文件;目錄和文件的不期望改變;程序執行中的不期望行為;物理形式的入侵活動記錄;同時數據捕獲內容應該包含多方位、多層次,需要考慮到接入層、網絡層、系統層中的數據變動[1]。
接入層捕獲主要是指與云計算環境交互的邊界區域,例如訪問云計算服務時的用戶終端接入,一般情況下接入層的數據捕獲只需要通過防火墻就可以實現,大多防火墻都具有用戶接入日志記錄,日記記錄中一般都包含TCP、UDP、ICMP、OTHER等連接信息。
網絡層中的數據獲取一般通過網絡數據抓包工具來實現,例如常見的網絡抓包工具為Libpcap,通過Libpcap可以對網絡數據傳輸中的協議數據、數據包格式、數據包內容進行詳細分解與分析。
對于系統層捕獲,主要是指在把未知攻擊轉移到蜜罐或蜜網后,蜜罐或蜜網通過模擬真實的攻擊進行交互,實現對攻擊行為的數據捕獲。系統層捕獲的信息包括惡意進程、注冊表異動和文件異動。
數據分析主要是指首先獲取入侵行為特征、關鍵字、短語,然后與系統已有規則特征進行匹配的技術。其主要數據分析技術有:文件屬性分析;文件數字摘要分析;日志分析;數據解密;密碼破譯;由入侵代碼格式推斷出作者;挖掘同一事件不同證據之間聯系的分析;對電子介質中被保護的信息強行訪問等。
1.2.1 數據分析的數學方法
云計算環境下的數據分析通常有統計分析和完整性分析兩種方式。
統計分析主要是指將信息綜合起來進行定量處理技術,是對收集到的有關數據資料進行整理歸類并進行解釋的過程。通過統計分析得到正常行為的特征庫后,就可以用來對未知行為數據進行分析和判別了。
完整性分析。在入侵檢測中,需要關注網絡或主機系統中的數據、文件或規定對象是否被改變,例如數據、文件和目錄的內容及屬性是否被改變。當前數據完整性分析技術主要是通過消息摘要函數來驗證,常用的函數是MD5算法來校驗被保護對象最微弱的完整性改變。
1.2.2 數據分析的智能方法
數據分析的智能方法主要有數據挖掘、神經網絡等,本文主要是對這兩種智能分析方法做詳細分析[2-3]。
數據挖掘方式進行數據分析主要是通過計算機對數據信息進行分解,并提取有用戶知識信息的技術。其挖掘分類根據環境、類型、對象不同而不同,例如:若根據數據挖掘對象分類,可以分為事務型、多媒體、分布式、空間等。而從技術角度出發,又可以分為模式發掘、趨勢建模型、分析評價等,其中模式發掘主要負責尋找數據的規則與模式;趨勢建模主要負責分析數據發展趨勢,對此可以通過邏輯、十字表、方程式來實現趨勢建模,邏輯方法的優點在于可以支持字符型和數值型數據,而十字表主要處理字符型數據。常用的十字表處理方法是遺傳學算法,而基于方程的處理方法主要是通過方程方式,如網絡神經算法來分析數值型數據;分析評價則主要是通過具體的挖掘工具來發現異常行為。
1.3.1 基于知識的檢測技術
基于知識的檢測技術主要是通過建立已知入侵以及攻擊知識庫,然后通過入侵模式匹配的方式識別入侵行為的方法。其主要檢測方法有:基于規則匹配的特征檢測方法;基于模型推理的特征檢測方法;基于專家系統的特征檢測方法。
基于規則匹配的特征檢測方法主要是通過數據特征提取與特征庫匹配的數據來發現攻擊行為。基于模型推理的特征檢測方法是首先對入侵行為進行建模,然后在已知入侵行為模型基礎上,根據這些模型參數構造入侵腳本庫,每個入侵腳本都是一個入侵活動序列。模型推理的方向包括向前推理和向后推理。基于專家系統的特征檢測方法主要是通過專家系統檢測特定入侵行為[4]。
1.3.2 基于行為的檢測技術
行為檢測技術主要是指根據用戶數據操作行為以及資源使用情況來判斷是否入侵。主要方法有神經網絡判別方法、數據挖掘檢測方法和其他異常檢測方法。
神經網絡判別方法通過尋找到大量能夠用來訓練神經網絡算法的已知標簽的訓練數據來實現,該方法主要用于處理入侵規則未知、知識庫不存在,而環境復雜的入侵行為,主要方法是首先分析與提取攻擊行為特征,然后進行入侵行為建模,通過測定模型的構建自動實現異常系統的識別,補充規則匹配技術無法發現未知入侵行為的不足。其他異常檢測方法主要是通過異常的系統調用序列來主動識別其應用模式、文本分類規則[5]。
本設計采用神經網絡方法來部署入侵檢測系統設計,它自動部署,簡單易用,且具有主動識別入侵特征的數據挖掘能力,其系統部署拓撲結構如圖1所示。
在入侵檢測系統中,設置多種類型的檢測引擎,每個引擎負責一種類型的入侵檢測,該引擎進行檢測時,同時使用多種方法。即在進行入侵檢測時,一個引擎負責一種類型的入侵,對于該入侵則通過多種方法細化其入侵類型。同時根據細化的入侵類型實現多個引擎間的協調合作,完成整個入侵檢測任務。通過多引擎、多任務、多檢測方法模式可以實現入侵檢測任務的準確性與檢測效率[6]。

圖1 系統拓撲結構
對于Cloud IDS系統中的數據捕獲模塊,主要基于業界廣泛認可的Libpcap函數庫中的API接口進行二次開發,以適用于大規模分布式的云計算環境。在設定好網絡適配器模式后,Cloud IDS系統開始監聽連接到該網絡適配器相應端口的所有設備,捕獲鏈路層上的數據包并調用callback函數將所捕獲數據向上提交到Cloud IDS系統的數據分析模塊,進行行為判別。其中,Cloud IDS系統中的數據捕獲模塊主要包括如下API函數接口[7]:
pcap_open_live():主要查詢網絡環境中的數據傳輸報文內容,函數處理結果主要是返回數據捕獲描述符。
pcap_stats():主要記錄數據包相關數據統計情況的狀態值,當狀態值為0表示數據包正常,若數據包檢測總出現異常或者數據包無法檢測時則返回-1,表示數據包相關數據統計情況的狀態出現異常,需要對該數據包重新檢測。
pcap_set_filter():主要是對裝載分組捕獲設備信息,通過該函數可以對一些信息進行過濾,以提高異常設備準確性。
pcap_read():該函數主要負責把底層數據包過濾機制裝載入緩沖區,然后同時調用回調(callback)函數實現緩沖區中的數據寫入底層。
pcap_close():函數主要負責關閉正在運行的文件以及釋放該文件所占用的臨時資源。
Cloud IDS系統采用N-Code語言來描述行為規則。該規則共包括規則頭、傳輸協議、IP地址、端口號和方向操作符5個部分。N-Code行為規則包含規則動作、傳輸協議等。其中,規則動作是指檢測到的數據包當滿足該規則動作時就觸發相應的行為對策,例如設置:Alert tcp

表示當外來數據訪問到192.168.1.0網段時,則觸發報警,同時記錄所有目的IP為該IP地址的數據包信息。Cloud IDS系統中的行為規則匹配主要有以下兩個函數來實現:(1)CreateRuleFile():利用調用參數所提供信息,組裝生成一條新的行為規則;(2)ParseRulesFile():主要是解析所有規則中的內容信息函數,其函數參數包括原始規則字符串、規則和協議類型。
在入侵檢測系統中,除了使用簽名的規則匹配校驗外還使用BP神經網絡算法來實現其他未經過識別和無法匹配入侵行為的入侵判斷。本設計中的BP神經網絡算法是經過業界入侵檢測訓練數據集訓練后的算法,其算法核心公式[8]為

通過pi來得出an值,通過an得到BP的out值,最后通過該out值來判斷該數據包是否正常。
為評測Cloud IDS系統入侵檢測功能的有效性,使用MIT林肯實驗室在美國國防先進研究項目局中所開發的KDD CUP99離線數據集作為實驗評測數據。該數據集除了模擬大量的常態網絡數據流量外,還包含部分已知類型的典型網絡攻擊,例如拒絕服務攻擊、R2L攻擊、U2R攻擊、探測和掃描攻擊等。
KDD CUP99數據集中用于訓練的前7個星期的數據量過大,約為5000000條記錄。選取總量數據中10%數據共約494021條記錄用作分析樣本,作為系統評測實驗的訓練數據,同時,為了保證所選擇訓練數據的代表性,基于隨機方法進行選擇。評測實驗的環境是:CPU為P4 2.0GHz,512M內存,硬盤120G,操作系統Windows XP;所采用的仿真工具是Matlab。對于每兩種入侵,選擇150個樣本,其中80個用于訓練,其余用于測試。
從圖2可以看出,當訓練Cloud IDS系統中的BP神經網絡判別算法接近最優時,BP神經網絡判別算法迅速收斂,大大減少了迭代次數(約為54次)。由此可見,BP神經網絡判別算法借助于云計算的超大計算能力,能夠很快地實現尋優收斂,彌補了傳統環境下神經網絡算法收斂緩慢的不足。
評價Cloud IDS系統測試效果的標準主要包括誤報率、漏報率、檢測能力、容侵能力。所謂誤報率主要是指把原本屬于正常的系統運行行為被判斷為入侵行為的概率;漏報率是指入侵行為已經發生,但由于規則以及檢測上的漏洞,導致沒有檢測到該入侵行為的概率,或者把該次入侵行為按系統正常運行模式處理的概率;檢測率是指在選去數據包樣本數量與總數據包總量間的比例。在相同入侵檢測中,檢測率和誤報率是衡量入侵檢測系統檢測能力的兩個基本指標。一般來說,這兩個指標可以通過增加報警閥值的方式來提高。

圖2 系統中BP神經網絡判別算法的收斂情況
表1給出了Cloud IDS系統對典型入侵攻擊類型的檢測率情況。可見,Cloud IDS系統對PROBING類型的各種未知攻擊檢測率最高,達到98.3%,而對于該類型的各種已知攻擊檢測率也很高,達到97.5%;其次,Cloud IDS系統對于U2R的各種未知攻擊檢測率達到82.1%,而對DoS的各種已知攻擊檢測率為80.2%。之所以如此,是因為PROBING和DoS兩種類型的各種攻擊訓練數據較多,Cloud IDS系統中的BP神經網絡判別算法具有比較準確的判別權值,因此檢測率比較高。
從表2中可以看到,Cloud IDS系統對于檢測己知的入侵有很好的效果,特別是對于OOB攻擊,檢測率達到99.5%,原因在于OOB攻擊的特征容易辨別,這從另外一方面說明在入侵檢測系統中特征選取很重要。對于另外的幾種攻擊,正確檢測率也都在96.3%以上,比其他的入侵檢測系統要好。
除了檢測已知類型的入侵攻擊,Cloud IDS系統的另一個優勢是其學習能力,這意味著基于神經網絡的云計算入侵檢測系統不僅可以檢測已知類型的入侵攻擊,而且能夠檢測未知類型的入侵攻擊,實驗結果如表3所示。可以看到,Cloud IDS系統有能力檢測未知的入侵攻擊,也就是說,CloudIDS系統可以檢測沒有被訓練過的入侵行為。這主要是因為神經網絡的分類能力和自管理能力。對于FTP攻擊,漏報率有點高,這是因為FTP攻擊和正常的行為很相似,對于另外的兩種攻擊,測試的結果還是令人滿意的。

表1 系統檢測出來的攻擊類型及比例

表2 系統測試已知類型攻擊的效率

表3 系統測試未知類型攻擊的效率
云計算的入侵檢測是保證云計算環境安全的一個重要途徑。本文重點介紹了Cloud IDS系統中網絡數據捕獲、行為規則匹配、神經網絡判別3個模塊以及通過實驗驗證了Cloud IDS系統的檢測效率,為云計算環境下的入侵檢測提供一種思路和方法。
[1]Kandukuri B R,Paturi V R,Rakshit A.Cloud security issues[J].IEEE International Conference on Services Computing,2009:517-520.
[2]Koziol J.Snort入侵檢測實用解決方案 [M].吳薄峰.北京:機械工業出版社,2005:20-33.
[3]閆華.利用SNMP代理實現基于狀態機的入侵檢測[J].中國測試技術,2005,31(5):96-99.
[4]孫劍華.未來計算在“云端”-淺談云計算和移動學習[J].現代教育技術,2009,19(8):60-63.
[5]陳全,鄧倩妮.云計算及其關鍵技術[J].計算機應用,2009,29(9):2562-2567.
[6]Attanasio C R.Virtual machines and data security,In:Proceedings of the workshop on virtual computer systems[M].New York:NY,USA:ACM,1973:206-209.
[7]Descher M,Masser P,Feilhauer T,et al.Retaining data control to the client in infrastructure clouds[C]∥InTernational Conference on Availability,Reliability and Security,2009(9):9-16.
[8]陳康,鄭緯民.云計算:系統實例與研究現狀[J].軟件學報,2009,20(5):1337-1348.