0.0.0.0 裸奔、僅依賴「內網」卻無 Token/輪替流程,以及進程可任意對外連線導致資料外傳或供應鏈拉取失控。2026 年團隊在遠端 Mac上跑 OpenClaw 時,應把「本機綁定+強鑑權+出站邊界+可稽核日誌」寫進 Runbook。下文依序給可執行檢查、配置步驟、域名清單、告警閾值、排錯指令與上線核對表;延伸可讀技能鏈與 MCP 預檢、Docker 與 CI 整合、閘道與依賴同步。說明中心、購買頁免登入可瀏覽。
部署前置檢查(Node 版本/權限模型)
官方安裝文件建議以 Node 24 為主、Node 22.16+ LTS 為相容下限;先固定執行身分再談安全邊界。
版本鎖定:node -v、npm -v;映像或 nvm 與生產一致,避免 CI 與節點原生模組行為漂移。
專用帳號:以非登入使用者或受限服務帳號跑守護程序,Home 目錄權限 700;OpenClaw 設定目錄僅該帳號可讀寫,避免同機多租戶誤讀 openclaw.json。
健康檢查:openclaw doctor、openclaw status;需要隔離配置時設 OPENCLAW_HOME 或 OPENCLAW_CONFIG_PATH,並在 Runbook 註明路徑與備份策略。
# 監聽埠與綁定位址速查(應優先看到 127.0.0.1,而非 *) lsof -nP -iTCP -sTCP:LISTEN | egrep 'node|openclaw|LISTEN'
閘道令牌與訪問控制配置步驟
最小可行模型:本機監聽+高熵 Token+前置代理可選 mTLS。公網直連僅在補齊 WAF/速率限制與證書終止時考慮。
綁定介面:閘道 listen 設 127.0.0.1;若必須遠端調用,用 SSH -R/-L 或內部 API 閘道,避免 0.0.0.0 無 ACL。
Token 注入:以環境變數或祕鑰檔提供,禁止寫入可被版控追蹤的明文;客戶端標頭名稱與伺服端校驗保持一致,輪替時同步更新 launchd plist 或 CI Variables。
守護程序:openclaw onboard --install-daemon 後,用 launchctl print gui/$(id -u)/<label> 核對 EnvironmentVariables 是否僅含必要祕鑰。
# 本機探測(示例:依實際埠與標頭名稱替換)
curl -sS -o /dev/null -w '%{http_code}\n' -H 'Authorization: Bearer YOUR_TOKEN' http://127.0.0.1:PORT/health
出站域名白名單/代理策略清單
Agent 類工作負載常觸發「任意 HTTPS 出站」;應以允許清單為預設,並把 HTTPS_PROXY/NO_PROXY 與企業防火牆規則對齊。
| 類別 | 典型域名/端點 | 配置要點 |
|---|---|---|
| 套件 registry | registry.npmjs.org、內部 Verdaccio/Artifactory | npm registry= 與 lockfile 一致;代理環境設 NO_PROXY 排除內網 registry |
| 原始碼 | github.com、gitlab.com、自架 Git | SSH 與 HTTPS 擇一固定;CI 用 deploy key/fine-grained token |
| 模型/API | 供應商文件中的 API host(如 api.openai.com 等) | 按實際路由填白名單;多供應商時分組標籤便於審批 |
| OpenClaw 生態 | openclaw.ai、文件與安裝腳本來源 | 安裝期允許,上線後可縮至僅更新窗口 |
| 大型檔案 | huggingface.co、物件儲存 CDN | 若技能會拉模型權重,單獨開權並記錄下載指紋(hash) |
# 代理與直連並存時常見環境變數(依環境替換) export HTTPS_PROXY=http://127.0.0.1:7890 export NO_PROXY=localhost,127.0.0.1,registry.internal.corp
日誌審計與告警閾值
沒有集中日誌就無法事後定責。至少區分閘道 access、應用 stderr、系統日誌三類,並為下列模式設閾值告警。
- 401/403 突增:5 分鐘內錯誤率 > 基線 3 倍或單 IP 連續失敗 > N 次,觸發 Slack/PagerDuty。
- 新路徑探測:對不存在的 admin/debug 路徑出現掃描特徵時升級為安全工單。
- 出站異常:連線目標不在白名單、或單進程短時間 DNS 解析上百個隨機子域。
- 留存:生產 access log 建議 ≥14 天(合規更高則從嚴);祕鑰與 Authorization 做遮罩後再轉存。
# 範例:檢視最近與 node 相關的統一日誌(高噪音環境請加 predicate 過濾) log show --predicate 'eventMessage CONTAINS "openclaw" OR process == "node"' --last 30m --style syslog
常見報錯定位(埠、TLS、權限)
| 現象 | 高概率原因 | 處置 |
|---|---|---|
ECONNREFUSED 連本機埠 | 服務未起或只綁 IPv6/錯埠 | launchctl list 查退出碼;lsof -i :PORT 確認監聽位址 |
certificate verify failed | 公司 MITM 代理、過期 CA 套件 | 更新系統信任庫或按安全流程匯入內部 CA;禁止全域 NODE_TLS_REJECT_UNAUTHORIZED=0 常駐 |
EACCES 寫設定或 log | 守護程序使用者無權限 | 修正目錄屬主;plist 中 WorkingDirectory 指向可寫路徑 |
| 間歇 502/逾時 | 出站被防火牆攔截或代理不通 | 對照白名單;curl -v 直連供應商 API 驗證鏈路 |
上線前安全檢查表
- 閘道僅
127.0.0.1或經受控反向代理暴露;無多餘0.0.0.0高風險埠。 - Token 已輪替並從 shell 歷史、plist、CI 日誌中清除舊值。
- 出站白名單與實際技能/模型供應商一致;代理與
NO_PROXY已驗證。 - 告警規則已接入 on-call;閘道與前置代理日誌可關聯 request id。
- 備援:守護程序
KeepAlive、磁碟空間與 log 輪替已配置。