Gateway
Runbook eksposur Gateway
Runbook ini mengubah panduan Keamanan yang lebih luas menjadi checklist operator untuk akses jarak jauh dan eksposur messaging.
Pilih pola eksposur
Pilih pola tersempit yang memenuhi workflow.
| Pola | Direkomendasikan ketika | Kontrol wajib |
|---|---|---|
| Loopback + tunnel SSH | Penggunaan pribadi, akses admin, debugging | Pertahankan gateway.bind: "loopback" dan tunnel 127.0.0.1:18789 |
| Loopback + Tailscale Serve | Akses tailnet pribadi ke Control UI/WebSocket | Pertahankan Gateway hanya loopback; andalkan header identitas Tailscale hanya untuk surface yang didukung |
| Bind tailnet/LAN | Jaringan privat khusus dengan perangkat dikenal | Autentikasi Gateway, allowlist firewall, tanpa port-forward publik |
| Reverse proxy tepercaya | SSO/OIDC organisasi di depan Gateway | Autentikasi trusted-proxy, trustedProxies ketat, aturan timpa/hapus header, pengguna yang diizinkan secara eksplisit |
| Internet publik | Deployment langka dan berisiko tinggi | Proxy sadar identitas, TLS, rate limit, allowlist ketat, sesi non-main yang disandbox |
Hindari port-forward publik langsung ke Gateway. Jika Anda memerlukan akses publik, pasang proxy sadar identitas di depannya dan jadikan proxy sebagai satu-satunya jalur jaringan ke Gateway.
Inventaris pra-penerbangan
Catat ini sebelum mengubah kebijakan bind, proxy, Tailscale, atau channel:
- Host Gateway, pengguna OS, dan direktori state.
- URL Gateway dan mode bind.
- Mode autentikasi, sumber token/kata sandi, atau sumber identitas proxy tepercaya.
- Semua channel yang diaktifkan dan apakah channel tersebut menerima DM, grup, atau webhook.
- Agent yang dapat dijangkau dari pengirim non-lokal.
- Profil tool, mode sandbox, dan kebijakan tool elevated untuk setiap agent yang dapat dijangkau.
- Kredensial eksternal yang tersedia untuk agent tersebut.
- Lokasi backup untuk
~/.openclaw/openclaw.jsondan kredensial.
Jika lebih dari satu orang dapat mengirim pesan ke bot, perlakukan ini sebagai otoritas tool terdelegasi bersama, bukan sebagai isolasi host per pengguna.
Pemeriksaan baseline
Jalankan ini sebelum membuka akses:
openclaw doctoropenclaw security auditopenclaw security audit --deepopenclaw healthSelesaikan temuan kritis terlebih dahulu. Peringatan hanya dapat diterima ketika memang disengaja dan didokumentasikan untuk deployment tersebut.
Untuk validasi CLI jarak jauh, berikan kredensial secara eksplisit:
openclaw gateway probe --url ws://127.0.0.1:18789 --token "$OPENCLAW_GATEWAY_TOKEN"Jangan mengasumsikan kredensial konfigurasi lokal berlaku untuk URL jarak jauh eksplisit.
Baseline aman minimum
Gunakan bentuk ini sebagai titik awal untuk deployment yang terekspos:
{ gateway: { bind: "loopback", auth: { mode: "token", token: "replace-with-a-long-random-token", }, }, session: { dmScope: "per-channel-peer", }, agents: { defaults: { sandbox: { mode: "non-main" }, }, }, tools: { profile: "messaging", exec: { security: "deny", ask: "always" }, elevated: { enabled: false }, },}Lalu perluas satu kontrol pada satu waktu. Misalnya, tambahkan allowlist channel tertentu sebelum mengaktifkan tool yang dapat menulis, atau aktifkan reverse proxy sebelum menerima traffic Control UI jarak jauh.
Baseline exec.security: "deny" yang ketat memblokir semua panggilan exec, termasuk
diagnostik yang aman. Jika diagnostik atau perintah berisiko rendah diperlukan, longgarkan ini
hanya setelah memilih pengirim, agent, perintah, dan mode persetujuan spesifik
yang sesuai dengan model ancaman Anda.
Eksposur DM dan grup
Channel messaging adalah surface input yang tidak tepercaya. Sebelum mengizinkan DM atau grup:
- Pilih
dmPolicy: "pairing"atau daftarallowFromyang ketat. - Hindari
dmPolicy: "open"kecuali setiap pengirim tepercaya. - Jangan gabungkan allowlist
"*"dengan akses tool yang luas. - Wajibkan mention di grup kecuali room dikontrol ketat.
- Gunakan
session.dmScope: "per-channel-peer"ketika beberapa orang dapat mengirim DM ke bot. - Arahkan channel bersama ke agent dengan tool minimal dan tanpa kredensial pribadi.
Pairing menyetujui pengirim untuk memicu bot. Ini tidak menjadikan pengirim tersebut sebagai batas keamanan host yang terpisah.
Pemeriksaan reverse proxy
Untuk proxy sadar identitas:
- Proxy harus mengautentikasi pengguna sebelum meneruskan ke Gateway.
- Akses langsung ke port Gateway harus diblokir oleh firewall atau kebijakan jaringan.
gateway.trustedProxieshanya boleh berisi IP sumber proxy.- Proxy harus menghapus atau menimpa header identitas dan forwarding yang diberikan klien.
gateway.auth.trustedProxy.allowUserssebaiknya mencantumkan pengguna yang diharapkan ketika proxy melayani lebih dari satu audiens.- Mode proxy loopback pada host yang sama sebaiknya menggunakan
allowLoopbackhanya ketika proses lokal tepercaya dan proxy memiliki header identitas.
Jalankan openclaw security audit --deep setelah perubahan proxy. Temuan trusted-proxy
sengaja dibuat bernilai sinyal tinggi karena proxy menjadi batas autentikasi.
Tinjauan tool dan sandbox
Sebelum mengekspos agent ke pengirim jarak jauh:
- Konfirmasi sesi mana yang berjalan di host versus sandbox.
- Tolak atau wajibkan persetujuan untuk exec host.
- Biarkan tool elevated dinonaktifkan kecuali pengirim spesifik dan tepercaya membutuhkannya.
- Hindari tool browser, canvas, node, cron, gateway, dan session-spawn untuk surface messaging terbuka atau semi-terbuka.
- Jaga bind mount tetap sempit dan hindari kredensial, home, socket Docker, dan path sistem.
- Gunakan gateway, pengguna OS, atau host terpisah untuk batas kepercayaan yang benar-benar berbeda.
Jika pengguna jarak jauh tidak sepenuhnya tepercaya, isolasi harus berasal dari deployment terpisah, bukan hanya dari prompt atau label sesi.
Validasi pascaperubahan
Setelah setiap perubahan eksposur:
- Jalankan ulang
openclaw security audit --deep. - Uji koneksi terotorisasi yang berhasil.
- Uji bahwa pengirim atau sesi browser yang tidak terotorisasi ditolak.
- Konfirmasi log menyensor rahasia.
- Konfirmasi routing DM/grup hanya mencapai agent yang dimaksud.
- Konfirmasi tool berdampak tinggi meminta persetujuan atau ditolak.
- Dokumentasikan peringatan residual yang diterima.
Jangan lanjut ke perubahan eksposur berikutnya sampai perubahan saat ini dipahami.
Rencana rollback
Jika Gateway mungkin terlalu terekspos:
{ gateway: { bind: "loopback", }, channels: { whatsapp: { dmPolicy: "disabled" }, telegram: { dmPolicy: "disabled" }, discord: { dmPolicy: "disabled" }, slack: { dmPolicy: "disabled" }, }, tools: { exec: { security: "deny", ask: "always" }, elevated: { enabled: false }, },}Lalu:
- Hentikan forwarding publik, Tailscale Funnel, atau route reverse proxy.
- Rotasi token/kata sandi Gateway dan kredensial integrasi yang terdampak.
- Hapus
"*"dan pengirim tidak terduga dari allowlist. - Tinjau log audit terbaru, riwayat run, panggilan tool, dan perubahan konfigurasi.
- Jalankan ulang
openclaw security audit --deep. - Aktifkan ulang akses dengan pola tersempit yang memenuhi workflow.
Checklist tinjauan
- Gateway tetap hanya loopback kecuali ada alasan terdokumentasi.
- Akses non-loopback memiliki autentikasi, firewall, dan tanpa route langsung publik.
- Deployment trusted-proxy memiliki IP proxy dan kontrol header yang ketat.
- DM menggunakan pairing atau allowlist, bukan akses terbuka secara default.
- Grup mewajibkan mention atau allowlist eksplisit.
- Channel bersama tidak menjangkau kredensial pribadi.
- Sesi non-main berjalan dalam mode sandbox.
- Exec host dan tool elevated ditolak atau dibatasi persetujuan.
- Log menyensor rahasia.
- Temuan audit kritis diselesaikan.
- Langkah rollback diuji dan didokumentasikan.