2026 OpenClaw 本番向けハードニング:露出面・ゲートウェイToken・サンドボックス・Macクラウド隔離チェックリスト
openclaw dashboard が動いても本番とは限りません。デフォルトリスン、弱い認証、ログへの秘密、過剰な外向き通信は2026年にそのままインシデントになります。初回5ステップとDocker/npm/ソース比較を終えたチーム向けに、5分類の露出チェック表、Token最小権限と6ステップローテ手順、業務別サンドボックス/egressの組み合わせ、Macクラウドでの役割分離とスナップショット戻し、よくあるエラーとの突き合わせポイントをまとめます。
1. 代表的な5つの露出面
ゲートウェイをインターネットに晒し強い認証がない場合、スクリプト可能なリモート操作口になります。ポート18789を0.0.0.0/0に開けると短時間でスキャンが来ます。下表を社内チェックリストにし、トラブルシュート記事と併用してください。
| 種類 | 兆候 | 深刻度 | 最初の対策 |
|---|---|---|---|
| リスン範囲 | 18789が公網到達 | 高 | ループバック/社内NICのみ、SGはデフォルト拒否 |
| 認証 | Tokenなし・弱い共有鍵 | 高 | 高エントロピーToken、サービス別キー、ローテ |
| 発見/デバッグ | mDNSやdebug APIが残存 | 中 | 本番で無効化 |
| 外向き通信 | 任意URLやメタデータIPへ到達可 | 高 | ドメイン許可リスト、必要ならプロキシ |
| 秘密の漏洩 | DEBUGでToken、.envをイメージに焼く | 高 | ログマスキング、実行時注入、マルチステージビルド |
コンテナは万能バリアではなく、ホストパスやDockerソケット共有でサンドボックスが無効化されます。アップグレードでデフォルトが変わるため設定をGit管理してください。
技術メモ:18789はファイアウォールで明示拒否をデフォルトに。openclaw doctorのJSON出力を版管理ストレージへ定期送信し差分検知に使えます。
2. ゲートウェイとToken
誰が・どこへ・何をできるかを分離し、本番は基本的に127.0.0.1バインド+SSHトンネルまたはmTLSリバプロを推奨します。
- 利用者インベントリ(CI/監視/端末)
- 新Token発行と旧Token失効ウィンドウ(例:72h)
- ステージングまたは1台のMacノードでカナリア
- 401/403の増加監視
- 期限後に旧Token削除とリロード
- チケットID付き監査記録
リバプロではTLS終端とHSTSを有効化し、平文HTTPを避けます。
3. サンドボックスと外向き通信
デフォルト閉、業務ごとに開く方針です。外部向けサポートBotはSaaS APIドメインのみ、社内運用Botは社内ログAPIのみ、など行列で決めます。
| ワークロード | サンドボックス | 外向き |
|---|---|---|
| 外向けBot | FS読み取りのみ、シェル禁止 | 許可ドメインのみ |
| 社内Ops | ログ読み取りマウント | 社内エンドポイントのみ |
| 開発支援 | タスクごとに作業ディレクトリ破棄 | Git/パッケージミラー限定 |
4. Macクラウドでの隔離とバックアップ
本番エージェントは専用Macクラウドに置き、開発用ノートと分離します。launchd等で自動再起動。設定・スクリプト・バージョン番号をバックアップし、アップグレードは新ノード検証→トラフィック切替→48h様子見。迅速立ち上げは5分デプロイ記事と役割を分けます。多インスタンスはポート・データディレクトリ・ログ接頭辞を分離します。
変更窓外に軽いレッドチーム確認:未許可IPから18789へ、無効TokenでAPIを叩き拒否とアラートを確認します。
5. 専用Macノードを推す理由
Windows/WSLの長期運用はシグナルとファイルロックで不安定になりがちです。Dockerは便利ですがレイヤが増え、ホストマウントで隔離が薄れます。7×24で監査可能に運ぶなら、SSHとスナップショット可能なMacクラウドに本番基線を置くのが現実的です。VPSMACのM4 Macクラウドを借りれば電力と回線をプラットフォームに任せ、ポリシーとローテと監視に集中できます。
6. FAQ
アップグレード後の設定ドリフトは?
有効設定とdoctor出力を版管理し、差分で新しいリスンやツール権限を検知します。
同一ホストに2インスタンス?
ポートとデータディレクトリを分離。監査のためゲートウェイTokenは共有しない方がよいです。
DockerよりネイティブMac?
調査経路が短くlaunchd連携が容易。比較はDocker/npm/ソース記事を参照。