2026_OPENCLAW
GATEWAY_
SURFACE_
BIND_AUDIT.

// 痛點:Gateway 已上線,但監聽位址Webhook管理埠是否僅存在聊天記錄裡?ClawHub 技能是否釘版審過?容器是否仍掛整個家目錄?結論:本文給出綁定/反代/Tailscale/SSH對照、五步加固、技能審計與唯讀根+卷白名單,以及遠端 Mac 常駐提示。延伸:《安裝三棧》《Docker 部署》《Gateway systemd/launchd》《遷移重配對》《記憶與 Token》《SSH/VNC》《方案》。

網路安全與存取控制示意

1. 痛點拆解:暴露面不是「埠開了就好」

(1)綁定語意0.0.0.0 開發方便但在生產等於向所有網路介面暴露管理面;與區網掃描、誤設防火牆、IPv6/雙棧漏規則疊加後風險陡增,監聽清單應隨版本迭代複核。

(2)技能層供應鏈:ClawHub 技能即 workspace 側可執行路徑;無釘版與 diff的升級可能帶來過度權限或隱蔽外聯。安裝時拉取的遞迴依賴也可能在變,即使技能 headline 版本未改;建議在 CI 記錄完整解析結果,雜湊漂移未經審核即失敗。

(3)容器與掛載:唯讀根須配資料卷白名單,否則失控工作仍可寫爆掛載路徑。唯讀旗標擋不住「過寬的允許掛載」帶來的憑證整盤可讀;在威脅模型含提示注入驅動工具呼叫時,應疊加主機檔案權限與 seccomp/AppArmor 等約束。

2. 接入拓撲對照:本機綁定、反代、Tailscale 與 SSH 隧道

模式 適用 代價/注意
127.0.0.1+本機用戶端 個人開發、無遠端需求、最小暴露 遠端除錯需額外隧道;別把「本機」誤解成「安全」,惡意本機軟體仍可存取
反向代理+TLS(可配 mTLS) 需要 HTTPS 終止、統一稽核日誌、WAF/速率限制 憑證與上游健康檢查維運成本;避免雙端明文
Tailscale/WireGuard 疊加僅內網位址 小團隊遠端維運、不想把管理口暴露在公網 身分與裝置清單治理(離職裝置吊銷);ACL 要寫清埠號
SSH -L 本機轉發 臨時排障、Jump Host 已存在、最短改造 長期依賴易變成「人形隧道」;應用層仍應收斂綁定

對照表可協調安全與交付:反代集中 TLS 但私鑰與健康檢查成新單點;Tailscale 縮公網暴露但要裝置清單與吊銷流程;SSH 轉發宜救火,長期「人肉隧道」難稽核。每環境選一主模式,例外入變更單。

更換接入模式時,用同一套煙測重放:健康檢查端點、代表技能一次成功呼叫、一次應被拒絕的路徑。保留結構化日誌或擷取片段,與工單並存,讓稽核能對照「設定—觀測—行為」三角,而不是只看 README。

3. 落地五步走:把 Gateway 當生產資產加固

  1. 畫資料流:頻道入口、Gateway 監聽、模型/API 出口、workspace I/O;缺邊則易預設 0.0.0.0
  2. 凍結監聽契約:bind、埠、TLS 終止寫文件;變更走 PR 並附 gateway 狀態前後對照。
  3. 技能釘版審計:記錄 URL/commit、時間、權限;升級前 diff+最小權限複核。
  4. 容器唯讀範本:唯讀根、tmpfs/快取卷、明確 workspace/狀態掛載;禁止整盤掛 $HOME
  5. 觀測與回滾:日誌含來源、頻道、技能結束碼;失敗可一鍵回映像/套件,見《Gateway 回滾》。
# 心智檢查(非單一真值指令;依你的安裝棧替換) # gateway listen 是否落在 127.0.0.1 或明確內網介面? # 反代 upstream 是否僅指向 loopback,而非再次 0.0.0.0? # docker run 是否含 --read-only 與明確 -v 白名單?

4. 可引用閾值與成本清單(審核向)

寫進安全審核可用的量級(依你的威脅模型複評):

  • 30 分鐘內列不出監聽位址與埠 → 高漂移:先凍結文件與探測再加頻道。
  • 技能 >15 且半數未做雜湊/diff → 強制季審+釘版
  • 可寫掛載大於業務最小集(如整盤 $HOME)→ 下窗拆卷

5. 遠端 Mac 常駐 Gateway:何時值得獨立節點

訊號 建議動作
筆電闔蓋睡眠導致頻道掉線、Webhook 積壓 遷到遠端常駐 Mac或專用 VPS;launchd 與電源策略單獨驗收,參閱《SSH/VNC 選型
同機混跑圖形/轉碼與 Gateway,頻繁 OOM 或埠爭用 行程與機器隔離;遠端節點專注 Gateway+輕量工具面
需要把管理口完全移出辦公網 Tailscale ACL+僅綁定 tailnet IP;公網側只留頻道 Webhook 入口經反代
升級後鑑權漂移(見《無回覆排錯》) 升級前備份 workspace 與狀態目錄,《遷移清單》重跑配對

6. FAQ:Webhook 要不要驗簽?技能能不能自動更新?

問:生產環境是否應監聽 0.0.0.0預設應否;確需時須工單、時限、回滾與威脅建模背書。常態應為迴環或 tailnet 位址+反代,勿照搬「監聽所有介面」到公網。

問:Webhook 與管理/偵錯路由如何隔離?在反代用不同主機名或路徑前綴、不同限速桶;盡量拆分憑證。勿把健康檢查、指標與 Webhook 混在同一無前綴路徑。日誌須帶請求類別標籤,便於事故時濾噪。

