Cloudflare 保護 WordPress 後台|免費完成所有設定,不裝外掛不拖慢主機

想要用 Cloudflare 保護 WordPress 後台,多數教學都會建議部落客裝一堆安全外掛,其實只要善用 Cloudflare 內建的功能就能做到,完全不需要任何費用、也不會影響主機效能,這比裝任何安全外掛都還來得實用!這次分享我在 700 多個網站實戰過的設定,從 WAF 規則、一鍵開關到 SSL 強化都會帶你手把手做一次,順便提醒幾個容易踩到的坑,特別是有些設定開下去反而會擋掉 ChatGPT、Claude 這些 AI 來爬你網站的內容,得特別小心。

為什麼 WordPress 後台老是被駭客盯上?

「我的網站又沒什麼流量,駭客怎麼還會找上門?」這是部落客最常問我的問題。其實這跟你流量大小無關,WordPress 全球市佔率超過 43%,駭客只要寫一支自動程式,全網灑出去就能撈到一堆網站,每個站都試試看能不能登入後台,跟你紅不紅完全沒關係。

我幫部落客架站的這幾年,遇到網站被入侵的案例九成都是後台被亂試密碼破解。常見的攻擊方式有三種:

  • 對 /wp-login.php 不斷送出帳號密碼組合,暴力測試到開為止
  • 透過 /xmlrpc.php 一次塞 500 組密碼測試,效率是 wp-login 的 500 倍
  • 直接打 /wp-config.php、/readme.html 這些檔案,找版本漏洞進來

擋不住任何一種,網站被入侵真的只是時間問題。下面分享的這些設定,就是要把這三條路一次全堵起來。

Cloudflare 保護 WordPress 後台是什麼?

Cloudflare 保護 WordPress 後台指的是不裝任何安全外掛,把所有防護工作交給 Cloudflare 這個第三方 CDN 與資安服務商,在請求還沒進到你的主機之前就先攔截掉惡意流量,等於把一座城牆架在網站外面。

跟裝外掛的最大差別:外掛要等請求進到 WordPress、跑完 PHP、查完資料庫才能判斷要不要擋,整個過程消耗主機資源;Cloudflare 是在邊緣節點(離駭客最近的伺服器)就直接攔截,主機完全感受不到攻擊壓力。

金城事務所目前管理 700 多個 WordPress 網站,安全防護全部走這套配置,免費版就夠用、誤擋一個月不超過 5 次。下面分享 WAF 自訂規則、一鍵開關、速率限制跟 SSL/TLS 強化,跟著做就能一次打包完成。

先做這件事:放行 AI 爬蟲,不然會擋掉 ChatGPT、Claude、Gemini

在開始設安全規則之前,必須先做一件事,就是放行 AI 爬蟲。Cloudflare 從 2024 年開始預設會擋掉 ChatGPT(GPTBot)、Claude(ClaudeBot)、Gemini(Google-Extended)、Perplexity(PerplexityBot)這些 AI 來爬你網站的內容,這對部落客來說影響超大,因為現在很多人都用 AI 搜尋取代 Google,你的文章如果擋掉 AI,等於這些 AI 永遠不會引用你寫的東西。

不過要提醒一句:AI 爬蟲不是全部都值得放行。想引用你內容的搜尋型爬蟲該留,但有些只顧著大量抓資料的爬蟲,量一大照樣能把主機 CPU 爬到滿載、甚至當機,那種就該擋掉。怎麼分辨哪些該放行、哪些該擋,看:AI 爬蟲把主機爬到當機?用 Cloudflare 處理就對了

進到 Cloudflare 後台,左側選單選「網路安全 → WAF → 自訂規則」,新增一條規則放在最上面(規則由上而下執行,這條必須優先生效):

  1. 規則名稱:放行 AI 爬蟲
  2. 運算式:(http.user_agent contains “GPTBot”) or (http.user_agent contains “ChatGPT-User”) or (http.user_agent contains “ClaudeBot”) or (http.user_agent contains “Anthropic-AI”) or (http.user_agent contains “Google-Extended”) or (http.user_agent contains “PerplexityBot”)
  3. 動作:選「略過」,下方勾選「所有受管的查問與封鎖」、「Bot Fight Mode」、「Browser Integrity Check」
  4. 按「部署」儲存

這條規則設好之後,下面的安全機制再開都不會誤擋到 AI。順序很重要,先放行再加鎖,不要顛倒過來。

Cloudflare WAF 自訂規則手把手設定

WAF(Web Application Firewall,網站應用防火牆)的路徑跟剛剛一樣,「網路安全 → WAF → 自訂規則」裡面,免費版可以設 5 條,扣掉剛才放行 AI 那條,還有 4 條可以用,剛好夠把核心防護全部蓋好。

規則一:wp-login.php 限制非台灣 IP 直接封鎖

第一條規則我放在最前面,意思是只要不是從台灣 IP 連進來、又想登入後台的,全部直接封鎖:

  1. 規則名稱:wp-login 限台灣 IP
  2. 運算式:(http.request.uri.path eq “/wp-login.php” and ip.geoip.country ne “TW”)
  3. 動作:選「封鎖」
  4. 按「部署」儲存

出國的時候想登入後台怎麼辦?兩個方法都可以,暫時把這條規則停用,或在運算式加上你要去的國家代碼(例如出去日本就改成 ip.geoip.country ne “TW” and ip.geoip.country ne “JP”),出發前先設好比較不會臨時手忙腳亂。

規則二:wp-login.php 觸發受控的查問

第二條是給台灣 IP 的部落客一道緩衝,避免有人在台灣境內也跑來亂試密碼:

  1. 規則名稱:wp-login 受控查問
  2. 運算式:(http.request.uri.path eq “/wp-login.php”)
  3. 動作:選「受控的查問」(Managed Challenge)
  4. 按「部署」儲存

設好之後,所有想登入後台的請求都會先被 Cloudflare 攔下來跑一次 AI 判斷,機器人 99% 直接被擋,真人通常 1 秒內自動通過,不用做任何動作。這條跟第一條搭配著用:非台灣 IP 直接擋掉、台灣 IP 再過一次查問,雙重保險。

規則三:xmlrpc.php 直接封鎖、順便擋掉敏感檔案

xmlrpc.php 是 WordPress 早期遠端發文的介面,現在幾乎沒人在用了(Gutenberg 編輯器、Jetpack 新版 App 都改走 REST API),但它承擔了 WordPress 全網大部分的暴力攻擊流量,因為駭客可以一個請求塞 500 組密碼測試,效率是 wp-login.php 的 500 倍。順便把 /wp-config.php、/readme.html、/license.txt 這些敏感檔案也一起擋掉,這些檔案正常使用者根本不會點,會去訪問的全部都是探測:

  1. 規則名稱:封鎖 xmlrpc 與敏感檔
  2. 運算式:(http.request.uri.path eq “/xmlrpc.php”) or (http.request.uri.path in {“/wp-config.php” “/readme.html” “/license.txt”})
  3. 動作:選「封鎖」
  4. 按「部署」儲存

例外提醒:如果你還在用 Jetpack 的手機 App 發文、舊版備份等功能會需要 xmlrpc,可以把規則改成只擋敏感檔、不擋 xmlrpc,或把 xmlrpc 的動作從「封鎖」改成「受控的查問」,Jetpack 自家伺服器通常能通過。

規則四:wp-admin 路徑也限制台灣 IP

光擋 wp-login 還不夠,駭客可能直接打 /wp-admin/admin-ajax.php 之類的後台路徑繞過登入頁,所以最後一條規則把整個 wp-admin 都鎖起來:

  1. 規則名稱:wp-admin 限台灣 IP
  2. 運算式:(http.request.uri.path contains “/wp-admin/” and not http.request.uri.path contains “admin-ajax.php” and ip.geoip.country ne “TW”)
  3. 動作:選「封鎖」
  4. 按「部署」儲存

運算式中特別把 admin-ajax.php 排除掉,因為它有時候會被前台外掛使用(例如某些 AJAX 載入更多功能),如果連這個都擋掉,前台可能會壞。設好之後,駭客就算想繞過登入頁、直接打後台 API 也通通被擋。

三個 Cloudflare 一鍵開關,順手打開資安再升級

很多人會問我:WAF 規則設完還要再開哪些東西?答案是再開三個 Cloudflare 內建開關,全部都在「網路安全 → 設定」裡面,沒有任何運算式要寫、按開就好。前提是剛才那條放行 AI 爬蟲的規則一定要先設好,不然這三個開關開下去就會把 ChatGPT、Claude 這些 AI 全部擋在門外。

開關一:Bot Fight Mode 開啟

Bot Fight Mode 是 Cloudflare 自家的 Bot 偵測引擎,免費版就有。它會比對全網的惡意 Bot 指紋資料庫,自動擋掉已知的壞 Bot(爬蟲、漏洞掃描器、Spam 機器人)。路徑:「網路安全 → 設定 → Bots → Bot Fight Mode」,切到「開啟」就好。

特別提醒:這個開關預設會把 GPTBot、ClaudeBot、PerplexityBot 等 AI 爬蟲一起擋掉,這就是為什麼前面要先設「放行 AI 爬蟲」的 WAF 規則,順序千萬不能反過來,不然你寫的文章就不會被 AI 搜尋引用。

開關二:安全層級調到「高」

Cloudflare 會根據每個來源 IP 的歷史紀錄打信譽分數,安全層級設越高、就越積極攔截高風險 IP。路徑:「網路安全 → 設定 → 安全等級」,選「高」。

「我中等就好不行嗎?」其實也可以,但如果你不是大型電商或國際站,調到高幾乎不會誤殺真人,反而能多擋掉一批可疑連線,建議直接調高比較安心。

開關三:Browser Integrity Check 開啟

這個開關會檢查瀏覽器送來的 HTTP header 是否符合正常瀏覽器格式,擋掉偽造 User-Agent 的自動化工具(很多漏洞掃描器都用假的 User-Agent)。路徑:「網路安全 → 設定 → 瀏覽器完整性檢查」,切到「開啟」。AI 爬蟲都有正規完整的 User-Agent,這個開關不會影響它們。

速率限制:每分鐘超過 5 次自動封鎖 10 分鐘

WAF 規則已經擋了一輪,但有些攻擊者會用住宅 IP 慢慢試(避開 Cloudflare 信譽分數),這時候就要靠速率限制把同一個 IP 連續嘗試的次數鎖死。路徑:「網路安全 → WAF → 速率限制規則」。

  1. 規則名稱:wp-login 速率限制
  2. 運算式:(http.request.uri.path eq “/wp-login.php”)
  3. 期間:選「1 分鐘」
  4. 請求次數:填「5」
  5. 動作:選「封鎖」,期間「10 分鐘」
  6. 按「部署」儲存

意思是同一個 IP 在 1 分鐘內打超過 5 次 /wp-login.php,自動封鎖 10 分鐘。真人登入一次就過了,根本不會碰到這條限制;機器人試到第 6 次就直接被擋出去。免費版速率限制每月有 1 萬次免費判定,一個小流量網站根本用不完。

SSL/TLS 跟 Email 防護的最後一哩路

最後兩個設定不是直接擋駭客,而是斷掉駭客拿到密碼的可能。

SSL/TLS 模式設「完整(嚴格)」、強制 HTTPS

如果 SSL/TLS 模式設成「彈性」或「完整(非嚴格)」,Cloudflare 跟你主機之間的連線可能是明文的,攻擊者只要在中間任何一個節點竊聽,密碼直接被攔截。路徑:「SSL/TLS → 概觀」,加密模式選「完整(嚴格)」。再到「邊緣憑證」把「永遠使用 HTTPS」打開。

「完整(嚴格)」會要求你主機端要有合法 SSL 憑證(Let’s Encrypt 免費就有),絕大多數主機商都已預設安裝,幾乎不用擔心。免費 SSL 跟付費 SSL 怎麼挑、為什麼模式不能設彈性,看:免費 SSL 跟付費 SSL 怎麼選

Email Address Obfuscation 開啟

WordPress 後台的作者資料、留言區常會洩漏 Email,爬蟲爬到之後就會拿去暴力測試你的 WordPress 帳號(多數人帳號跟 Email 同套組合)。路徑:「ScrapeShield → Email Address Obfuscation」,切「開啟」。開啟後 Cloudflare 會自動把頁面上的 Email 轉成爬蟲讀不懂的 JavaScript 編碼,真人看到的是正常 Email、爬蟲看到的是亂碼。

不過比起防爬蟲,更根本的做法是每個網站都用不同的高強度密碼,駭客就算撈到一組也試不開其他站。要做到每站不同又夠強,靠 Bitwarden 這類密碼管理器 收好最省事。

適合誰用這套設定?不適合誰?

這套設定整體下來相當完整,但不是每個人都需要全套,這裡分享一下適合跟不適合的對象:

  • 適合:自架 WordPress 的部落客、想省外掛的網站經營者、不想花時間調整安全外掛設定的人
  • 不適合:主機商不允許掛 Cloudflare(極少數)、網站需要全球無差別開放後台(國際團隊協作)、依賴 xmlrpc.php 的特殊應用

