用 Cloudflare Zero Trust 保護 Ghost 後台管理頁面

只需幾分鐘設定,讓 Ghost /ghost 路徑在進入前必須通過 Cloudflare Email OTP 驗證,免費且不影響讀者瀏覽。

分享
用 Cloudflare Zero Trust 保護 Ghost 後台管理頁面

Ghost 後台(/ghost)是整個部落格的核心,一旦被暴力破解或滲透,所有內容與設定都會曝露。本文介紹如何用 Cloudflare Zero Trust 在後台前面加上一層身份驗證,讓只有通過驗證的人才能進入 Ghost Admin。

什麼是 Cloudflare Zero Trust?

Cloudflare Zero Trust(前身為 Cloudflare Access)是 Cloudflare 提供的身份驗證閘道,可以保護任何放在 Cloudflare 後面的路徑。它的運作方式很簡單:

  • 使用者訪問受保護的路徑
  • Cloudflare 跳出登入頁面,要求身份驗證
  • 驗證通過後才放行到你的應用程式

對 Ghost 而言,我們只需保護 /ghost 路徑,讀者正常瀏覽文章完全不受影響。

事前準備

  • 網域已使用 Cloudflare 管理(NS 指向 Cloudflare)
  • 一個 Cloudflare 帳號

Step 1:開啟 Cloudflare Zero Trust

  1. 前往 Cloudflare Zero Trust Dashboard
  2. 選擇你的帳號
  3. 第一次使用需要設定一個 Team name(例如 myblog),這會成為驗證頁面的子網域(myblog.cloudflareaccess.com
  4. 選擇免費方案(Free)即可

Step 2:建立 Access Application

你可以透過 Cloudflare API 或 Dashboard 操作。以下是 API 的請求格式(需先取得你網域的 Zone ID):

POST /zones/ZONE_ID/access/apps

{
  "type": "self_hosted",
  "name": "Ghost Admin",
  "domain": "yourdomain.com/ghost",
  "session_duration": "24h",
  "http_only_cookie_attribute": true,
  "enable_binding_cookie": true
}

或直接在 Dashboard 操作:

  1. 進入 Zero Trust → Access → Applications
  2. 點選 Add an application → Self-hosted
  3. Application name:Ghost Admin
  4. Application domain:填入 yourdomain.com/ghost
  5. Session duration:24 hours
  6. 儲存

Step 3:建立 Access Policy

Policy 決定誰可以通過驗證。最簡單的做法是用 Email OTP,只允許特定 Email 進入:

POST /zones/ZONE_ID/access/apps/APP_ID/policies

{
  "name": "Allow Owner",
  "decision": "allow",
  "precedence": 1,
  "include": [
    { "email": { "email": "[email protected]" } }
  ]
}

Dashboard 操作方式:

  1. 在剛建立的 Application 裡點選 Add a policy
  2. Policy name:Allow Owner
  3. Action:Allow
  4. 在 Include 區塊新增規則:Emails → 填入你的 Email
  5. 儲存

實際效果

設定完成後,訪問 /ghost 路徑時,會先看到 Cloudflare Access 的登入頁面,要求輸入 Email:

Cloudflare Access login page asking for email verification code
訪問 /ghost 時出現的 Cloudflare Access 驗證頁面

輸入 Email 後,Cloudflare 會發送一封包含 6 位數驗證碼的信件:

Cloudflare Access verification code email with 6-digit OTP code
Cloudflare 寄出的驗證碼信件,10 分鐘內有效

輸入驗證碼後才會進入 Ghost 後台。Session 預設 24 小時,期間同一瀏覽器不需要重新驗證。

注意事項

  • 不影響讀者:Zero Trust 只保護 /ghost 路徑,前台文章頁面完全正常
  • Ghost 本身的登入不受影響:通過 Cloudflare 驗證後,仍需輸入 Ghost 帳號密碼,形成雙層保護
  • 免費方案限制:Cloudflare Zero Trust 免費方案每月最多 50 位使用者,個人部落格完全足夠
  • Team name 不可修改:設定後無法更改,請謹慎選擇

結語

整個設定只需幾分鐘,完全免費,卻能大幅提升後台的安全性。尤其對放在公開網路上的 Ghost 部落格來說,這是一個非常值得加上的防護層。