馬 愷
(遼寧對外經貿學院,遼寧 大連 116052)
隨著越來越多的信息被存儲在網絡中,計算機網絡的安全也越來越受到人們重視,變得越來越重要.網絡入侵檢測系統的構建成了一個包含計算機網絡的關鍵技術.最早的網絡入侵檢測系統是基于專門的檢測方法,手工編寫代碼.這些入侵檢測系統對發生在網絡中的已知的入侵行為提前編寫代碼,予以檢測,包含計算機網絡的安全.這些方法的主要問題是不能檢測到新出現的網絡入侵行為和攻擊行為.為了解決這一問題,基于數據挖掘方法構建的入侵檢測模型的方法受到學者們的廣泛的關注.基于數據挖掘方法的入侵檢測模型從已知攻擊行為和正常行為中得到入侵行為的范式,從而發現未知的入侵行為.而且,這類模型比手工編寫代碼的模型更快速,自動化程度更高.數據挖掘技術在入侵檢測系統中得到了很好的發展,已經出現了許多高性能的網絡入侵檢測系統.然而,僅用數據挖掘技術是不能實現網絡入侵檢測系統的部署的,雖然基于數據挖掘的入侵檢測系統有更好的檢測性能和概括能力,在實施和部署這些入侵檢測系統時,仍然存在一些問題.
這些問題大體上可以分為三類,分別是檢測性能問題,時效問題和可用性問題.通常情況下,基于數據挖掘的入侵檢測系統,尤其是異常檢測系統,有比手工編碼系統高的假正率,這降低了基于數據挖掘的入侵檢測系統在真實環境中的可用性.另外,由于這類系統需要在訓練集和實際數據上進行大量的計算,在實時環境下,該類系統效率較低.基于數據挖掘的入侵檢測系統還需要大量的訓練數據,這些訓練數據需要進行標識,用于分類器的構建,標識這些數據也是一個很費時的工作.
本文主要研究使用數據挖掘技術構建入侵檢測系統框架,探討實時的基于數據挖掘的入侵檢測系統的布置,給出一些改善入侵檢測系統的精度和效率以及可用性的方法,建立更高效的網絡入侵檢測系統.
入侵檢測是指對入侵行為進行監測,發覺正在實施的入侵行為.它通過對節點上收集到的信息進行分析,發現網絡及系統中存在的違反安全策略的動作和受到攻擊的行為,在對網絡性能不造成影響的情況下,監測網絡,有效保護系統,防御對系統的內部攻擊、外部攻擊以及誤操作等入侵行為.入侵檢測方法還能提供針對這些攻擊的一些具體的防護手段,例如對入侵證據的記錄、斷開網絡連接等,是網絡安全的重要組成部分之一.
入侵檢測系統是按照一定的安全策略建立入侵檢測措施,并發現入侵行為的軟硬件構成的安全保障結構.入侵檢測系統能識別入侵攻擊,對檢測到的入侵動作和攻擊動作有提醒及防御功能.
入侵檢測系統的抽象模型是由Denning D E在1987年提出的[1],該文首次將入侵檢測作為一種計算機系統安全防御措施,是入侵檢測發展史上的重要理論模型.文中提出的模型獨立于具體的系統、應用環境、系統健壯性以及入侵類型無關,提出的是一個針對通用入侵檢測的框架,對設計具體的入侵檢測應用系統有指導意義.
該抽象模型有六個主要的組成部分,分別是主題、對象、審計數據、活動描繪、異常記錄和行為規則.其中,主題是由目標系統中的某一個活動的發起人給出的,在應用中就是正常用戶.對象是被系統管理的資源,如文件、命令集和設備等.審計數據是記錄目標系統對于主題在對象上的行為做出的反應.活動描繪以主題在對象上的行為特性來自動構建.異常記錄時在檢測到異常時,做出的相關記錄.行為規則在一些條件滿足時,執行的行為,如更新活動描繪,檢測異常行為,生成反饋報告等.這個模型可以看成是一個基于規則模式匹配的系統.當一個審計數據生成后,與活動描繪進行匹配,根據匹配后的類型信息,確定應用哪個規則來更新活動描述,檢查異常行為,并報告異常.
根據檢查技術的不同,可以將入侵檢測分為誤用檢測(misuse detection)和異常檢測(anomaly detection)兩類.誤用檢測運用已知攻擊方法,提前定義好入侵模式,通過判斷已經定義好的入侵模式是否出現,實現入侵檢測,因此也被稱為特征檢測[2].誤用檢測是依據已有的具體特征庫,對入侵模式進行判斷,能準確地發現特征庫中已記錄的入侵模式,檢測準確率高.但是誤用檢測無法檢測到特征庫里不存在的入侵模式,即無法檢測出新的攻擊或者現有攻擊的變種,這成為誤用檢測的一個致命的弱點.異常檢測不依賴于已有的入侵模式的特征庫,它根據使用者的行為或資源使用狀況,來判斷入侵行為的發生.異常檢測可以解決誤用檢測中的問題,發現未知的攻擊模式,但是該方法可能會把正常行為判斷為入侵行為,誤報率較高.
使用網絡數據來分析入侵行為,按照使用的數據的不同,可以分為基于網絡數據包的檢測和基于網絡連接記錄的檢測兩種[3].基于網絡數據包的檢測主要檢查網絡中傳輸的每一個網絡數據包,分析數據包中的協議字段以及負載內容,查看這些數據中是否出現違背協議或者包含異常負載內容.基于網絡數據包的檢測能從報文級別,實時發現入侵,對入侵實現實時反饋,但這種檢測方法需要處理的數據量較大,可能會出現同時也丟包現象.另外,單個數據包的信息較少,且各包之間沒有關聯,僅僅使用這些數據包很難實現有效的異常檢測.而基于網絡連接記錄的異常檢測把網絡傳輸數據還原成基于傳輸層的連接記錄,這些連接記錄反應了網絡會話期間多個方面的內容特征,包括網絡傳送的字節數、建立的文件數、嘗試口令的次數、錯誤分片的次數、嘗試命令的次數等等,可以通過這些信息區分出連接是否正常.比如,正常情況下的網絡連接,不會出現反復猜測口令的狀況,因此嘗試口令次數的屬性值應該是很小的,當該屬性值較大時,就很可能是一種通過口令猜測實現惡意入侵的行為.
一個網絡入侵檢測系統的檢測攻擊行為可以用精度來度量.精度主要用兩個衡量指標,一個是檢測率,一個是假正率.檢測率是系統檢測到的攻擊行為的比率,而假正率是將正常行為誤判成入侵行為的比率.這兩個比率可以通過在數據集上測試系統而獲得.二者的大小可以通過設置進行互相轉換,用不同參數值可以創建一個ROC曲線,檢查兩個入侵檢測系統的ROC曲線可以比較二者的精確度[4].在實際應用中,由于只有假正率低的的檢測系統才是有用的,因此,對應于可以接受的低假正率的少部分ROC曲線才是真正值得關注的.
為了提高基于數據挖掘的入侵檢測系統的精確度,本節提出一些獨立的技術,包括基于審計數據提取特征的一般框架,生成用于降低假正率的人工異常的異常檢測方法和聯合異常檢測模型和誤用檢測模型的方法.
對入侵進行檢測有兩個前提假設,一個是系統的行為是可觀察到的,另一個是不同的證據可以用來區分正常行為和入侵行為.能被觀察到的原始數據稱為審計數據,而從原始的審計數據中抽取出的證據被稱為特征,可以使用這些特征建立入侵檢測模型,對入侵行為進行估計.特征提取就是決定從原始審計數據中抽取什么樣的證據能對分析入侵行為最有效的過程.因此,特征提取是構建入侵檢測系統的一個關鍵步驟.也就是說,正常審計記錄與入侵行為的審計記錄對應的特征值顯著不同的特征集合是提高入侵檢測的精度的關鍵.
為了獲得這些關鍵的特征,對一些原有的數據挖掘方法進行改進,使其能從原始的審計數據中實現特征的選擇和構建.首先,對原始審計數據進行處理,使它們成為包含基本特征的分離的記錄.例如,在網絡傳輸中,時間戳,時間間隔,傳輸源IP和目的地IP,端口等等.然后在這些數據上應用頻繁模式挖掘算法,獲得能描述特征之間的關系的頻繁模式和在多條記錄中頻繁出現的事件.正常行為的一致模式和與入侵行為相關聯的獨特的模式會被識別出來,并用來建立關于網絡連接記錄的額外的特征.使用這種方法建立的特征能清晰地識別正常行為中的入侵行為.
算法可以描述如下.


