當你的 WordPress 網站開啟 Cloudflare 橙色雲(Proxy)後,其實 HTTP 攻擊應該在 Cloudflare Edge 層解決,而不是在伺服器層解決。
很多人仍然使用 Fail2ban 嘗試封鎖 wp-login 攻擊,但在橙雲模式下:
- 真正連線來源是 Cloudflare IP
- iptables 無法阻擋真實攻擊者
- 即使封鎖 IP 仍然會有流量進來
✅ 正確做法是使用 Cloudflare WAF Custom Rules。
本教學會示範兩條最重要的規則:
- 保護 wp-login.php
- 封鎖 xmlrpc.php
✅ 第一條規則:保護 wp-login.php
為什麼需要?
WordPress 的登入頁面:
/wp-login.php
是全球機器人暴力破解的主要目標。
即使你沒有公開登入頁,掃描機器仍然會嘗試。
🔧 建立規則步驟
Step 1:進入 Cloudflare
- 登入 Cloudflare
- 選擇你的網站
- 點擊:
Security → WAF → Custom Rules
- 點擊:
Create rule
Step 2:設定 Rule Name
請填寫:
WP-Login Protection
Step 3:點擊「Edit expression」
不要使用上方 Select 下拉選單。
請點擊右側:
Edit expression
Step 4:貼上以下 Expression
(http.request.uri.path contains "/wp-login.php")
如果你希望自己的固定 IP 不被影響,可以使用:
(http.request.uri.path contains "/wp-login.php")
and not ip.src in {你的IP地址}
例如:
(http.request.uri.path contains "/wp-login.php")
and not ip.src in {1.2.3.4}
Step 5:選擇 Action
在「Then take action」中選擇:
✅ Managed Challenge
不要使用 Block,除非你 100% 不需要外部登入。
Step 6:點擊 Deploy
完成 ✅
✅ 效果說明
設定後:
- 大部分 bot 會被 Challenge 阻擋
- 真人用戶幾乎無感
- 攻擊流量不再直接打到伺服器
- CPU 使用率會下降
✅ 第二條規則:封鎖 XMLRPC
為什麼需要?
WordPress 的:
/xmlrpc.php
經常被利用作:
- 暴力破解
- Pingback 攻擊
- DDoS 放大攻擊
如果你沒有使用:
- Jetpack
- WordPress App
- 遠端發佈功能
✅ 建議直接封鎖。
🔧 建立規則步驟
Step 1:Create rule
同樣進入:
Security → WAF → Custom Rules
點擊:
Create rule
Step 2:Rule Name
填寫:
Block XMLRPC
Step 3:Edit expression
貼上:
(http.request.uri.path contains "/xmlrpc.php")
Step 4:Action
選擇:
✅ Block
Step 5:Deploy
完成 ✅
✅ 建議規則順序
在 Custom Rules 頁面,請確保順序如下:
- Block XMLRPC
- WP-Login Protection
Cloudflare 會由上而下執行規則。
✅ 設定完成後的架構
啟用後流量流程變成:
攻擊者 → Cloudflare WAF → 被挑戰/封鎖 → 無法到達伺服器
而不是:
攻擊者 → 伺服器 → Fail2ban 分析 → 再封鎖
✅ 安全性更高
✅ 伺服器負載更低
✅ 不再需要 Fail2ban API 同步
✅ 常見問題
Q1:會不會影響 Google?
不會。
Cloudflare 會識別合法 bot,Managed Challenge 不會影響正常搜尋引擎。
Q2:是否還需要 Fail2ban?
建議:
- 保留 Fail2ban 用於 SSH
- 保護未使用 Cloudflare 的網站
- 保護 API 服務
但對 HTTP WordPress 攻擊,可以完全交給 Cloudflare。
✅ 總結
只需兩條規則,你就可以:
- 阻止 90% WordPress 掃描攻擊
- 減少伺服器負載
- 不再依賴 API 封鎖
- 架構更清晰
Cloudflare WAF 應該成為橙雲網站的第一層防線,而不是伺服器。