OpenClaw 安全部署指南:Self-Host 不等於安全

OpenClaw Mar 2, 2026

我最近在 r/selfhosted 看到一篇貼文,標題大意是:「我為了掌控資料才 Self-Host OpenClaw,結果官方容器掃出 2k+ CVE,還有 10 個 critical,這是什麼地獄笑話?」

老實說我第一反應不是震驚,而是點頭。因為這就是 Self-Host 的現實:你拿回了控制權,也拿回了風險責任。

就像把家裡鑰匙從物業拿回來,你確實更自由;但門鎖壞掉、監視器沒裝、窗戶沒關,也得你自己扛。

所以這篇想講一句話:Self-Host 不等於安全,但可以做到足夠安全。


五層防禦架構:把 OpenClaw 當「半個 production 系統」來管

以下是我目前實務上最穩定的做法,每一層都用「問題 → 風險 → 具體做法」來拆。

Layer 1:容器層(Container)

問題:很多人直接 :latest 拉下來就跑,連 base image 內容都沒看。

風險:高風險 CVE 疊在可執行指令的 Agent 上,爆炸半徑會比一般 Web App 大。

具體做法:

  • 建置前掃描:用 Trivy 或 Grype 先掃 image。
  • 避免 root:容器改成非 root user 執行。
  • read_only: true:把 root filesystem 設為唯讀,僅對必要路徑開可寫 volume(注意:OpenClaw 需要 .openclaw 目錄可寫,用來存 session 資料、向量 DB 和日誌)。
  • cap_drop: ["ALL"]:先全關,再按需開最少能力。
  • security_opt: ["no-new-privileges:true"]:封住提權捷徑。

我現在的原則很簡單:讓容器「能跑任務」即可,不要「能做任何事」。

Layer 2:網路層(Network)

問題:把 OpenClaw 的 port 直接暴露到公網,覺得有密碼就夠。

風險:被掃描、被撞擊、被漏洞鏈帶走;尤其 AI Agent 端點常是新攻擊目標。

具體做法:

  • 只綁 127.0.0.1,不直接對外。
  • 對外入口走 reverse proxy(Nginx/Caddy)。
  • 全程 TLS,拒絕明文傳輸。
  • 能放內網就放內網,遠端管理走 VPN / Zero Trust。

一句話:Gateway 不該是社區大門口,它應該是家裡書房。

Layer 3:認證層(Auth)

問題:預設密碼、長期有效 token、共用帳號。

風險:一把 token 外流,等同把你的 shell、檔案、整合服務一起送人。

具體做法:

  • 啟用 Gateway TLS(含自簽憑證也比裸奔好)。
  • Token 最小權限、定期輪替。
  • 不用預設帳密,改強密碼與獨立帳號。
  • 把高權限金鑰與一般 API key 分離存放。

如果你把 OpenClaw 當「全能助理」,那它的 credential 管理就該比你公司 VPN 還嚴。

Layer 4:Prompt 安全(Prompt Security)

問題:大家會防網路,卻忘了防 Prompt Injection。

風險:惡意內容可誘導 Agent 越權操作、外送資料、覆寫記憶甚至執行危險命令。

具體做法:

  • 高風險工具(shell、email、外部 API)設 allowlist。
  • 對外部文字來源加「不可信內容」處理流程。
  • 關鍵動作加人工確認(human-in-the-loop)。
  • 分離「閱讀環境」與「執行環境」,避免一條龍自動化過度。

Alex Rozdolskyi 在 Medium 上講了一句我很認同的話:ClawHub 上的 Skill 本質上就是可執行程式碼。你不會隨便撿路邊的 USB 往電腦插吧?安裝第三方 Skill 前不審查,道理是一樣的。

Layer 5:供應鏈(Supply Chain)

問題:技能、套件、映像檔都在更新,卻沒有版本治理。

風險:某個上游被污染,整條鏈一起中毒。

具體做法:

  • 第三方 skills 先 fork 再審查。
  • 依賴版本釘選(pin version),避免不預期升級。
  • 每月固定安全更新窗口,不要「有空再補」。
  • 更新前後都掃一次 CVE,差異要可追蹤。

我的做法是把這件事當刷牙:不會因為昨天沒蛀牙,今天就不刷。


實戰:Synology DS-920+ 上的 Docker Hardening