該算法從語法上描述和分析了一個頻繁情節,并用求個數、百分比及平均來構建統計特征,并在某個時間窗口內來衡量規則的特征,能提高基于數據挖掘的入侵檢測系統的精度.
在采用機器學習方法來實現異常檢測時,存在著一個難題,在于讓學習算法找到已知類和未知類之間邊界.由于在訓練集中,沒有異常行為的實例,一個機器學習算法不會在已知數據和異常數據之間指定一個邊界.因此,提供一種人工異常數據生成技術,讓傳統的學習算法能檢測到異常行為.生成的人工異常數據被插入到訓練集里,用于幫助傳統的學習算法發現原始數據集里的邊界.所有的人工異常數據的類別標簽定義為異常.生成人工異常數據的依據是“最近缺失”,即與已知數據最接近且不在數據集里的實例,作為人工異常數據出現.因為假設訓練集里的數據是有代表性的,所有與已知數據最近但缺失的數據被假設為異常數據,作為人工異常數據生成.
由于無法確切地知道已知數據實例和異常數據實例的真正邊界,假設邊界與存在的已知數據很接近.為了生成與已知數據很接近的人工異常數據,一種啟發式的方法是改變一個特征的屬性值為未出現于該數據集里的屬性值,并保持其他特征的屬性值不變.一些實例空間中的已知數據區域可能是稀疏的,可以將稀疏區域看作海洋中的一個小島嶼,而將密集區域看作一個大島嶼.為了避免過擬合,學習算法通常傾向于發現更多通用模型.而在入侵檢測中,數據集里只有已知數據,因此在預測這些已知類時,需要阻止模型過于通用.也就是說,需要避免多個稀疏區域被劃入一組形成一個密集區域,以生成單個覆蓋所有稀疏區域的大區域的情況發生.可以在這些稀疏區域的周圍生成人工異常數據,并讓學習算法發現指定的能從其他實例空間中區分出這些稀疏區域的邊界.換言之,生成的人工異常數據就是要能放大這些稀疏區域.
稀疏區域可以從每個特征的非頻繁值中找到,為了放大稀疏區域,需要在稀疏區域周圍依據稀疏度生成合適數量的人工異常數據.3.3 異常檢測和誤用檢測的結合
在有些研究中,異常檢測和誤用檢測被認為是兩個獨立的問題.異常檢測算法通常針對正常數據進行訓練,而誤用檢測則通常在標注為正常和入侵兩類標簽的數據上進行訓練.直觀上看,一個結合異常檢測和誤用檢測的優點的算法會有更好的檢測效果.因此,在生成人工異常數據的基礎上,設計一個能實現異常檢測和誤用檢測的模型.這就使得傳統的有監督的指導學習算法可以使用,同時實現對異常行為和誤用行為的檢測.算法在包含正常記錄和對應入侵行為的記錄的數據集上,訓練一個單一的模型,另外,也生成人工異常數據,并在這個聯合數據集上,訓練算法模型,這種模型能同時檢測異常和誤用.
結合誤用檢測和異常檢測的學習,會得到一個規則集合.這個集合里有能將一個網絡連接分類成正常的規則,也有能區分已知入侵類別的規則.為了估計這種結合方法的效果,將入侵行為劃分為一些簇.通過逐漸增加簇到數據集里并生成人工異常數據,創建出多個數據集.以此來模擬真實世界中,發現新的入侵并將其合并到數據集的過程.在這個數據集上學習到的模型,包含能識別訓練集里的已知入侵行為的誤用規則,未知入侵行為的異常規則,以及特征化正常行為的規則.
數據挖掘在入侵檢測系統的典型應用是實現線下入侵檢測系統,因為學習算法需要處理的大量的審計數據.而效率更高的入侵檢測系統應該能在入侵行為發生時就發現異常,實現實時的在線入侵檢測功能,保障網絡的安全[5].與線下入侵檢測系統相比,實時系統最主要的目標是盡可能早地發現入侵行為,因此,系統構造的模型的效率是一個非常重要的因素.
由于現有的很多基于數據挖掘的入侵檢測系統是使用線下數據來學習,構建入侵模型,也就是說當一個事件被檢驗時,和這個事件有關的所有行為都已經發生了,這些行為對應的所有特征都包含有意義能用于模型檢查的值.因此,若直接將這些模型用于實時環境下,就會出現一個事件發生后,不會被檢查,直到與這個事件相關的所有行為都發生以后,對所有的相關信息進行整合,才能對該事件進行檢測.這就意味著入侵檢測被耽擱了,這會導致無法及時發現某些攻擊行為,如DoS攻擊等.因此,檢查與計算每個特征有關的時間延遲從而實現模型的估計效率是很有必要的.一個特征的時間延遲不僅包括計算特征的時間而且包括等待其就緒的時間.但是,從時間消耗的角度看,主要關注計算時間.根據特征構建方法,可以將網絡入侵檢測系統中的特征分成不同的時間消耗水平,并為不同水平的消耗設置一個具體的值以方便時間消耗的估計.
為了減少計算時間的消耗,被檢查的規則在保證滿足需要的精度下,要盡可能經常使用時間消耗水平低的特征.可以使用多規則集方法,每個規則集使用不同時間消耗水平的特征.系統先用低時間消耗的規則集進行檢測,當低時間消耗的規則集不能滿足預測的精度需求時,再使用高時間消耗的規則集.采用這種規則檢測方法的網絡入侵檢測系統能適應實時檢測的需求.系統用一個感知器從原始網絡通信數據中抽取原始的特征建立連接記錄,然后計算主要特征,將特征按時間消耗水平進行分類,用低時間消耗的規則集先進行估計,若不能滿足精度要求,則再用高時間消耗的規則進行預測.
基于數據挖掘的入侵檢測系統需要用大量的訓練集來獲得判斷行為類別的分類器,這就使得系統需要管理訓練數據和歷史數據,而且,一旦有新數據被分析,則需要更新模型,另外,訓練數據集是大量的有標簽的數據,因此這種系統的復雜性較高.為了提高系統的可用性,需要減少更新模型的數據量,以及降低對訓練數據的需求量.
為了能檢測到新建立的模型,用全部分類器作為通用的但相互獨立的模型來適應現有的模型,這樣既可以提高學習算法的效率,又可以改善系統部署的性能.在實際應用中,一旦發現了一個新類型的入侵模式,就需要快速調整現有的檢測模型,做出一個臨時改進的模型使其能檢測新發現的入侵,盡管可能無法發現全部的新攻擊行為.同時,需要花費較長時間,重新計算檢測模型,以得到能發現所有新入侵行為的更新后的檢測模型,然后替換掉臨時的改進模型.為了簡化模型更新的內容和步驟,可以為新的入侵行為生成一個輕量級的分類器,保持原有模型的主要部分不變,對于一個新到的連接記錄,可以先用原有模型進行檢測,若未發現異常,則再用新生成的分類器進行檢測.最終的預測結果是綜合兩個模型結果的函數值.這樣,僅對更新數據計算新的分類器比計算所有的數據生成新的整體模型要更有效用.
創建有效用的檢測系統,需要在包含大量有標簽數據的訓練集上訓練算法,這也是檢測系統部署的一個主要困難.對于誤用檢測系統,訓練集的數據要被精確的標記為正常行為或攻擊行為.對于異常檢測系統,訓練集的數據只需被驗證是正常行為即可.但是,這兩種系統,為標記訓練集所花費的消耗基本是相同的,而數據采集是依據具體的環境來實現的,因此,應用于不同環境的每個系統都需要進行這種數據標注工作,會消耗大量的人力物力.當采用無須標注的數據集作為訓練集進行學習時,會降低部署檢測系統的消耗.無監督學習算法能在無標簽的數據集上進行學習,獲得分類器.無監督學習異常檢測算法主要基于兩個假設,一是異常行為的數量相對于正常行為的數量來說,是非常少的,這樣就意味著攻擊行為在整體行為中占的比例非常小;另一個是異常行為與正常行為的表現不同,攻擊行為和正常行為對資源的使用有很大不同.這樣,可以把異常行為看作正常行為的異常點,將異常檢測轉換為離群點檢測問題,采用無監督學習算法來解決.
入侵檢測技術在網絡監控等多個領域里發揮了越來越重要的作用,入侵檢測系統的構建對入侵檢測的效果有至關重要的作用.本文探討提高基于數據挖掘的入侵檢測系統性能的一些方法.分別在網絡入侵檢測系統的精度、效率和可用性三個主要方面分析限制當前的系統性能的主要原因,并提出一些改進的方法.在未來的工作中,將繼續探索提高入侵檢測模型的效用的技術.