白宗 侯珂 尚夢瑩
(鄭州工業應用技術學院 河南省新鄭市 451100)
入侵檢測系統主要將入侵檢測技術植入到可部署系統中,以識別計算機網絡中違反安全策略的攻擊行為,并做出對應的處理。現階段針對入侵檢測的技術研究越來越深入,常用的入侵檢測方法包括免疫系統、數據挖掘、遺傳算法等。其中免疫系統法是將入侵行為視作免疫系統中的異己細胞,免疫系統就是識別異己細胞的過程,因此在入侵檢測系統中,免疫系統方法通常用于建立正常行為輪廓知識庫及異常行為檢測,不過免疫系統方法對于策略違背或偽裝的異常,則不易檢測出來。遺傳算法的理論基礎是自然選擇,即分析自然進化的過程,最終確定最優解。在入侵檢測中應用遺傳算法,系統會先對某種入侵事件做出假設,并進行檢測,假設符合條件就保留,不符合條件就剔除,并針對保留的假設再進一步檢測,最終確定合的方法。在入侵檢測中應用遺傳算法,雖然能夠獲得較好的異常檢測效果,但是該技術實現復雜,且對于誤用檢測效果不佳。數據挖掘則是從訓練集中計算、分析出數據實體之間潛在的聯系,建立能夠反映數據實體關系的模型,數據挖掘的主要分析對象是海量的網絡數據,因此非常適用于入侵檢測系統。
所謂楊顧名思義是指利用一定的算法從海量的網絡數據中挖掘出關鍵信息。數據挖掘的基本流程包括:首先,數據采集,即從數據庫或從信息庫中獲取相關數據,針對選擇的數據進行數據預處理,消除噪音或干擾數據,對數據進行格式轉換,便于后續數據挖掘的操作;數據預處理完成后再利用相關算法提取需要的數據模式,即數據挖掘;挖掘出來的數據信息通過知識表示環節在客戶端展示出來,整個數據挖掘過程即完成。
常用的數據挖掘算法包括關聯規則、分類分析、聚類分析、序列模式。其中關聯規則是指從大數據中查找出相關性的數據,主要包括兩個步驟,先是發現所有滿足最小支持閾值的頻繁項目集,然后再將項目集轉換為達到置信度閾值的關聯規則。關聯規則中適用于入侵檢測的算法包括Apriori、FP-growth等,不過在入侵檢測系統中采用傳統的關聯規則檢測網張絡數據中的可疑活動或行為時,可能會將所發現的所有項目集誤認為同等重要,導致檢測效率低下,因此現在的很多入侵檢測系統中采用的關聯規則都是經過改進的。序列模式也是一種分析數據之間關系的方法,不過序列模式更側重于數據集中每條記錄之間的相關性、與時間的關系等,而關聯規則則側重于數據集中不同數據項的關系分析。序列模式是將具有時序的數據進行排序,再將達到最小支持度閾值要求的頻繁序列挖掘出來。在入侵檢測系統中應用序列模式方法可以準確檢測出對有時間性類型的攻擊行為,但是一旦攻擊者掌握了正常網絡行為與時間的關系,就會偽裝攻擊行為,此時應用序列模式算法就無法檢測出攻擊行為,導致網絡存在安全隱患。分類分析又稱為監督學習,主要是判定未標記類別的數據所屬的實際類別。分類分析方法包括兩大部分,一是學習階段,主要將原始訓練集中的噪聲、缺失值、異常值等清除,再選擇分類算法學習,以解決目標問題,最后存儲最佳模型;二是分類階段,主要是對數據集進行預處理后,對數據集中的每條數據進行預測,判定其類別。由于分類分類主要針對數據集的用途及場景進行預測,因此可應用該方法檢測網絡中的非法入侵行為,針對已經被標記實際類別的數據可使用分類算法進行審計,未被標記實際類別的可應用分類算法判斷是否為入侵行為。與分類分析不同,聚類分析又被稱為無監督分析,該方法是根據數據之間的相似性劃分為不同的簇,每簇內數據特征或屬性相似度較高,分類分析主要針對已經進行實際標記的數據進行學習、分類,聚類分析則是針對未被標記的數據進行劃分,因此聚類分析可以處理不同類型的數據,噪聲數據對其影響也相對更小,且聚類分析可以聚類高維數據,并能夠降低輸入次序的敏感性,對先驗知識的依賴性更小,因此在入侵檢測中應用聚類分析可以檢測出新的攻擊行為。
入侵檢測系統需要根據其檢查對象、檢查范圍進行系統部署,通常部署于因特網接入路由器后的第一臺交換機上,或者服務器交換機上。系統核心是通過捕獲、過濾、分析網絡中的數據包發現網絡中存在的入侵行為。本研究中網絡數據流量的收集應用Libcap數據采集工具,存儲數據庫采用My SQL,采用聚類分析與關聯分析算法確定入侵行為。系統主要包括管理控制、數據解析、數據預處理、聚類分析、關聯分析、入侵檢測、告警響應等八個模塊,下文針對每個模塊的設計進行詳細分析:
管理模塊主要針對用戶管理、日志管理及各子模塊進行調度,配置聚類分析、關聯分析及入侵檢測模塊的相關參數。管理控制模塊采用B/S架構,數據解析及數據預處理模塊的開關連接管理控制模塊,針對聚類分析模塊的參數配置、關聯規則的展示與配置,也是通過管理控制模塊來完成,此外,諸如用戶權限控制、系統開關控制等常規操作均是通過管理控制模塊來實現。
數據解析模塊則主要用于協議數據包的采集與解析,通過解析數所包,將數據中有用的字段提取出來,確定必要的統計屬性,最后將其轉換為易處理的格式,再經過解析存儲于數據庫。可以說系統功能的實現是從數據采集模塊開始的,其包括兩個子模塊,即數據采集子模塊與協議分析子模塊。
其中數據采集子模塊主要負責檢測對象的收集,本研究中采用Libcap函數庫捕獲原始數據包,并統計流量,為保證所有流經網卡的流量均能夠被監聽,網絡接口設置為混雜模式,Libcap包括三個流程,即面向數據鏈路層的包捕獲、數據包的過濾及向用戶提供最終結果,其不僅可以統計流量,還能應用于網絡協議分析器、網絡流量發生器等。通過pCap_Open_live()函數捕獲數據包描述字,作為其它函數的入參使用。其中pcap_loop()函數主要負責捕獲數據包,并通過callback變量注冊自己的回調函數,捕獲數據包后通過該函數可以進行數據包的解析與存儲,捕獲回調函數處理數據包。數據包的存儲可以通過pcap_dump()函數向pcap_dump_open()打開的文件寫出數據包,即可將數據包保存為文件。程序結束前需要關閉整個會話,通過函數pcap_close()即可實現。
入侵檢測模塊、告警響應模塊需要的數據信息,由數據采集中的另一個子模塊——協議分析子模塊來實現的。要保證入侵檢測系統檢測結果的有效性,必須以充分的有效信息為基礎,原始數據包中的數據表現為字節流的形式,不僅數據量大、冗余信息多,而且這種形式不適合入侵檢測系統的分析,因此就需要通過協議分析子模塊來提取有效信息,并進行格式轉換,針對不同的協議進行分析,保證各協議分析結果數據結構的統一性。
在數據挖掘過程中算法無法處理缺值,需要數據預處理模塊對數據進行缺值處理、清除噪聲點、分析及歸一化處理等操作,便于數據挖掘算法能夠處理。數據清理過程中,選擇部分選擇的屬性集,將冗余的、非必要的屬性去除;針對屬性集中的連續型屬性進行數據標準化處理,針對離散型屬性則進行歸一化處理,預處理完成的數據保存至數據庫中。需要注意一點,即數據清理時,數據的協議類型不同,其結構也不同,某些數據項在數據庫中可能會出現缺值現象,此時就需要人工補充為合適的默認值,保證數據格式的統一性;此外,還要去除冗余的屬性,或者正常、異常數據中對于區分攻擊類型起不到作用的某些屬性值也要去除,以減少檢測的復雜程度。
聚類分析主要入侵檢測系統提供正常與異常聚類中心,關聯分析則為異常檢測模塊提供關聯規則,二者均為入侵檢測模塊的基礎。聚類分析模塊通過訓練數據進行聚類分析,得到正常及異常的聚類中心,并通過異常聚類中心區分異常檢測模塊中的正常數據與異常數據。選取初始聚類中心的方式有多種,本算法中提供兩種,一種是采取數據集中第一條數據,另外一種則使用generateRandVect(vSize)生成隨機聚類中心。數據迭代過程中會重新劃分數據集,涉及到多個聚類,因此每個數據計重新劃分后都要對所有聚類中心進行重新計算。關聯分析模塊采用FP-Growth算法,其主要作用是挖掘異常規則作為入侵檢測模塊的知識庫,對其中的聚類分析結果進行矯正。聚類分析模塊中的異常聚類是關聯分析模塊的源數據,挖掘出的關聯規則保存在數據庫中。
入侵檢測模塊是整個入侵檢測系統的核心功能模塊,其在進行入侵檢測時,數據采集模塊捕獲數據流量后,將要測需要的屬性信息提取出來,由數據預處理模塊對數據包進行處理及分類,入侵檢測模塊再針對處理好的數據進行檢測,將最終的檢測結果存儲于數據庫中,并通過可視化界面向用戶展示檢測結果。如果系統檢測到入侵行為,就會通過告警響應模塊做出反饋處理。可以說入侵檢測的最終目的就是告警響應,以將系統入侵行為的破壞后果降至最低。入侵檢測系統的告警響應包括兩種,一種是主動響應,主動追蹤入侵者發起攻擊的源地址,采取對應措施禁止這類用戶訪問網絡,或者對系統中引起攻擊的缺陷進行修正,也可以通過添加規則阻斷攻擊行為。雖然主動告警響應能夠阻斷正在進行的攻擊,但是網絡中正常用戶的操作行為也會受到影響,因此多數情況下采用被動告警響應。
總之,雖然人們對于網絡安全問題的研究越來越深入,然而網絡入侵行為也并沒有因此而減少,互聯網產品的更新換代日新月異,各種安全漏洞也層出不窮。網絡攻擊行為不僅會影響到用戶的正常生活及工作,嚴重者還可能造成巨大的經濟損失,因此研究入侵檢測技術具有重要的現實意義。本研究提出一種基于數據挖掘的入侵檢測系統,其包括數據采集、數據預處理、聚類分析與關聯分析、入侵檢測及告警響應等模塊,設計過程中利用模塊內高內聚、模塊之間低耦合的設計思路,經過實驗可知,本系統能夠保證較好的檢測效率,且系統誤報率也較低。