內部網路若遭到惡意入侵,企業將蒙受難以估計的損失,所以即時偵測及早防制就變得非常重要。其實只要使用開源碼程式Sagan搭配NetFlow通訊協定,就可以使Sagan兼具網路型和主機型入侵偵測系統的功能,這樣一來管理者便能夠隨時判讀網路現狀,防堵惡意入侵。
規則樣式說明
Sagan提供文字型式的規則(Rule)基礎的偵測方式,並提供了類似Snort的規則定義形式,如圖5為其中為一個簡單的範例,用來偵測Telnet連線:
圖5內整個規則定義包括四個部分,說明如下:
|
▲圖5 偵測Telnet連線。 |
(1) alert
這是用來定義處理動作,當所偵測的紀錄資訊符合所設定的條件時,就會執行所設定的動作。
(2) tcp
用來設定欲偵測的通訊協定,Sagan提供了TCP、UDP、ICMP、SYSLOG等通訊協定。例如,如果想偵測Telent的紀錄(如圖5中的例子),由於Telent是使用TCP通訊協定,所以在通訊協定則必須使用tcp。
(3) 偵測範圍
用來設定欲偵測的範圍,其中參數的用法如下:
external_net:設定欲偵測的外部來源IP
sport:設定欲偵測外部來源的通訊埠
home_net:設定欲偵測的目的IP
dport: 目地IP的通訊埠,如果設為any即表示任意(不設限)。
(4) 細項規則設定
部分為細部的規則定義,Sagan常用的細項規則如下所述:
msg:設定當條件成立後,所要儲存的訊息字串。
content:設定查詢內容條件字串
Classtype:用來定義規則所屬的類別
facility:設定僅解析所設定的facility種類的紀錄
level:設定僅解析所設定level種類的紀錄
program:設定僅解析某個程式所產生的Log紀錄
nocase:表示不分大小寫的比對
sid: 規則的編號,從5000000開始,每條規則需要有一個唯一的編號:
以上是設定比對門檻值,表示同一個來源IP,如果在120秒之內有超過5次符合條件即成立。
執行系統實作步驟
在Sagan主機上,依序執行下列步驟:
首先,啟動nfdump-sagan程式,準備接收NetFlow封包:
接著指定網路設備將NetFlow封包資訊,傳遞到Sagan所在的主機上的2055通訊埠。
然後,使用「cat /var/sagan/fifo/sagan.fifo」指令檢查sagan.fifo裝置檔案,確認是否收到NetFlow封包資訊。
隨即設定Sagan的組態檔(sagan.yaml)。基本上,修改vars區段下的設定以及設定所要啟用的規則檔即可,其餘可使用預設設定,設定內容如圖6所示。
|
▲圖6 設定Sagan組態檔。 |
最後,執行「sagan -D -f sagan.yaml」指令啟動Sagan程式。
在Sagan運作成功後,就可以利用NetFlow的資訊來監控整個網段的流量是否有異常的現象發生。一旦發現有符合的惡意封包樣式,便會將相關資訊儲存到「/usr/local/sagan/log/alert.log」檔案內,管理者可隨時查看此檔案來掌握是否有異常的網路現象發生。
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>