用開源modsecurity 實作WAF網頁防火牆

大概每隔一段時間,總會有類似「某家廠商的網站被駭客入侵,大量的個人資料隨之外洩」的消息傳出,在實行個人資料保護法後,被駭的廠商可能會面臨高額的求償。在不改動原先網站伺服器架構的原則下,本文將實作Proxy型式的網頁防火牆,為在實際服務中的網站伺服器前端,阻擋相關的網頁惡意攻擊。

安裝完成後,可利用「httpd -l」指令檢查是否已將相關模組編譯至Apache伺服器內,如圖2所示。


圖2 檢查是否已將相關模組編譯至Apache伺服器。

以下僅說明本文中會使用到的mod_proxy的選項,其他更深入的選項,請自行翻閱相關文件,常用選項如表2所示。

表2 常用的mod_proxy選項

簡介mod_security

mod_security是支援Apache的一個模組,可以提供Web攻擊或Web入侵偵測及防禦,就如同是Web應用程式的防火牆(所以在此稱之為網頁防火牆),可建構它來抵擋相關的Web攻擊方式,例如資料隱碼攻擊(SQL injection Attacks)、跨網站Script攻擊(Cross-site Scripting)、目錄路徑外洩(Path Traversal Attacks)等相關的Web攻擊。編譯mod_security所需要的條件,如表3所示。

表3 編譯mod_security所需軟體

這裡將採用原始碼編譯的方式來安裝mod_security。先至mod_security官方網站取得相關原始碼(本文使用版本為2.7.5),安裝步驟如下所述(其中#為註解):


在安裝成功之後,繼續說明mod_security的過濾架構。一般存取網站伺服器的時候,通常會經過兩個步驟,第一個為要求(Request),以含有標頭及內容(Body)的HTTP要求,請求網站伺服器提供資料。

而網站伺服器在取得Request後,經過處理後,即會回覆含有標頭及內容的HTTP封包。至此一個正常的HTTP處理才算完成,存取過程如圖3所示。


▲圖3 存取網站伺服器時的運作過程。

而一個含有標頭及內容的HTTP要求的範例,則如圖4所示。


▲圖4 含有標頭及內容的HTTP要求。

基於如上所述的HTTP存取流程,mod_security總共定義了五種階段(稱為Phase10Phase5),使用者皆可在此五種階段中插入相關的規則,階段說明如表4所示。

表4 mod_security所定義的五種階段

mod_security會將所有的HTTP通訊所使用的資訊(如參數內容、來源位址等)以變數來替代,以便於使用者撰寫相關的防火牆規則,表5為常見的變數說明。

表5 mod_security常用變數說明


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!