Web 應用程式防火牆 (ModSecurity)

為了檢測和阻止對 web 應用程式的攻擊,web 應用程式防火牆 (ModSecurity) 會檢測所有違反規則集的到 web 伺服器的請求以及來自伺服器的相關回應。如果檢查成功,該 HTTP 請求就會被傳遞到網站內容。如果檢測失敗,則會執行預定義的操作。

ModSecurity 是 Apache 的一個模組。因此,只能檢查到達 Apache HTTP 請求。Apache 可輔以另一款 web 伺服器 - nginx。如果您啟用 由 nginx 處理 PHP 選項用於處理網站的動態內容,web 應用程式防火牆將無法檢查 HTTP 請求因為這些請求永遠不會到達 Apache。對於靜態內容,如果啟用了 由 nginx 直接服務靜態檔 選項,HTTP 請求將不會到達 Apache,因此 ModSecurity 將不會對其檢查。

注意: 若要使用 web 應用程式防火牆 (ModSecurity), ,從 Plesk 11.5 升級的管理員必須從 Odin 或其供應商獲取 Plesk 12 的許可證金鑰。

若要啟用 web 應用程式防火牆:

  1. 請進入  工具與設定 > Web 應用程式防火牆 (ModSecurity) (在  安全性  組裡)進行操作。必須在您的伺服器上安裝 ModSecurity 元件。


    Web_Application_Firewall

  2. 設定 web 應用程式防火牆模式為 啟用僅檢測。會針對一組規則對每次接收的 HTTP 請求以及相應回應進行檢查。如果檢查成功,該 HTTP 請求就會被傳遞到網站內容。如果檢查失敗,該事件將會被記錄。在 僅檢測 模式中,不會執行任何其他操作。在 啟用 模式中,HTTP 回應將會提供一個錯誤代碼。

    注意: 可在伺服器和域名級別範圍設定 web 應用程式防火牆模式。但是,域名級別模式不能高於伺服器級別模式的設定。例如,如果伺服器級別的 web 應用程式防火牆在 僅檢測 模式中運行,您將無法為域名設定 啟用 模式。只會顯示 禁用僅檢測 模式。

  3. 設定將被 web 應用程式防火牆引擎為每個接收 HTTP 請求檢測的規則集,或上傳自訂規則集。您可以設定以下規則集:
  4. 若要自動更新選定的規則集,請選擇 更新規則集 核取方塊並選擇更新時段。
  5. 選擇預設的參數集或指定自訂的 ModSecurity 指令。您可以選擇以下預設的參數集:

ModSecurity 使用兩個位址來存儲日誌:

當您修改 web 應用程式防火牆模式從禁用僅檢測啟用時,網站可能會停止運行。在網站錯誤日誌中您可以找到類似 403404500 的錯誤代碼,您把 web 應用程式防火牆模式更改回 僅檢測禁用 時這些代碼則不會出現。如果出現這樣的情況,請分析 ModSecurity 審計日誌查找原因。您可以關閉特別嚴格的安全規則或調整網站。

要找出為何一個網站上的 HTTP 請求無法完成而關閉安全規則:

  1. 請進入  工具與設定 > Web 應用程式防火牆 (ModSecurity)進行操作。
  2. 點按 ModSecurity 日誌檔 連結下載審計日誌並在新視窗中打開。
  3. 使用搜尋(在大部分的 web 瀏覽器中按下 Ctrl+F)查找出問題的網站(域名)。例如,your_domain.tld。瀏覽器將會高亮突出某些項,如 HOST: your_domain.tld,在高亮突出的三行中找出字串 --eece5138-B--。連字號中間的八個字元(即 eece5138)是 HTTP 請求觸發的事件的 ID。
  4. 進一步查找帶有相同事件 ID 的其它條目。查找事件 ID 後面帶有字母 H 的條目(例如,eece5138-H--)。該條目包含 ID 和當檢查 HTTP 請求時觸發的安全規則的描述。安全規則 ID 是在方框內帶有 ID 首碼置於引號中的自 3 開始的一個整數 例如,[id "340003"]
  5. 使用子字串 [id "3 在事件中查找安全規則 ID。
  6. 請進入  工具與設定 > Web 應用程式防火牆 (ModSecurity)進行操作。
  7. 安全規則 中,按 ID(例如,340003)、標籤(例如,CVE-2011-4898)或按常規表達(例如,XSS)選擇安全規則並點按 確定

針對在升級到 Plesk 12 之前於伺服器上安裝了 ModSecurity 的有用提示。