問:安裝技能前最低限度審什麼?發布者、commit/雜湊、檔案/子行程/網路權限、隱含外聯;與釘版唯讀 diff,觸及憑證路徑或擴大 glob 須第二人複核。

問:Webhook 入口如何最小暴露?在反代層做路徑級隔離與速率限制;應用層驗簽金鑰獨立輪替;禁止把偵錯介面與 Webhook 同路徑前綴混用。

問:技能自動更新安全嗎?僅當發布管道可控(內網映像、可信 tarball)且 CI 對釘版夾具重放煙測時可自動;公網 always-latest 應限沙箱,勿與持有長生命週期 Token 的主機同棧。

問:MEMORY.md 與技能權限有關嗎?記憶檔擴大的是資料暴露面,不是網路面,但同樣要備份與權限位元控制;參見《記憶治理》。

問:Docker 唯讀後設定寫哪?僅允許白名單卷與 tmpfs;設定變更應透過映像版本或受控掛載檔,而不是在唯讀層上「臨時 chmod」。持久金鑰勿落在容器內世界可讀路徑。

7. 深度分析:從「能連上」到「能究責」

2026 年自建 Agent 閘道的常態是:功能迭代快於安全基線文件。OpenClaw 一類閘道同時接觸外部訊息入口內部工具執行面,其風險模型接近「小型 API 閘道+工作流程引擎」的合體:任何一條未鑑權的偵錯路由、任何一個過度寬泛的檔案 glob,都會在真實業務裡被放大。失敗模式也不止於遠端利用,還包括偽造 Webhook、金鑰多環境輪替不同步導致驗簽雪崩等維運型事故。

暴露面治理的核心不是堆砌防火牆規則,而是把監聽與回呼寫進可版本化的契約:誰在什麼介面監聽、哪個上游可以打到它、哪張憑證終止 TLS——這些應和程式變更同樣走審核。否則「昨天還能用」往往等價於「昨天有人改了 bind 位址但沒人記得」。ClawHub 帶來速度也帶來供應鏈雜訊:應把技能當第三方服務管理——釘版、對升級做差異摘要;無摘要的上線預設拒絕。若上游只提供浮動 tag,應映像到你掌控的成品庫再晉升。

容器唯讀根若不配最小卷白名單,仍可能透過掛載把 SSH 金鑰、雲端憑證整盤暴露;Runbook 應寫明允許路徑並在策略測試裡攔截「圖省事」式掛載。遠端 Mac 常駐時須用 launchd 明確守護域與日誌輪替,避免綁在會睡眠或登出的互動工作階段上。圖形或推理重載與 Gateway 同機時,記憶體與尾延遲爭用會導致頻道掉線,必要時行程與機器隔離。

8. 可觀測性:把「被掃了」變成指標

建議追蹤:非預期來源 IPWebhook 驗簽失敗率技能錯誤碼分佈Gateway 重啟磁碟寫入突增出站連線扇出。驗簽飆升多因金鑰輪替不同步;寫盤飆升多因日誌或技能大檔;出站網域突變優先 diff 近期升級的技能。

告警路由應指向能改 bind 與技能釘版的角色,而非僅通用基礎設施值班——許多事故透過回滾設定 PR 比加機器更快止血。

觀測項 蒐集方式 異常時優先懷疑
管理口出現公網掃描 反代存取日誌+地理/ASN 過濾 bind 暴露、錯誤發佈防火牆、雙棧 IPv6 漏規則
技能呼叫延遲尾增 依技能名分桶 p95 外聯 API 限速、磁碟 I/O、模型端點抖動
容器重啟循環 編排事件或 launchd 日誌 唯讀根上寫設定、卷權限、健康檢查誤殺

9. 對內審核:安全證據包應包含什麼

除截圖外,應交付:監聽與回呼清單(含變更 diff)技能版本表與雜湊/提交 ID反代/Tailscale ACL 片段容器掛載拓撲圖最近兩次升級的回滾驗證紀錄。無回滾驗證的上線在事故中往往無法止損。

10. 收束:自建閘道能跑與能稽核是兩件事

(1)限制:單機混跑、預設 bind、技能無審計時,攻擊面與維運面耦合;金鑰外洩的影響半徑取決於掛載與工具權限。(2)遠端 Mac:專用常駐節點可穩定頻道與 Webhook,launchd 與日誌策略與桌面棧一致。(3)MACGPU:可租賃遠端 Mac 降低辦公機睡眠與混載風險;CTA 指向首頁與說明。(4)自檢:從外網或辦公網對照文件掃描宣告埠,不一致先修設定或文件。

11. 實戰補充:與安裝棧和 Docker 的銜接

npm、Docker Compose、pnpm 三套路徑決定資料目錄與回滾路徑;加固清單須隨棧切換更新,並與《安裝三棧》《Docker 部署》《Gateway systemd/launchd》對齊。使用者態與 root 可寫目錄、升級節奏不同,勿把某台筆電的臨時 setup 當成生產範式。

12. 每週值班七查:補上閘道「漂移」

五步建立基線;七查捕獲排期壓力下的設定漂移。

  1. 將目前監聽與凍結的 bind 契約 diff,不一致先開單再合新頻道。
  2. 看 Webhook 驗簽錯誤率,對照頻道側狀態頁是否有關聯事件。
  3. 掃描技能版本是否存在未釘版的 latest/浮動 tag,能釘盡釘。
  4. 確認 workspace 與記憶檔備份工作成功,失敗須當日補齊。
  5. 檢查日誌與產物目錄磁碟成長,飽和前輪替或裁剪。
  6. 核對 Tailscale/VPN 裝置清單與在職員工、外包一致。
  7. 在預發用上一份黃金成品做一次受控回滾演練並留紀錄。