Web 應用程式防火牆 (ModSecurity)
概要: 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 應用程式防火牆:
-
轉到 工具與設定 > Web 應用程式防火牆 (ModSecurity) (在 「安全性」下)。
若未看到該連結,請進入 工具與設定 > 更新 > 添加/移除組件 > 主機 組裡安裝 ModSecurity 組件。
-
設定 web 應用程式防火牆模式為 啟用 或 僅檢測 。會針對一組規則對每次接收的 HTTP 請求以及相應回應進行檢查。如果檢查成功,該 HTTP 請求就會被傳遞到網站以檢索內容。如果檢查失敗,該事件將會被記錄。在 僅檢測 模式中,不會執行任何其他操作。在 啟用 模式中,HTTP 回應將會提供一個錯誤代碼。
備註: 可在伺服器和域名級別範圍設定 web 應用程式防火牆模式。但是,域名級別模式不能高於伺服器級別模式的設定。例如,如果伺服器級別的 web 應用程式防火牆在 僅檢測 模式中運行,您將無法為域名設定 啟用 模式。只會顯示 禁用 和 僅檢測 模式。
-
(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.
-
選擇一個將被 web 應用程式防火牆引擎為每個接收 HTTP 請求進行檢測的可用規則集,或上傳自訂規則集。您可以設定以下規則集:
-
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。
-
-
若要自動更新選定的規則集,請選擇 更新規則集 核取方塊並選擇更新時段。
-
選擇預設的參數集或指定自訂的 ModSecurity 指令。您可以選擇以下預設的參數集:
-
Fast ,當 HTTP 請求 URI 和部分標頭被分析時。該模式消耗的 CPU 最少。
-
Tradeoff ,當 HTTP 請求 URI、標頭和請求 POST 資料被分析時。該模式在品質和性能之間有很好的平衡。
-
Thorough ,當完整的 HTTP 請求頭、請求 POST 資料和 HTTP 回應正文內容被分析時。該模式消耗的 CPU 資源最多,但是推薦用於需要特殊安全措施的網站。例如,線上商店接受卡支付。
備註: 為了達到最優性能,web 應用程式防火牆需要本地的 DNS 伺服器啟用請求緩存功能。否則,當啟用 web 應用程式防火牆時您的網站可能會運行很慢。
-
日誌檔 (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 應用程式防火牆模式從 禁用 或 僅檢測 到 啟用 時,網站可能會停止運行。在網站錯誤日誌中您可以找到類似 403
、 404
或 500
的錯誤代碼,您把 web 應用程式防火牆模式更改回 僅檢測 或 禁用 時這些代碼則不會出現。如果出現這樣的情況,請分析 ModSecurity 審計日誌查找原因。您可以關閉特別嚴格的安全規則或調整網站。
要找出為何一個網站上的 HTTP 請求無法完成:
-
查看網站的審計日誌檔。
在 Plesk for Linux 中,您可以使用 Plesk 的 UI 查看日誌:進入 工具與設定 > Web 應用程式防火牆 (ModSecurity) 點按 ModSecurity 日誌檔 連結下載審計日誌並在新的瀏覽器視窗中打開該日誌。
-
使用搜尋(在大部分的 web 瀏覽器中按下
Ctrl+F
)查找出問題的網站(域名)。例如,your_domain.tld
。瀏覽器將會高亮突出某些項,如HOST: your_domain.tld
. 在凸顯條目以上的三行中,找到如--eece5138-B--
的字串。連字號中間的八個字元(即eece5138
)是 HTTP 請求觸發的事件的 ID。 -
進一步查找帶有相同事件 ID 的其它條目。查找事件 ID 後面帶有字母
H
的條目(例如,eece5138-H--
)。該條目包含 ID 和當檢查 HTTP 請求時觸發的安全規則的描述。安全規則 ID 是在方框內帶有ID
首碼置於引號中的自3
開始的一個整數 例如,[id "340003"]
。 -
使用子字串
[id "3
在事件中查找安全規則 ID。當您禁用規則時可能會使用該 ID。
若要禁用規則:
- 請進入 工具與設定 > Web 應用程式防火牆 (ModSecurity) 進行操作。
- 在 禁用安全規則 部分,按 ID(例如,
340003
)、標籤(例如, CVE-2011-4898 )或按常規表達(例如,XSS
)選擇安全規則並點按 確定 。