0引言
隨着信息技術的迅速發展,計算機及網絡技術給人們在信息利用與資源共享方面帶來了極大的方便,與此同時,也成了單位內部心懷不滿的人員、黑客、競爭對手等
人攻擊的目標。計算機網絡安全已引起了人們的廣泛關注。傳統的安全保護類技術採用認證、授權、訪問控制和加密等機制不能阻止利用計算機軟硬件系統的缺陷闖
入未授權計算機系統的行爲,對授權用戶濫用計算機及其資源的情況也無能爲力。而防火牆技術不能對付層出不窮的應用設計缺陷和通過加密通道的攻擊。由此可
知,僅有傳統的安全保護技術和防火牆等技術是遠遠不夠,還需要有一種能夠及時發現並報告系統入侵(攻擊)的技術,即入侵檢測。
1入侵檢測系統原理
入侵檢測系統(IDS),它從計算機網絡系統中的若干關鍵點收集信息(如系統日誌、審計數據和網絡數據包等),並分析這些信息,發現網絡中是否有違反安全
策略的行爲和遭到攻擊的跡象。入侵檢測概念的提出依賴於兩個假設:第一、用戶和程序的活動是可以觀察的。例如:系統審計機制。第二、正常活動和入侵活動有
截然不同的行爲。不正常的活動被標誌爲入侵。
根據檢測方法,入侵檢測分爲兩大類型[1]:誤用檢測(misuse detection)和異常檢測(anomaly
detection)。誤用檢測是指將已知的攻擊方式以某種形式存儲在知識庫中,然後通過判斷知識庫中的入侵模式是否出現來檢測攻擊,如果出現,說明發生
了入侵。這種方法的優點是檢測準確率較高,缺點是隻能對已知的攻擊類型和系統安全漏洞進行檢測。而異常檢測是指將用戶正常的習慣行爲特徵存儲到特徵數據庫
中,然後將用戶當前行爲特徵與特徵數據庫中的特徵進行比較,若兩者偏差大於閥值,則說明發生了異常。這種方法的優點是能檢測未知的攻擊類型,缺點是誤檢率
較高[2]。
根據檢測的數據來源,入侵檢測系統可以分爲基於主機的入侵檢測系統和基於網絡的入侵檢測系統。基於主機的入侵檢測系統是通過分析審計數據和系統日誌來發現
可能的入侵。而基於網絡的入侵檢測系統是通過分析網絡數據包來檢測可能的入侵。隨着目前網絡信息的不斷豐富、網絡帶寬的迅速擴大,收集的審計數據和網絡數
據包的數量也非常巨大,要想從大量的審計數據和網絡數據包中發現有意義的信息將變得非常困難,出現“數據豐富、信息貧乏”的現象。因此需要利用數據庫方面
的新技術——數據挖掘。
2數據挖掘原理
數據挖掘(Data Mining :簡稱DM),又稱數據庫中的知識發現(Knowledge Discovery in Database:
簡稱KDD),是指從大型數據庫或數據倉庫中提取隱含的、未知的、異常的及有潛在應用價值的信息或模式。它是數據庫研究中的一個很有應用價值的新領域,融
合了數據庫、人工智能、機器學習、統計學等多個領域的理論和技術[3]。
整個知識發現過程是由若干挖掘步驟組成,而數據挖掘僅是其中的一個主要步驟。整個知識挖掘的主要步驟有:數據清理、數據集成、數據選擇、數據變換、數據挖
掘、模式評估、知識表示。其中數據清洗是消除噪聲或不一致數據;數據集成是把多種數據源組合在一起;數據選擇是從數據庫中檢索與分析出與任務相關的數據;
數據變換是把數據變換或統一成爲適合挖掘的形式,如通過彙總或聚集操作;數據挖掘是基本步驟,使用智能方法提取數據模式;模式評估是根據某種興趣度度量,
識別表示知識的真正有趣的模式;知識表示是使用可視化和知識表示技術,向用戶提供挖掘的知識。數據挖掘是整個知識發現過程中的一個重要步驟。數據挖掘所獲
得的知識類型包括:定性概念描述、定性對比概念描述、關聯規則、分類規則、聚類知識、趨勢描述知識,偏差分析知識等。
然而,傳統的數據挖掘算法是基於一般知識的通用算法,具有普適性,在進行網絡安全領域的數據挖掘時會產生大量的無意義的規則,因而需要利用網絡安全及網絡
協議方面的知識加以約束以減少大量的無意義規則。
3 SYN Flood攻擊
SYN Flood攻擊是一種非常普遍的拒絕服務攻擊(Denial of
Service,簡稱DoS)。根據TCP/IP網絡協議,TCP聯接是一個三次握手過程。通常情況下,SYN分組從系統A的某個端口發出,到達系統B的
某個處於監聽狀態的端口。此時,系統B上這個聯接處於SYN_RECV(已收到SYN狀態)。然後系統B嘗試往系統A發回一個SYN/ACK分組。如果一
切正常,系統A就會再次給系統B發出一個ACK分組,這時三次握手過程完成,於是此聯接便轉移到ESTABLISHED(已建立)狀態[4]。
但是,當發生SYN
Flood時,入侵者從系統A發送一個SYN數據分組到系統B,不過此分組的源地址卻是一個虛假地址,系統B也同樣會向該虛假地址發送一個SYN/ACK
分組。如果該虛假地址是冒充其它機器的真實地址,那麼它通常會向系統B迴應一個RST數據分組以解釋其並沒有發起這次聯接。然而如果入侵者冒充的是本來就
不存在的地址,此時,系統B發出SYN/ACK分組後卻再也不會收到相應的RST數據分組或ACK數據分組。於是SYN_RECV狀態的聯接被系統B放到
一個聯接隊列中,直到聯接建立定時器發生超時而把該聯接清出聯接隊列爲止。聯接定時器的設置因系統不同而不同。聯接隊列的容量通常都很小,入侵者只需每
10s發送若干個SYN數據分組就能完全禁止某個特定端口。遭到入侵的系統無法在接收新的SYN請求之前清空BackLog隊列,從而導致SYN
Flood攻擊。該攻擊就是利用TCP/IP協議的這一漏洞來實現的。
4入侵檢測系統模型與應用
根據分析,網絡事件通常在時間上具有很強的相關性,尤其對於探測攻擊(portscan,
ping-sweep等)及拒絕服務攻擊(SYN-Flood,
teardrop等)來說更是如此,考慮在檢測數據中加入基於時間的統計特性,這相當於在更抽象的層次上觀察數據,我們採用的方法是使用時間窗口的概念,
針對每一條連接記錄,統計出在指定時間窗口內與當前連接記錄在屬性上存在某種聯繫的連接記錄,包括以下兩種統計方式:(1)檢查在一個時間窗口以內目標地
址是某臺主機的記錄(如portscan);(2)檢查在一個時間窗口以內目標端口是某服務端口的記錄(如SYN-Flood)。
該自適應系統模型針對拒絕服務攻擊設計的。首先利用TCPDUMP等sniffer工具收集大量的網絡數據流量,然後使用序列算法對TCPDUMP所收集
的網絡數據包進行序列分析,挖掘出基於時間窗口的拒絕服務(DoS)序列規則,最後把該序列規則應用於實時的網絡數據流中以便於檢測拒絕服務攻擊
(DoS)。
TCPDUMP跟蹤格式如下:
11:53:49.869667 eth0 > 192.168.0.231.12242 >
192.168.1.10.www: s 6373380:6373380 (0) win8192
<mss 1460,nop,nop,sackOK>(DF)
以上分別是時間、接口、數據流方向、源地址、源端口、目標地址、目標端口、標誌集、序列號、數據包中的字節、窗口大小、選項、不支持數據包分解。基本思路
如下:
(1)把此模型應用於SYN
Flood攻擊方式,對上述TCPDUMP格式的數據經過預處理,將其轉換爲一條條的連接記錄,並且利用軸屬性[5]進行約化,減少需要挖掘的數據量,以
提高數據挖掘效率。可以只包括:<時間、目標地址、目標端口、標誌>
(2)經過上述整理後,將大量的連接記錄裝入SQL
Sever數據庫,再次進行清理,去掉所有標誌不是SYN的記錄,並按照目標主機、目標端口、時間升序排列,便於下一步進行序列挖掘。
(3)確定時間窗口 在一個時間窗口內對某一臺主機的某一端口有多少次flags是SYN
的TCP連接會導致拒絕服務(DoS)。此挖掘過程需要反覆修改時間窗口大小、反覆挖掘,以確定時間窗口大小和該時間窗口內導致拒絕服務的標誌爲SYN的
TCP連接數目。而且隨着主機、端口、系統和帶寬等具體網絡環境的不同而有所不同,具有適應性。
(4)DoS序列規則 經過上述的反覆挖掘,最後確定特定環境條件下的DoS序列規則。例如:在2秒鐘時間內,1000條件SYN
Flood會導致某一系統的WWW端口產生了拒絕服務攻擊。
(5)把上述獲得的DoS序列規則應用於實時網絡數據流中進行序列分析,以判斷是否檢測到了拒絕服務攻擊。如果不是則認爲正常,否則需採取如下的措施以挽
救其聯接隊列。
下面簡單介紹一下對付SYN Flood的四個基本方法。這些對策各有自己的優勢和劣勢,不過都對消減SYN Flood的入侵威力有幫助。
(1)增加聯接隊列的大小。儘管每個程序員實現的IP協議棧時都會有所不同,但調整聯接隊列的大小肯定可以有助於減輕SYN
Flood。但這樣做會消耗額外的系統資源,從而影響性能。
(2)縮短SYN Timeout時間。由於SYN
Flood入侵的效果取決於服務器上保持的SYN半聯接數,這個值等於SYN入侵頻率與SYN
Timeout值的積,所以通過縮短從收到SYN報文到確定這個報文無效而丟棄聯接的時間,即SYN Timeout,
可以成倍的降低服務器的負荷。(例如設置爲20s以下,但是太低的SYN Timeout設置可能會影響客戶的正常訪問)
(3)應用相關的軟件補丁。大多數現代操作系統已建立了SYN Flood檢測與預防機制,或者提供了這樣的軟件補丁。
隨着SYN
Flood淹沒在Internet上越來越流行,針對這種情況,許多操作系統上已開發了專門對會這種DoS入侵的程序。例如,Linux內核2.0及以後
的版本採用了SYN cookie選項,內核可以利用它檢測並記錄可能的SYN
Flood,能夠允許合法用戶在強度很大的攻擊下也能繼續進行聯接。另外Windows NT 4.0 Service Pack
2及以後的版本使用動態BackLog機制。當聯接隊列空閒資源降低到某個閾值時,系統將自動分配額外的資源。這樣,聯接隊列就不會很容易地耗盡系統資源
了。
(4)應用網絡IDS產品。有些基於網絡的IDS產品能夠檢測並主動對SYN入侵做出響應。通過觀察沒有對應的ACK數據分組或RST數據分組的SYN分
組的數量,就可以確定SYN Flood淹沒。IDS會向發出SYN請求的系統主機發送RST分組,以幫助遭受入侵的系統挽救其聯接隊列。
5結束語:
本文介紹了自適應的基於數據挖掘IDS模型的過程,以及如何使用序列規則建立異常檢測。由於數據挖掘技術能從大量網絡數據中快速提取出規則,因而大提高了
入侵檢測系統的性能。
參考文獻:
[1] 戴英俠 連一峯 王航 系統安全與入侵檢測[M] 清華大學出版社2002年3月第1版 第33頁
[2] 寧玉傑 郭曉淳 基於數據挖掘技術的網絡入侵檢測系統[J] 計算機測量與控制2002.10
[3] (加)JIAEI HAN,MICHELINE KAMBER數據挖掘概念與技術[M] 範明 孟小峯等譯 機械工業出版社
2001年8月第3-4頁
[4] 高永強 郭世澤 網絡安全技術與應用[M]人民郵電出版社 2003年1月 第221頁
[5] Wenke Lee,A Data Mining Framework for Constructing Features and
Models for Intrusion Detection System, degree of Doctor of Philosophy in
the Graduate School of Arts and Sciences, COLUMBIA UNIVERSITY,1999