為了抵禦外來的威脅,除了架設防火牆外,還必須建置入侵偵測系統,才能進一步提高資安防禦能力,本文將示範如何利用開源碼Suricata建置一套網路型入侵偵測系統,用來監控內部網段中是否存在異常的攻擊行為,以便及早防範,避免傷害擴大。
介紹過Hub裝置的封包傳遞方式,如下繼續說明Switch裝置的封包傳遞方式。
在Switch裝置內會保存一份對應表,對應到接在Switch上的每台實體埠口與主機的MAC資訊,一旦封包流進此Switch,便會先查詢此對應表並取得目的主機的MAC資訊,然後直接將封包直接傳遞給目的主機,因此封包並不會流經接在同一個Switch裝置上的其他主機,這也就是為什麼必須將NIDS接在Hub裝置的原因。
但NIDS是否就無法裝在Switch裝置上?那倒也未必!在現今的Switch裝置上通常都會提供鏡射(Mirror)的功能,此功能可以複製Switch裝置其他的實體埠口所接收的封包至NIDS所在的實體埠口,如此即可取得流經Switch裝置上所有的封包資訊。
NIDS偵測方式說明
在簡述完NIDS的架構後,接下來說明NIDS的偵測方式。依偵測方式可分為特徵比對(Signature-based)與異常偵測(Anomaly-based)兩種方式,如下所述:
特徵比對
特徵比對(Signature-based)又稱為「不當行為偵測(Misuse Detection)」,系統會先針對惡意的特徵建立一個「異常特徵資料庫」,只要NIDS偵測到的封包內容與資料庫的某個特徵相符,系統即會判別為入侵行為。此種方式的優點是不易誤判,因為個別的攻擊行為通常都擁有特殊的特徵,可利用此特性來精確地比對出惡意的攻擊。
但就如上所言,此種方式是否能完整地檢測出惡意的攻擊,完全取決於「異常特徵資料庫」的完整性,異常特徵資料庫越完整,可成功檢測出惡意攻擊的機率就越大,所以這種方式無法檢測出未知的攻擊方式。因為必須先有攻擊行為才會有攻擊特徵,「異常特徵資料庫」才能加入此種攻擊特徵,最後NIDS才可藉此掃描出惡意攻擊。本文介紹的Suricata所採用的偵測方式,即屬於此種方式。
異常偵測
異常偵測(Anomaly-based)方式是運用統計分析的方式,先定義出正常的系統模式(以下簡稱正常模式),而後當NIDS檢測出不符合正常模式的流量時,即可判別為異常。
此種模式的優點在於可偵測出未知的攻擊行為,因為攻擊行為通常會造成系統偏離正常模式而被檢測出來,但缺點是很難界定所謂的「正常的系統模式」,也因此不太容易定義出所謂的正常模式,而增加入侵偵測系統誤判的機率。但此種最大的優點在於不受限於異常特徵資料庫的能力,而具有檢測出未知攻擊樣式的能力。
在簡單的說明NIDS後,以下開始動手安裝Suricata入侵偵測系統。
安裝Suricata入侵偵測系統
說到網路型入侵偵測系統,相信一般人腦海裡第一個想到的應該是Snort。Snort挾其豐富的資源及優異的偵測能力,往往都是架設入侵偵測系統時的首選,但其實除了Snort之外,在開源碼社群中還有其他各具特色的網路型入侵偵測系統可供選擇,Suricata就是其中一款頗受好評的NIDS。
就Suricata官方的說明,是希望此套軟體能相容於Snort(所以能適用Snort的規則集),並利用多執行緒執行的方式來增進Snort的效能。表1為Suricata與Snort的功能比較,可藉此來評估其優劣。
表1 Suricata與Snort功能比較
在比較過Snort及Suricata的差異後,接著說明Suricata的架構,相關架構如圖3所示,運作流程為當封包進入規則引擎(Rule Engine)時,在經過規則比對後,如果符合樣式,就將相關的資訊經由輸出模組輸出到「資料庫」(利用unified2格式輸出至資料庫中)或檔案中。
|
▲圖3 Suricata架構示意圖。 |
簡單說明Suricata後,開始安裝Suricata軟體。首先,安裝Suricata所需的系統套作,安裝步驟如下所述(其中#為註解,在此安裝的版本為4.0.3):
接著,至Suricata官方網站取得最新版本的原始碼(本文使用的是4.0.35)並解壓縮,然後組態Suricata,並設定將Suricata相關的程式及組態檔安裝在「/usr/local/suricata/」目錄下,如果確定主機上的顯示卡支援cuda功能,可利用「--enable-cuda」參數來啟動cuda功能,以使用顯示卡的GPU來加速Suricata的解析封包效能:
安裝完成後,Suricata提供了相關執行及組態檔,說明如表2所示。
表2 Suricata執行及組態檔說明
在Suricata原始碼目錄中已提供上述的組態檔,僅需複製到相關目錄即可,如下指令為複製相關組態檔至「/usr/local/suricata/etc/suricata/目錄」:
完成Suricata的系統安裝後,接下來安裝規則集,替Suricata增強偵測能力。可至「http://rules.emergingthreats.net/open/suricata/」取得最新的規則集,相關指令如下: