內部網路若遭到惡意入侵,企業將蒙受難以估計的損失,所以即時偵測及早防制就變得非常重要。其實只要使用開源碼程式Sagan搭配NetFlow通訊協定,就可以使Sagan兼具網路型和主機型入侵偵測系統的功能,這樣一來管理者便能夠隨時判讀網路現狀,防堵惡意入侵。
Sagan程式就是一種主機型入侵偵測系統,與其他相關的主機型入侵偵測系統略為不同的地方,在於Sagan主要是利用即時監控主機所產生的紀錄(Log)資訊,並利用所設定的規則來解析紀錄資訊,以及判別所監控的紀錄檔案內是否具有惡意的樣式(Pattern),進而發現是否有潛在的惡意的攻擊行為發生。其解析流程如圖1所示。
|
▲圖1 Sagan解析流程。 |
要使用Sagan程式之前,首先必須在系統先建立一個FIFO裝置檔案(在Linux系統下可使用mkfifo指令來建立),這是一種特殊型態的管道(Pipe)文件檔案,可用來做為兩個不同程序(Process)之間的資料溝通。Sagan程式就是利用FIFO裝置檔案來取得系統所產生的紀錄資訊。
接著,必須設定將系統所產生的紀錄資訊傳遞到FIFO裝置檔案(圖1中的(1)),在此同時,Sagan程式便利用FIFO裝置檔案來取得系統所產生的紀錄資訊,並與所設定的規則進行比對(圖1中的(2)),如果發現有符合的規則,便執行相關的動作(Action)(最常見的動作就是記錄相關的資訊)。除了可記錄至檔案外(圖1中的(3)),Sagan也提供將相關資訊儲存至資料庫的機制(利用barnyard2程式)。
雖然Sagan程式在偵測性質上歸屬在主機型入侵偵測系統,但換個角度思考,如果能將網路流量(例如NetFlow)的資訊導向到Sagan主機上的FIFO裝置檔案,不就可以利用Sagan程式來監控NetFlow的資訊,而能具有網路型入侵偵測系統的功能。
系統實作架構說明
在此將實作利用Sagan程式解析所接收到的NetFlow網路封包,來達到網路型入侵偵測系統(NIDS)的功能,相關架構圖如圖2所示。
|
▲圖2 實作架構圖。 |
接著,說明圖2中相關的操作流程:
設定路由器或其他的網路設備(只要設備能支援匯出NetFlow封包即可,通常需要設定接收端的主機IP和通訊埠資訊),匯出NetFlow封包至Sagan主機上NetFlow收集器(Collector)程式,在此為nfdump-sagan。
當nfdump-sagan程式接收到NetFlow封包,便將相關資訊導向到FIFO裝置檔案。
最後Sagan程式再利用所設定的規則解析FIFO檔案所接收到的資訊,比對出是否有惡意的行為,如果發現有惡意的網路行為,就記錄下相關的資訊。
安裝nfdump-sagan
nfdump是開放原始碼社群中頗富盛名的NetFlow資料處理軟體,提供了收集及處理NetFlow封包等相關程式,在本文中主要是利用其中的NetFlow封包收集的功能。
原始的nfdump並未提供與Sagan程式結合的功能,因此這裡將利用改寫過後的nfdump程式(名稱為nfdump-sagan)來與Sagan程式結合。安裝過程如下所述(其中#部分為註解):
在安裝完成後,nfdump-sagan所提供的主要程式功能如下所述:
Nfcapd
Nfcapd主要用來擷取NetFlow封包並將相關封包儲存進檔案的程式,以下是常用的參數說明:
-p:指定要接收的通訊埠資訊,利用此通訊埠來接收NetFlow封包。
-l:指定儲存所接收到NetFlow封包資訊的目錄名稱
-F:指定將接收到的NetFlow封包傳遞到FIFO裝置檔案名稱
-t:設定所要儲存為檔案的間隔時間(單位為「分」),預設為5分鐘,在預設的情況下,每5分鐘就將NetFlow封包儲存成檔案。
以下範例表示,預定在通訊埠2055接收NetFlow資訊,並將相關資訊轉至「/var/sagan/fifo/sagan.fifo」的FIFO裝置檔案上(必須先利用mkfifo指令建立該FIFO裝置檔案):
nfdump
nfdump是用來顯示由nfcapd程式所取得的NetFlow資訊,常用的參數如下:
-r:從檔案中取得NetFlow資訊
-w:將NetFlow的輸出寫入檔案中
-R:取得目錄下所有檔案的NetFlow資訊
-o:設定要顯示的NetFlow資訊的格式,提供以下幾種格式:
raw:以原始的格式顯示NetFlow的資料。
line:以標準的文字格式(此為預設)顯示NetFlow的資料。
long:以完整的資訊格式(此種顯示將包含最完整的資訊)顯示NetFlow的資料。
csv:以CSV(Comma Separated Values)的資訊格式顯示NetFlow的資料。