Web 應用程式防火牆 (ModSecurity)

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

Plesk for Linux 和 Plesk for Windows 都支援 ModSecurity。以 web 伺服器 (Apache 或 IIS) 模組的形式工作。

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

啟用 ModSecurity

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

  1. 請進入  工具與設定 > Web 應用程式防火牆 (ModSecurity) (在  安全性  組裡)進行操作。

    若未看到該連結,請進入 工具與設定 > 更新與升級 > 添加/移除組件 > 主機 組裡安裝 ModSecurity 組件。

    new screen

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

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

  3. 設定將被 web 應用程式防火牆引擎為每個接收 HTTP 請求檢測的規則集,或上傳自訂規則集。您可以設定以下規則集:
    • Atomic Basic ModSecurity. 與 Plesk 綁定的 Atomic ModSecurity 規則的 starter 版本。包含每月發行的重要安全功能和 bug 修復程式。欲瞭解該規則集中的所有規則,請參閱 Atomic ModSecurity 規則集
    • OWASP ModSecurity Core Rule Set (CRS). CRS 會對在 web 應用程式中找到的未知漏洞提供通用保護。該規則集免費。該規則集非常嚴格,生產使用需要額外調整。當選定了該規則集時,部分 WordPress 功能失效,web 郵箱和檔共用完全不能工作。因而可使用 Atomic 或 Comodo 規則集來替代。
    • Advanced ModSecurity Rules by Atomicorp。最新最強大的規則版本,所有性能得以提升,新增安全功能,由 Atomicorp GotRoot 每日發行 bug 修復程式。這是一個商業性的規則集,完全支援和適合生產用途。Plesk 還提供Security Core Complete by Atomicorp 額外的功能,可以在 Plesk 中啟用該規則集。您可以通過以下方式獲取額外的功能:
      • 可直接在 Plesk 線上商店中購買 Advanced ModSecurity Rules by Atomicorp 產品。
      • 如果您已有 Plesk 許可證,您則可以通過 Plesk 合作夥伴中心或合作夥伴 API 添加額外的功能(詳情請參閱 高級管理員指南)。
      • 如果您已經有 Plesk 許可證但是無法存取 Plesk 合作夥伴中心,可聯繫您的提供商。

      如果您在  Atomic 網站上已經有帳戶,您可以提供您的用戶名和密碼以啟用該規則集。

      注意:如果您購買了該功能,Plesk 使用者介面將會顯示 Advanced ModSecurity Rules by Atomicorp 而不是 Atomic Basic ModSecurity,表示完整的 Atomic ModSecurity 規則集。

      欲瞭解該規則集中的所有規則,請參閱 Atomic ModSecurity 規則集

      請注意 (Linux): 如果您選擇了 Atomic 規則集以確保 ModSecurity 運行正常。在伺服器上運行 aum -u 命令。Plesk modsecurity 套裝程式將被來自 Atomic 庫的套裝程式所替代。然後運行以下命令:

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

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

      2016-09-07_161237

  

日誌檔 (Linux)

在 Linux 系統上,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 錯誤 而不是右邊的 所有日誌 以查看某個網站的錯誤日誌。
日誌檔 (Windows)

在 Windows 系統上,ModSecurity 審計日誌是域名級別的,位於 %plesk_dir%\ModSecurity\vhosts\<domain's GUID>\logs(其中 %plesk_dir% 是 Plesk 的預設安裝目錄)。

 

禁用規則

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

要找出為何一個網站上的 HTTP 請求無法完成:

  1. 查看網站的審計日誌檔。

    在 Plesk for Linux 中,您可以使用 Plesk 的 UI 查看日誌:進入  工具與設定 > Web 應用程式防火牆 (ModSecurity) 點按 ModSecurity 日誌檔 連結下載審計日誌並在新的瀏覽器視窗中打開該日誌。

  2. 使用搜尋(在大部分的 web 瀏覽器中按下 Ctrl+F)查找出問題的網站(域名)。例如,your_domain.tld。瀏覽器將會高亮突出某些項,如 HOST: your_domain.tld. 在凸顯條目以上的三行中,找到如 --eece5138-B-- 的字串。連字號中間的八個字元(即 eece5138)是 HTTP 請求觸發的事件的 ID。
  3. 進一步查找帶有相同事件 ID 的其它條目。查找事件 ID 後面帶有字母 H 的條目(例如,eece5138-H--)。該條目包含 ID 和當檢查 HTTP 請求時觸發的安全規則的描述。安全規則 ID 是在方框內帶有 ID 首碼置於引號中的自 3 開始的一個整數 例如,[id "340003"]
  4. 使用子字串 [id "3 在事件中查找安全規則 ID。當您禁用規則時可能會使用該 ID。

若要禁用規則:

  1. 請進入  工具與設定 > Web 應用程式防火牆 (ModSecurity)進行操作。
  2. 禁用安全規則 部分,按 ID(例如,340003)、標籤(例如,CVE-2011-4898)或按常規表達(例如,XSS)選擇安全規則並點按 確定
Nginx 和 ModSecurity 說明 (Linux)

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

升級說明 (Linux)

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

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

在本小節:

Atomic ModSecurity 規則集