OpenClaw 安全部署指南:Self-Host 不等於安全
我最近在 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 不是雲端原生安全平台。
我遇到的三個坑
- 一開始圖方便開太多 mount
我曾經把整個 home 路徑掛進容器,結果權限邊界形同虛設。後來改成只掛 workspace 與必要 config,風險直接降一級。
- read-only 一開就報錯
某些流程會寫 /tmp 或 runtime 檔案。解法不是關掉 hardening,而是補 tmpfs 給它該有的暫存空間。
- 網路平面混在一起
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,歡迎留言分享你踩過的坑。大家少踩一個雷,世界就少一個凌晨三點的事故電話。
參考來源(本文引用)
- Reddit / r/selfhosted:The whole point of self-hosting your AI is to control your data... container has 2,000 known vulnerabilities
- Medium:Alex Rozdolskyi, Understanding OpenClaw — Self-Hosted AI Agents on Cloud Infrastructure
- Dev.to:LaraCopilot, What Is OpenClaw AI in 2026? A Practical Guide for Developers
- NVD:CVE-2026-25253
- Docker Docs:Docker Engine security
- OWASP:Prompt Injection