2011年12月29日 星期四

記錄惡意網路封包資訊 實作Snort+BASE網頁型入侵偵測系統


隨著網路的普及化,網路安全問題也日漸嚴重,以往一般企業大多採用防火牆作為防止駭客入侵的第一道防線,但隨著網路攻擊手法的日趨成熟與多樣化,單純使用防火牆已無法建構安全的企業環境。
企 業一旦遭到攻擊,現有的防火牆經常無法即時監測並記錄攻擊,而造成日後舉證上的困難,因此具有記錄功能的入侵偵測系統逐漸被人重視。本篇文章將結合開源碼 社群最有名的入侵偵測軟體(Snort)與Web介面的管理軟體(BASE)實作一個網頁型的入侵偵測系統,而建構所需的套件如下表所示:  
什麼是入侵偵測系統
入侵偵測系統依偵測型式可分為網路型入侵偵測系統(Network-based Intrusion Detection System,NIDS)和主機型入侵偵測系統(Host-based Intrusion Detection System,HIDS)兩種。
網路型入侵偵測系統(NIDS)NIDS
通常部署在網域閘道(Gateway)上,透過竊聽(Sniffer)的方式即時監測網路上的封包並比對攻擊模式,當發現有疑似入侵行為時可適時提出警告。NIDS的網路部署如下圖所示。

▲網路型入侵偵測系統(NIDS)的網路部署。
NIDS部署在網域閘道上監控所有的封包並與攻擊模式資料庫比對,一旦發現有符合攻擊樣式的網路封包,即觸發相關事件來通知管理者。
若仔細觀察上頁圖示,會發現入侵偵測系統(Snort)是接在交換器(Switch)裝置前的集線器(Hub),而不是與Switch裝置直接連接,這是因為封包在這兩種裝置上傳遞方式不同的緣故。
在Hub上,封包則是採用廣播的方式,當封包進入到Hub時,會以廣播的方式將封包傳遞給Hub上所有的主機,但只有目的主機會接收此封包。 換句話說,在Hub上連接的主機都會接收到封包,只是沒收下來而已。在這個情況下,如果讓網卡進入所謂的混亂(Promiscuous)模式,那麼網卡就 會強制地將同一Hub上的所有封包資訊接收下來。這也是一些以竊取資料為目的木馬程式的特徵,所以有些網管人員會特別注意相關Log檔案是否有類似混亂的 字串。
不過,Snort啟動後也會強迫網卡進入混亂模式,藉此取得其他主機的封包。以Linux系統為例,可利用ifconfig指令查看目前網卡的狀況,如下圖所示,一個正常模式的網卡在此模式下僅會處理與本身相關的封包。

可利用「Ifconfig eth0 promisc」指令讓網卡進入混亂模式,右上圖所示即為一個進入混亂模式的網卡。在此模式下,網卡會處理流經Hub的所有封包,Snort即是利用此種 特性處理網域內的所有封包,並比對是否有惡意樣式的封包,所以Snort程式在執行時會將網卡設定成混亂模式。

在Switch上,則會保存一張對應表,對應連接到Switch上的每台主機埠口(這裡指的是Switch裝置上的埠而非主機上的埠)與實體位址 (MAC)的資訊。當封包流進此Switch時,會先查詢此對應表,並直將封包直接傳遞給目的主機,不相關的其他主機無法接收到封包。因此,若無經過特殊 的處理,Snort直接連在Switch上也無法取得其他主機的封包。這也是為什麼Snort主機不能直接接到Switch上從事監控作業,而必須接在 Hub上的原因。
除非,Switch提供所謂的鏡像(Mirror)埠或SPAN(Catalyst Switched Port Analyzer)功能,可將Switch上的其他埠所接收到的封包複製一份到Snort主機所在的埠口上。否則,Snort接在Switch上是無法取 得其他主機的封包,僅可取得流經自己主機的封包。
須附帶說明的是,在電腦商場內常會發現有些網路產品標示為Switching Hub(既是Switch又是Hub?),讀者可別被字面上的含義搞混了,此處所謂的Switching指的是速率可自動切換10/100M的意思。其實此類產品,本質上還是一個Hub。
NIDS的偵測方式可分為特徵比對(Signature-based)與異常偵測(Anomaly-based)兩種方式,以下分別加以說明。
特徵比對
特徵比對又稱為「不當行為偵測(Misuse Detection)」,系統會先針對入侵特徵建立一個「異常特徵資料庫」,只要NIDS偵測到的封包內容與資料庫的某個特徵相符,系統即會判別為入侵。 此種方式作法的優點是不易誤判,因為個別的攻擊行為通常擁有特殊的特徵符號,就如同病毒碼一般可精確比對出攻擊模式。
但就如上所言,此種方式是否能完整地檢測出惡意的封包,取決於「異常特徵資料庫」的完整性,異常特徵資料庫越完整,檢測出惡意封包的機率就越大,所以此種 方式無法檢測出未知的攻擊方式,因為須先有攻擊行為才會有攻擊特徵,而「異常特徵資料庫」也才能加入此種攻擊特徵。最後,NIDS才可藉此掃描出惡意封 包。Snort所採用的偵測方式,即屬於特徵比對的方式。
異常偵測
異常偵測運用統計分析的方式,先定義出正常的系統模式(以下簡稱正常模式),而後當NIDS檢測出不符合正常模式的流量時,即判別為異常。此種模式的優點 在於可偵測未知的攻擊行為,因為攻擊行為常會造成系統偏離正常模式而被檢測出來,但缺點是很難界定「正常的系統模式」為何。
舉例來說,A公司為6點下班,所以假設晚上6點後應該沒有人會使用網路,因此定義A公司網路流量在晚上6點後應小於10k,方為正常系統模式。但如果有一 天公司部門晚上加班,那流量使用必定超過原先所設定的正常模式而被歸為異常。諸如此類的問題,將使得「正常的系統模式」更加難以定義,而增加系統誤判的機 率,因此目前入侵偵測系統大都採用特徵比對方式。此外,入侵偵測系統採用NIDS的部署方式具有以下的優點:
● 成本低,僅需一台NIDS即可以監控整個網域,但要注意的是,當網路流量超過NIDS的負荷,即可能造成封包遺失,進而影響偵測的準確率。
● 有些入侵行為是利用惡意的網路行為完成,如DoS(拒絕服務攻擊),此種類的攻擊僅能利用NIDS偵測出來,而HIDS偵測不到。
● 由於NIDS在駭客入侵時即開始記錄,比較不容易被駭客消除入侵證據。
● NIDS因為採用Sniffer的方式,所以不必理會內部主機所採用的作業系統,即所謂「作業系統無關」,而HIDS高度相依於主機上的作業系統。 NIDS雖然擁有以上諸多的優點,但同時也具有下列的限制:
● 如果網路流量超過NIDS的負荷時,即可能造成封包遺失,進而影響偵測的準確率。
● 如果網路封包已被加密,NIDS將無法有效地偵測這些加密後的封包。
● NIDS僅能偵測網路的入侵,對於駭客在電腦前的實際攻擊行為則無能為力。目前有所謂的入侵防禦系統(Intrusion Prevention Systems,IPS)系統,當偵測出惡意的網路行為時,即直接利用防火牆將該惡意來源封鎖(Block),但使用此種設備須特別小心,最好是調校 NIDS至最佳狀態,即最少的誤判率時方可使用,否則可能封鎖掉正常的來源。