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 請求檢測的規則集,或上傳自訂規則集。您可以設定以下規則集:
    • OWASP ModSecurity Core Rule Set (CRS). CRS 會對在 web 應用程式中找到的未知漏洞提供通用保護。該規則集免費。該規則集非常嚴格,生產使用需要額外調整。當選定了該規則集時,部分 WordPress 功能失效,web 郵箱和檔共用完全不能工作。因而可使用 Atomic 或 Comodo 規則集來替代。
    • Atomic ModSecurity Rule Set. 最新最強大的規則版本,所有性能得以提升,新增安全功能,由 Atomicorp GotRoot 每日發行 bug 修復程式。這是一個商業性的規則集,完全支援和適合生產用途。若要在 Plesk 中啟用該規則集,請在 Atomic 網站上註冊並提供您的用戶名和密碼。

      警示: 如果您選擇了 Atomic 規則集以確保 ModSecurity 運行正常:

      在伺服器上運行 aum -u 命令。Plesk modsecurity 套裝程式將被來自 Atomic 庫的套裝程式所替代。然後運行以下命令:

      • plesk sbin modsecurity_ctl --disable
      • plesk sbin modsecurity_ctl –enable
      • service httpd restart
    • Comodo ModSecurity Rule Set. 這是一個簡單易用、可自訂規則的流量控制系統,應用頻繁更新的規則資料庫保護您的 web 應用程式防止駭客攻擊。該規則集免費。若要在 Plesk 中啟用該規則集,請在 Comodo 網站上註冊並提供您的用戶名和密碼。
  4. 若要自動更新選定的規則集,請選擇 更新規則集 核取方塊並選擇更新時段。
  5. 選擇預設的參數集或指定自訂的 ModSecurity 指令。您可以選擇以下預設的參數集:
    • Fast,當 HTTP 請求 URI 和部分資訊頭被分析時。該模式消耗的 CPU 最少。
    • Tradeoff,當 HTTP 請求 URI、資訊頭和請求 POST 資料被分析時。該模式在品質和性能之間有很好的平衡。
    • Thorough,當完整的 HTTP 請求資訊頭、請求 POST 資料和 HTTP 回應正文內容被分析時。該模式消耗的 CPU 資源最多,但是推薦用於需要特殊安全措施的網站。例如,線上商店接受卡支付。

      注意: 為了達到最優性能,web 應用程式防火牆需要本地的 DNS 伺服器啟用請求緩存功能。否則,當啟用 web 應用程式防火牆時您的網站可能會運行很慢。

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

  • ModSecurity 審計日誌(位於 /var/log/httpd/modsec_audit.log)非常詳細,whole Plesk 伺服器使用該日誌。當 ModSecurity 檢測到任何發生的事件,就會在審計日誌檔中生成一個條目。若要查看 ModSecurity 審計日誌,請進入  工具與設定 > Web 應用程式防火牆 (ModSecurity) > 點按 日誌存檔 連結 (在 ModSecurity 審計日誌 組裡)。您可在此查看 ModSecurity 日誌檔和修改日期,並下載日誌檔。
  • 域名的 Apache 錯誤日誌(位於 /var/www/vhosts/DOMAIN.TLD/logs/error_log)只包含有關網站錯誤的簡要資訊。您可以在客戶面板上的 網站與域名 > <domain_name> > 日誌 > 選擇僅 Apache 錯誤nginx 錯誤 而不是右邊的 所有日誌 以查看某個網站的錯誤日誌。

當您修改 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 的有用提示。
  • Plesk 將會安裝自己的 ModSecurity 套裝程式。但是,在升級前 檢查的過程中,Plesk 安裝程式將會詢問您是否同意在現有安裝中安裝 Plesk ModSecurity。
  • 保留現有的 ModSecurity 配置。但是,ModSecurity 有很多版本和配置,因此很難預測新舊配置會如何發生衝突。若要避免此問題的出現,請在升級到 Plesk 12(或在安裝 Plesk 的 ModSecurity 之前)保存您現有的配置並卸載 ModSecurity。