我自己長期跑在 DS-920+,它很好用,但你要接受現實:NAS 不是雲端原生安全平台。

我遇到的三個坑

  1. 一開始圖方便開太多 mount

我曾經把整個 home 路徑掛進容器,結果權限邊界形同虛設。後來改成只掛 workspace 與必要 config,風險直接降一級。

  1. read-only 一開就報錯

某些流程會寫 /tmp 或 runtime 檔案。解法不是關掉 hardening,而是補 tmpfs 給它該有的暫存空間。

  1. 網路平面混在一起

OpenClaw 與其他服務同網段時,橫向移動風險明顯上升。後來我把它切到獨立 network,只透過 proxy 中介。

docker-compose.yml(hardening 範例)

services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:2026.2.26  # 請替換為部署時的最新版本
    user: "1000:1000"
    read_only: true
    tmpfs:
      - /tmp:size=512m,mode=1777   # OpenClaw 的 jiti 編譯快取和嵌入模型需要暫存空間
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    ports:
      - "127.0.0.1:18789:18789"
    volumes:
      - ./data:/home/node/.openclaw:rw          # sessions、vector DB、logs(必須可寫)
      - ./workspace:/home/node/.openclaw/workspace:rw  # Agent 工作目錄
      - ./openclaw.json:/home/node/.openclaw/openclaw.json:rw  # 設定檔(需要可寫才能用 config.patch)
    networks:
      - openclaw_net
    restart: unless-stopped

networks:
  openclaw_net:
    driver: bridge
    # 注意:不要用 internal: true,OpenClaw 需要連外呼叫 LLM API
    # 入站限制請用防火牆規則或 reverse proxy 處理

幾個踩坑提醒:

  • /home/node/.openclaw 必須可寫:OpenClaw 會在這裡存 session 資料、memory-vector.db、.jsonl 日誌。如果設成唯讀,啟動後所有對話都會失敗。
  • 不要用 internal: true 網路:這會完全切斷出站連線,OpenClaw 需要呼叫 Anthropic、Google、OpenAI 等外部 API。想限制入站,用防火牆或 reverse proxy 就好。
  • tmpfs 建議 512MB 以上:256MB 在大量工具呼叫或嵌入模型載入時可能不夠用。

這份不是銀彈,但它能把「預設開放」改成「預設收斂」,同時確保 Agent 還能正常工作。


Hardening Checklist(可直接複製)

必做(Baseline)

項目 狀態
容器改為非 root user
啟用 read_only + tmpfs(保留 .openclaw 可寫)
cap_drop: ALL + no-new-privileges
Gateway 僅綁定 localhost(出站保持暢通)
對外流量經 reverse proxy + TLS
移除預設密碼,輪替 API token
第三方 skills 安裝前審查
每次部署前跑 CVE 掃描

進階(Advanced)

項目 狀態
對外網域 egress allowlist
高風險工具加人工核准流程
依賴與映像版本 pinning
每月固定 patch window + 回歸測試
備份策略(workspace + config + key)
監控與告警(異常命令/流量)

收尾:安全不是「開關」,是持續維運的肌肉

Dev.to 的文章把 OpenClaw 講得很吸引人,這沒錯;但它也提醒了 CVE-2026-25253 這類事件,代表我們不能只看功能,不看攻擊面。

我現在的心法是:把 OpenClaw 當成「會幫你做事的同事」,不是「會魔法的寵物」。同事要管權限、要審計、要留紀錄;Agent 也一樣。

完美的安全性不存在,但合理的安全性可以做到。

下一篇我會寫 Multi-Agent 監控架構,聊聊怎麼把「看得到、追得回、關得掉」做成日常。

如果你也在 NAS 或 VPS 上跑 OpenClaw,歡迎留言分享你踩過的坑。大家少踩一個雷,世界就少一個凌晨三點的事故電話。


參考來源(本文引用)

  1. Reddit / r/selfhosted:The whole point of self-hosting your AI is to control your data... container has 2,000 known vulnerabilities
  2. Medium:Alex Rozdolskyi, Understanding OpenClaw — Self-Hosted AI Agents on Cloud Infrastructure
  3. Dev.to:LaraCopilot, What Is OpenClaw AI in 2026? A Practical Guide for Developers
  4. NVD:CVE-2026-25253
  5. Docker Docs:Docker Engine security
  6. OWASP:Prompt Injection

Tags