如果你是新手或網站流量還很小,第一步先把放行 AI 爬蟲、wp-login 受控查問、xmlrpc 封鎖跟 SSL 完整嚴格這幾個做掉就能擋掉九成攻擊,剩下的可以等之後有空再慢慢加。

Cloudflare 設定跟安裝安全外掛差別在哪?

很多教學會建議部落客裝 WPS Hide Login 改後台網址、裝 Wordfence Security 做全套防護,但跟 Cloudflare 設定比起來差別非常大:

比較項目Cloudflare 設定安全外掛
攔截位置邊緣節點(駭客還沒碰到主機)主機跑完 PHP 才判斷
主機效能影響中到大(每次請求都查資料庫)
設定成本一次設好幾乎不用維護規則庫要定期更新、處理版本相容性
費用免費版完全夠用進階防護多半要付費版
國家封鎖內建 GeoIP 直接擋多半要付費版
主機被打掛時仍能擋主機掛了外掛也跟著掛

我自己的選擇是完全走 Cloudflare,省外掛、不影響速度,Cloudflare 信譽分數還會跨網站共享(其他人的網站被同個 IP 打過,你這邊也跟著擋)。

至於兩步驟驗證(Google Authenticator 那類),我自己沒裝,因為太麻煩,而且這套配置下來駭客連登入頁都看不到,2FA 變成補強而不是必要。臨時要請別人協助登入,我會開新帳號給對方用、用完直接刪掉,比共用 2FA 來得乾淨。

當然,如果你還是想幫後台多上一道兩步驟驗證,免費外掛怎麼挑、怎麼設定,甚至設成只有國外登入才要求驗證,可以看 WP 2FA 外掛教學

金城老師觀點

金城老師觀點

Cloudflare 是多數網站營運者會用的第三方服務,免費提供的功能比很多 WordPress 付費安全外掛還好用,且完全不影響主機效能。如果你只是單一網站經營者,安全設定都建議交由 Cloudflare 管理,無須再買或安裝額外外掛。

更重要的是,上面這些設定全部都是「設定一次就一勞永逸」的類型,不像安全外掛要持續更新規則庫、處理相容性問題。把時間省下來寫文章、經營部落格,比每週調安全外掛實在多了。

延伸閱讀

參考資料

常見問題

Cloudflare 免費版真的夠用嗎?需要升級付費版嗎?

對單一網站經營者來說夠用。免費版含 5 條 WAF 自訂規則、每月 1 萬次速率限制判定、Bot Fight Mode、所有內建安全開關。金城事務所管理的 700 多個網站全部走免費版,沒有任何防護缺口。付費版主要差在規則數量上限、Super Bot Fight Mode 進階功能,個人或小型部落格用不到。

Cloudflare 設定都做了,文章還會被 ChatGPT、Claude 這些 AI 爬到嗎?

只要照文章順序操作就會。Cloudflare 從 2024 年起預設會擋掉 GPTBot、ClaudeBot、Google-Extended、PerplexityBot 等 AI 爬蟲,所以必須在開 Bot Fight Mode 之前先設一條「放行 AI 爬蟲」的 WAF 規則,並把這條規則放在自訂規則列表的最上面(規則由上而下執行)。順序顛倒了就會把 AI 全部擋掉,文章不會被 AI 搜尋引用。

設了限台灣 IP 之後出國要怎麼登入後台?

兩個方法都可以。第一是登入 Cloudflare 把限台灣 IP 那條規則暫時停用,回國後再開啟。第二是把運算式加上你要去的國家,例如要去日本就改成 ip.geoip.country ne 「TW」 and ip.geoip.country ne 「JP」。建議出發前先設好,避免到當地才發現登不進來。

Cloudflare 設定都做了,還需要裝兩步驟驗證(2FA)嗎?

我自己沒裝,因為這套配置下來駭客連登入頁都看不到。但如果你的後台有多人共用(例如團隊網站),或處理敏感資料(會員資料、金流),加上 2FA 多一層保險還是好的。臨時要請別人登入,建議的做法是開新帳號給對方、用完直接刪掉,比共用 2FA 乾淨。

SSL/TLS 模式設「完整(嚴格)」之後網站打不開怎麼辦?

通常是主機沒裝 SSL 憑證或憑證過期。先到主機後台確認 Let's Encrypt 或其他 SSL 憑證是有效的,再回 Cloudflare 切「完整(嚴格)」。如果主機商沒提供免費 SSL,可以先暫時切回「完整(非嚴格)」,找時間請主機商開啟 Let's Encrypt(多數主機商都免費)。

文章目錄