Cloudflare Security rules 「保護敏感目錄,但又不誤殺正常圖片」且「排除多個網段與 IP」

如果你希望達到「保護敏感目錄,但又不誤殺正常圖片」且「排除多個網段與 IP」的效果,你需要修改原本的運算式。

目前的規則因為使用了 wildcard 且沒有限制檔案類型,會導致該資料夾下所有東西(含圖片、CSS、JS)都被封鎖。

推薦的 Expression 寫法

請在 Cloudflare WAF 規則編輯頁面點擊 Edit expression,並將以下內容貼入:

Plaintext

(
  (http.request.uri.path contains "/wp-includes/" and not http.request.uri.path contains ".js" and not http.request.uri.path contains ".css" and not http.request.uri.path contains ".gif") 
  or 
  (http.request.uri.path contains "/wp-content/uploads/" and http.request.uri.path contains ".php")
) 
and not (ip.src in {140.0.0.0/8 1.1.1.1})

請將 1.1.1.1 替換為你實際的其他管理 IP。


邏輯重點說明

  • 精準防禦 wp-includes:這個目錄通常不應該被直接存取 PHP 檔案。但我排除了 .js.css,因為有些佈景主題或外掛會需要載入這裡的靜態資源,這樣寫可以避免網站版面壞掉。
  • uploads 目錄只擋 PHP:針對 /wp-content/uploads/,我們只封鎖 .php 檔案。這能精準擋掉上傳漏洞(Webshell),同時讓你所有的 .jpg.png 圖片都能正常顯示。
  • 白名單機制:後方的 and not (ip.src in { ... }) 會把你的 140 網段和其他指定 IP 排除在規則之外,讓你擁有最高權限。

設定後的檢查清單

  1. 檢查圖片:點擊你之前貼的那張圖片連結,確認是否能正常開啟。
  2. 檢查 VPS 負載:回到終端機輸入 top
    • 如果 load average 降到 1.0 ~ 2.0 之間。
    • 如果 %Cpu(s)id (idle) 數值增加。
    • 如果 php-fpm 的進程數量明顯減少。

這代表你的 WAF 已經在第一線發揮作用,把攻擊擋在 Cloudflare,你的伺服器終於可以「休息」處理正常的請求了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *