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

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

所幸,在網路上已有組織為mod_security模組設定常用的規則,可下載直接套用。但要特別強調的是,不要貪心地將所有規則均套用,因為有些規則可能並不符自身環境所需,強行套用可能會誤阻擋合法的使用者。

這裡以OWASP組織所提供的規則為例,首先至「https://www.owasp.org/」下載最新的規則集,安裝步驟如下:

先執行「tar xvzf master」解壓縮規則集(下載回來的規則檔名為master,其格式為壓縮檔)。接著執行「mkdir /usr/local/apache2/conf/crs」新建目錄,以做為放置RULE檔案的用途。

然後輸入指令「cd modsecurity_crs」切換至規則集原始碼目錄,初分為:

activated_rules:放置欲使用的規則檔案
experimental_rules:放置一些還在實驗中的規則
base_rules:放置基本的規則

緊接著,將預設的設定檔案更名為modsecurity_crs_10_setup.conf,此檔案內設定一些預設的變數,如果沒有特殊的需求,使用預設的資訊即可:


將activated_rules及base_rules/複製到crs目錄下:


接下來,至activated_rules目錄,在此目錄設定欲使用的rule檔案連結,執行指令如下:


這裡僅套用有關於SQL injection的規則,所以只設定modsecurity_crs_41_sql_injection_attacks.conf的連結:


接下來,繼續設定httpd.conf,如下所示:


重新啟動後,可試著利用一些基本SQL injection的攻擊手法(例如' or '1'='1)測試。如果一切正常,當mod_security偵測到符合的樣式,就會發出Forbidden的訊息。如圖8所示。


▲圖8 出現Forbidden提示訊息。

至此,Proxy型式的網頁防火牆即告完成!

<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案。現任職於台灣學術網路危機處理中心(TACERT)。著有「資訊安全原理與實驗」。TACERT官方網址:http://cert.tanet.edu.tw/>


追蹤我們Featrue us

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

我知道了!