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 當生產資產加固
- 畫資料流:頻道入口、Gateway 監聽、模型/API 出口、workspace I/O;缺邊則易預設
0.0.0.0。 - 凍結監聽契約:bind、埠、TLS 終止寫文件;變更走 PR 並附 gateway 狀態前後對照。
- 技能釘版審計:記錄 URL/commit、時間、權限;升級前
diff+最小權限複核。 - 容器唯讀範本:唯讀根、tmpfs/快取卷、明確 workspace/狀態掛載;禁止整盤掛
$HOME。 - 觀測與回滾:日誌含來源、頻道、技能結束碼;失敗可一鍵回映像/套件,見《Gateway 回滾》。
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. 可觀測性:把「被掃了」變成指標
建議追蹤:非預期來源 IP、Webhook 驗簽失敗率、技能錯誤碼分佈、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. 每週值班七查:補上閘道「漂移」
五步建立基線;七查捕獲排期壓力下的設定漂移。
- 將目前監聽與凍結的 bind 契約 diff,不一致先開單再合新頻道。
- 看 Webhook 驗簽錯誤率,對照頻道側狀態頁是否有關聯事件。
- 掃描技能版本是否存在未釘版的 latest/浮動 tag,能釘盡釘。
- 確認 workspace 與記憶檔備份工作成功,失敗須當日補齊。
- 檢查日誌與產物目錄磁碟成長,飽和前輪替或裁剪。
- 核對 Tailscale/VPN 裝置清單與在職員工、外包一致。
- 在預發用上一份黃金成品做一次受控回滾演練並留紀錄。