概要: In this topic, you will learn how to protect your web applications (such as WordPress, Joomla!, or Drupal) from attacks using ModSecurity, an Open Source web application firewall.

The topic gives a short overview of the way ModSecurity works, and also explains how to enable and configure it.

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

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

啟用 ModSecurity

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

  1. 轉到 工具與設定 > Web 應用程式防火牆 (ModSecurity) (在 「安全性」下)。

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

    image mode selector

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

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

  3. (Plesk for Linux only) Go to the 「Settings」 tab, and then select the desired ModSecurity version from the Run rules on drop-down menu:

    • Apache (ModSecurity 2.9) (recommended). ModSecurity 2.9 only works for domains with 「Proxy mode」 enabled in Apache & nginx Settings.
    • Nginx (ModSecurity 3.0). ModSecurity 3.0 can only use rule sets from OWASP and Comodo. We strongly recommend trying ModSecurity 3.0 on a test server before using it in your production environment.
  4. 選擇一個將被 web 應用程式防火牆引擎為每個接收 HTTP 請求進行檢測的可用規則集,或上傳自訂規則集。您可以設定以下規則集:

    image rule sets

    • Atomic Standard(免費,可升級到 Atomic Advanced)。與 Plesk 綁定的 Atomic ModSecurity 規則的 starter 免費版本。包含每月發行的重要安全功能和 bug 修復程式。欲瞭解該規則集中的所有規則,請參閱 Atomic ModSecurity 規則集

    • OWASP (免費)。OWASP ModSecurity Core Rule Set (CRS) 會對在 web 應用程式中找到的未知漏洞提供通用保護。該規則集免費。該規則集非常嚴格,生產使用需要額外調整。當選定了該規則集時,部分 WordPress 功能失效,web 郵箱和檔共用完全不能工作。因而可使用 Atomic 或 Comodo 規則集來替代。

    • (Plesk for Linux) Comodo(免費)。一個簡單易用、可自訂、基於規則的流量控制系統,能夠保護基於web的應用程式,使用頻繁更新的規則資料庫防止新出現的駭客技術的攻擊。

    • Atomic Advanced 。最新最強大的規則版本,所有性能得以提升,新增安全功能,由 Atomicorp GotRoot 每日發行 bug 修復程式。這是一個商業性的規則集,完全支援和適合生產用途。Plesk 還提供 Security Core Complete by Atomicorp 額外的功能,可以在 Plesk 中啟用該規則集。您可以通過以下方式獲取額外的功能:

      • 可直接在 Plesk 線上商店 中購買 Advanced ModSecurity Rules by Atomicorp 產品。
      • 如果您已經有 Plesk 許可證,則可以通過 Plesk Partner Central UI 或 Partner API 添加額外的功能(詳情請參閱 Partner Central 使用者指南Partner API 3.0 參考)。
      • 如果您已經有 Plesk 許可證但是無法存取 Plesk 合作夥伴中心,可聯繫您的提供商。

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

      備註: 若您獲取此額外的功能,Plesk 介面將會顯示 Atomic Advanced 而不是 Atomic Standard(免費,可升級到 Atomic Advanced),表示這是完整的 Atomic Advanced ModSecurity 規則集。

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

    • 自訂規則集。您可以上傳自訂的 web 應用程式防火牆規則集,例如,Atomic 的試用包或 Comodo 的免費包。支援的格式:zip、tar.gz、tgz、tar.bz2、conf。

  5. 若要自動更新選定的規則集,請選擇 更新規則集 核取方塊並選擇更新時段。

  6. 選擇預設的參數集或指定自訂的 ModSecurity 指令。您可以選擇以下預設的參數集:

    • Fast ,當 HTTP 請求 URI 和部分標頭被分析時。該模式消耗的 CPU 最少。

    • Tradeoff ,當 HTTP 請求 URI、標頭和請求 POST 資料被分析時。該模式在品質和性能之間有很好的平衡。

    • Thorough ,當完整的 HTTP 請求頭、請求 POST 資料和 HTTP 回應正文內容被分析時。該模式消耗的 CPU 資源最多,但是推薦用於需要特殊安全措施的網站。例如,線上商店接受卡支付。

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

      image configuration

日誌檔 (Linux)

在 Linux 系統上,ModSecurity 使用兩個位址來存儲日誌:

  • ModSecurity 審計日誌(位於 /var/log/modsec_audit.log)非常詳細,該日誌被整個 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. Search further for other entries with the same event ID. Look for an entry with the letter H after the event ID (in our example, eece5138-H--). This entry contains the ID and description of the security rule triggered while checking the HTTP request. The security rule ID is an integer number in quotation marks with the prefix id in square brackets (for example, [id "340003"] or [id "913102"]).

  4. Find a security rule ID in the event using the substring (for example, [id "3). This ID can be used when you switch off rules.

若要禁用規則:

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