Security
Netwerkproxy
OpenClaw kan HTTP- en WebSocket-verkeer tijdens runtime routeren via een door de beheerder beheerde forward proxy. Dit is optionele gelaagde beveiliging: centrale controle over uitgaand verkeer, sterkere SSRF-bescherming en controleerbaarheid van bestemmingen aan de netwerkgrens. Omdat de proxy de bestemming beoordeelt wanneer de verbinding tot stand wordt gebracht, na DNS-resolutie en onmiddellijk voordat de upstreamverbinding wordt geopend, verkleint dit ook het tijdsvenster waarvan een DNS-rebindingaanval afhankelijk is tussen een eerdere DNS-controle op applicatieniveau en de daadwerkelijke uitgaande verbinding. Eén proxybeleid biedt beheerders bovendien één plek om bestemmingsregels, netwerksegmentatie, snelheidslimieten of toelatingslijsten voor uitgaand verkeer af te dwingen zonder OpenClaw opnieuw te bouwen.
OpenClaw levert, downloadt, start, configureert of certificeert geen proxy. Je gebruikt de proxytechnologie die bij jouw omgeving past; OpenClaw routeert zijn eigen HTTP- en WebSocket-clients erdoorheen.
Configuratie
proxy: proxyUrl: http://127.0.0.1:3128Je kunt de URL ook via de omgeving instellen:
OPENCLAW_PROXY_URL=http://127.0.0.1:3128 openclaw gateway runproxy.proxyUrl heeft voorrang op OPENCLAW_PROXY_URL. Een geconfigureerde URL activeert beheerde proxyrouting; door beide URL's te verwijderen, schakel je deze uit.
| Sleutel | Type | Standaard | Opmerkingen |
|---|---|---|---|
proxy.proxyUrl |
string | niet ingesteld | URL van de forward proxy voor http:// of https://. In de URL opgenomen referenties worden als gevoelig behandeld en in momentopnamen/logboeken geredigeerd. |
proxy.tls.caFile |
string | niet ingesteld | CA-bundel voor het verifiëren van een https://-proxyeindpunt dat door een privé-CA is ondertekend. |
proxy.loopbackMode |
gateway-only | proxy | block |
gateway-only |
Regelt het omzeilingsgedrag voor loopback; zie hieronder. |
Sla voor beheerde Gateway-services de URL op in de configuratie, zodat deze een herinstallatie overleeft, in plaats van afhankelijk te zijn van een omgevingsvariabele voor een voorgrondproces:
openclaw config set proxy.proxyUrl http://127.0.0.1:3128openclaw gateway install --forceopenclaw gateway startDe terugval op de omgevingsvariabele OPENCLAW_PROXY_URL is het meest geschikt voor voorgronduitvoeringen. Om deze met een geïnstalleerde service te gebruiken, plaats je deze in de permanente omgeving van de service ($OPENCLAW_STATE_DIR/.env, standaard ~/.openclaw/.env) en installeer je de service vervolgens opnieuw, zodat launchd/systemd/Scheduled Tasks deze overneemt.
HTTPS-proxyeindpunt met een privé-CA
proxy: proxyUrl: https://proxy.corp.example:8443 tls: caFile: /etc/openclaw/proxy-ca.pemproxy.tls.caFile verifieert het eigen TLS-certificaat van het proxyeindpunt. Het is geen vertrouwensinstelling voor MITM-verkeer naar bestemmingen, geen clientcertificaat en geen vervanging voor het bestemmingsbeleid van de proxy. Gebruik NODE_EXTRA_CA_CERTS alleen wanneer het volledige Node-proces vanaf het opstarten een aanvullende CA moet vertrouwen (bijvoorbeeld een TLS-inspectiesysteem van een organisatie dat elk HTTPS-bestemmingscertificaat opnieuw ondertekent) — die variabele geldt voor het hele proces en moet worden ingesteld voordat Node start. OpenClaw kan deze daarom niet tijdens de uitvoering toepassen zoals bij proxy.tls.caFile. Geef voor het vertrouwen van HTTPS-proxyeindpunten de voorkeur aan proxy.tls.caFile: dit is beperkt tot beheerde proxyrouting in plaats van het hele proces.
openclaw config set proxy.proxyUrl https://proxy.corp.example:8443openclaw config set proxy.tls.caFile /etc/openclaw/proxy-ca.pemopenclaw gateway runHoe routering werkt
Met een geldige proxy-URL routeren beschermde runtimeprocessen (openclaw gateway run, openclaw node run, openclaw agent --local) normaal uitgaand HTTP- en WebSocket-verkeer via de proxy:
OpenClaw-proces fetch, node:http, node:https, WebSocket-clients -> proxy van beheerder -> bestemmingIntern installeert OpenClaw Proxyline als routeringsruntime op procesniveau. Deze ondersteunt fetch, clients op basis van undici, node:http/node:https, veelgebruikte WebSocket-clients en door helpers gemaakte CONNECT-tunnels. Ook vervangt deze door aanroepers geleverde Node-HTTP-agents, zodat expliciete agents (waaronder axios, got, node-fetch en vergelijkbare clients op basis van Node-agents) de proxy niet ongemerkt kunnen omzeilen.
Het schema van de proxy-URL beschrijft de verbinding van OpenClaw naar de proxy, niet naar de eindbestemming:
http://proxy.example:3128— onbeveiligd TCP naar de proxy; OpenClaw verzendt HTTP-proxyverzoeken, waaronderCONNECTvoor HTTPS-bestemmingen.https://proxy.example:8443— OpenClaw opent TLS naar de proxy zelf (waarbij het certificaat van de proxy wordt geverifieerd) en verzendt vervolgens HTTP-proxyverzoeken binnen die sessie.
TLS voor de bestemming staat los van TLS voor het proxyeindpunt: voor een HTTPS-bestemming vraagt OpenClaw de proxy altijd om een CONNECT-tunnel en start het TLS naar de bestemming via die tunnel.
Terwijl de proxy actief is, wist OpenClaw no_proxy/NO_PROXY. Deze omzeilingslijsten zijn gebaseerd op bestemmingen; als localhost of 127.0.0.1 daarin blijven staan, kunnen SSRF-doelen de proxy volledig omzeilen. Bij het afsluiten herstelt OpenClaw de eerdere proxyomgeving en stelt het de gecachte routeringsstatus opnieuw in.
Sommige plugins beheren een aangepast transport waarvoor eigen proxyconfiguratie nodig is, zelfs wanneer routering op procesniveau actief is. De Bot API-client van Telegram gebruikt een eigen HTTP/1-dispatcher van undici en respecteert afzonderlijk de proxyomgeving van het proces plus de terugvaloptie OPENCLAW_PROXY_URL.
Loopbackmodus van de Gateway
Lokale clients van het besturingsvlak van de Gateway maken normaal verbinding met een loopback-WebSocket, zoals ws://127.0.0.1:18789. proxy.loopbackMode bepaalt of dat verkeer de beheerde proxy omzeilt:
proxy: proxyUrl: http://127.0.0.1:3128 loopbackMode: gateway-only # gateway-only, proxy, or blockEen geconfigureerde proxyUrl of OPENCLAW_PROXY_URL schakelt beheerde routering in. Stel
proxy.enabled: false alleen in als geavanceerde afmeldoptie waarmee de URL opgeslagen blijft
zonder deze te activeren.
| Modus | Gedrag |
|---|---|
gateway-only (standaard) |
OpenClaw registreert de actieve loopback-autoriteit van de Gateway als uitzondering voor een rechtstreekse verbinding, zodat lokaal WebSocket-verkeer van de Gateway zonder de proxy verbinding maakt. Aangepaste loopbackpoorten werken omdat de uitzondering exact op de geconfigureerde host/poort is gericht. De meegeleverde browserplugin registreert hetzelfde soort uitzondering voor de exacte lokale CDP-gereedheids- en DevTools-WebSocket-URL's van door OpenClaw gestarte beheerde browsers; de meegeleverde Ollama-provider voor geheugen-embeddings heeft een beperkter, beveiligd rechtstreeks pad voor de exacte geconfigureerde host-lokale loopbackoorsprong voor embeddings. |
proxy |
Er worden geen loopbackuitzonderingen geregistreerd; loopbackverkeer van de Gateway en Ollama loopt via de proxy. Een externe proxy moet terug kunnen routeren naar de loopbackservice op de OpenClaw-host (bijvoorbeeld via een bereikbare hostnaam, IP-adres of tunnel) — een standaard externe proxy herleidt 127.0.0.1/localhost ten opzichte van zichzelf, niet ten opzichte van de OpenClaw-host. |
block |
OpenClaw weigert loopbackverbindingen met het besturingsvlak van de Gateway en beveiligde loopbackverbindingen voor Ollama-embeddings voordat een socket wordt geopend. |
Omzeiling voor het besturingsvlak van de Gateway is beperkt tot localhost en letterlijke loopback-IP-URL's — gebruik ws://127.0.0.1:18789, ws://[::1]:18789 of ws://localhost:18789. Andere hostnamen worden als normaal verkeer gerouteerd.
Containers
Voor openclaw --container ...-opdrachten geeft OpenClaw OPENCLAW_PROXY_URL door aan de op de container gerichte onderliggende CLI wanneer deze is ingesteld. De URL moet vanuit de container bereikbaar zijn — 127.0.0.1 verwijst daar naar de container zelf, niet naar de host. OpenClaw weigert loopback-proxy-URL's voor op containers gerichte opdrachten, tenzij je OPENCLAW_CONTAINER_ALLOW_LOOPBACK_PROXY_URL=1 instelt om die controle expliciet te negeren.
Verwante proxytermen
proxy.enabled/proxy.proxyUrl— uitgaande routering via een forward proxy voor runtimeverkeer. Deze pagina.gateway.auth.mode: "trusted-proxy"— binnenkomende identiteitsbewuste authenticatie via een reverse proxy voor toegang tot de Gateway. Zie Authenticatie via vertrouwde proxy.openclaw proxy— lokale debugproxy en inspectietool voor vastleggingen voor ontwikkeling en ondersteuning. Zie openclaw proxy.tools.web.fetch.useTrustedEnvProxy— opt-in voorweb_fetchom een door de beheerder gecontroleerde HTTP(S)-omgevingsproxy DNS te laten herleiden, terwijl standaard strikte DNS-pinning en hostnaambeleid behouden blijven. Zie Web ophalen.- Kanaal- of providerspecifieke proxy-instellingen — eigenaarspecifieke overschrijvingen voor één transport. Geef voor centrale controle over uitgaand verkeer in de hele runtime de voorkeur aan de beheerde netwerkproxy.
De proxy valideren
Het bestemmingsbeleid van de proxy vormt de daadwerkelijke beveiligingsgrens; OpenClaw kan niet controleren of jouw proxy de juiste doelen blokkeert. Configureer deze om:
- Alleen te binden aan loopback of een vertrouwde privé-interface die uitsluitend bereikbaar is voor het OpenClaw-proces/de host/de container/het serviceaccount.
- Bestemmingen zelf te herleiden en deze na DNS-resolutie op IP-adres te blokkeren wanneer de verbinding tot stand wordt gebracht, zowel voor onbeveiligd HTTP als voor HTTPS-
CONNECT-tunnels. - Omzeilingen op basis van bestemmingen te weigeren voor loopback-, privé-, link-local-, metadata-, multicast-, gereserveerde en documentatiebereiken.
- Toelatingslijsten voor hostnamen te vermijden, tenzij je het DNS-resolutiepad volledig vertrouwt.
- Bestemming, beslissing, status en reden te loggen — nooit aanvraaginhoud, autorisatieheaders, cookies of andere geheimen.
- Het beleid onder versiebeheer te houden en wijzigingen als beveiligingsgevoelig te beoordelen.
Valideer vanaf dezelfde host/container/hetzelfde serviceaccount waarop OpenClaw wordt uitgevoerd:
openclaw proxy validate --proxy-url http://127.0.0.1:3128Met een HTTPS-proxyeindpunt met een privé-CA:
openclaw proxy validate --proxy-url https://proxy.corp.example:8443 --proxy-ca-file /etc/openclaw/proxy-ca.pem| Vlag | Doel |
|---|---|
--proxy-url <url> |
Deze URL valideren in plaats van config/env op te lossen. |
--proxy-ca-file <path> |
CA-bundel voor een HTTPS-proxyeindpunt. |
--allowed-url <url> |
Bestemming die naar verwachting bereikbaar is (herhaalbaar). |
--denied-url <url> |
Bestemming die naar verwachting wordt geblokkeerd (herhaalbaar). |
--apns-reachable |
Ook controleren of de proxy een directe APNs HTTP/2-probe vanuit de sandbox kan tunnelen. |
--apns-authority <url> |
De APNs-authority overschrijven die met --apns-reachable wordt getest. |
--timeout-ms <ms> |
Time-out per verzoek. |
--json |
Machineleesbare uitvoer. |
Als er geen waarde voor config, omgeving of --proxy-url beschikbaar is, meldt de opdracht een configuratieprobleem; geef --proxy-url door voor een eenmalige preflight voordat je de configuratie wijzigt.
Zonder --allowed-url/--denied-url zijn de standaardcontroles: https://example.com/ moet slagen en een tijdelijke loopback-canaryserver die de proxy niet mag bereiken, moet worden geblokkeerd. De loopbackcontrole slaagt bij een transportfout, of bij een niet-2xx-antwoord zonder het token per uitvoering van de canary; de controle mislukt bij een 2xx-antwoord zonder het token (een onverwacht succes van iets anders dan de canary) en vooral bij elk antwoord met het overeenkomende token, omdat dit bewijst dat de proxy daadwerkelijk een loopbackbestemming heeft doorgestuurd die had moeten worden geweigerd. Aangepaste --denied-url-doelen hebben geen dergelijk canarytoken en werken daarom fail-closed: elk HTTP-antwoord geldt als bereikbaar (mislukt) en een transportfout wordt gemeld als onbeslist in plaats van bewezen geblokkeerd, omdat OpenClaw niet kan bevestigen of je proxy een bereikbare origin heeft geweigerd of dat er iets anders is misgegaan. --apns-reachable verzendt opzettelijk een ongeldig providertoken, zodat een 403 InvalidProviderToken-antwoord geldt als bewijs dat de tunnel Apple heeft bereikt. De opdracht sluit af met 1 bij elke validatiefout; inloggegevens in de proxy-URL worden zowel in tekst- als JSON-uitvoer geredigeerd.
{ "ok": true, "config": { "enabled": true, "proxyUrl": "http://127.0.0.1:3128/", "source": "override", "errors": [] }, "checks": [ { "kind": "allowed", "url": "https://example.com/", "ok": true, "status": 200 }, { "kind": "apns", "url": "https://api.sandbox.push.apple.com", "ok": true, "status": 403 } ]}Handmatige curl-controle (het openbare verzoek moet slagen; de loopback- en metadataverzoeken moeten door de proxy zelf worden geblokkeerd — alleen curl kan een weigering door de proxy niet onderscheiden van een onbereikbare origin zoals de ingebouwde canary van openclaw proxy validate dat kan):
curl -x http://127.0.0.1:3128 https://example.com/curl -x http://127.0.0.1:3128 http://127.0.0.1/curl -x http://127.0.0.1:3128 http://169.254.169.254/Aanbevolen te blokkeren bestemmingen
Beginlijst met te weigeren bestemmingen voor elke forward proxy, firewall of egressbeleid. De eigen SSRF-classificator van OpenClaw bevindt zich in src/infra/net/ssrf.ts en packages/net-policy/src/ip.ts (BLOCKED_HOSTNAMES, BLOCKED_IPV4_SPECIAL_USE_RANGES, BLOCKED_IPV6_SPECIAL_USE_RANGES, het benchmarkprefix uit RFC 2544 en de verwerking van ingebedde IPv4 voor NAT64/6to4/Teredo/ISATAP/IPv4-mapped-vormen) — nuttige referenties, maar OpenClaw exporteert of handhaaft deze regels niet in je externe proxy.
| Bereik of host | Reden om te blokkeren |
|---|---|
127.0.0.0/8, localhost, localhost.localdomain |
IPv4-loopback |
::1/128 |
IPv6-loopback |
0.0.0.0/8, ::/128 |
Niet-gespecificeerde adressen/adressen van dit netwerk |
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 |
Privénetwerken volgens RFC 1918 |
169.254.0.0/16, fe80::/10 |
Link-local, inclusief veelgebruikte paden voor cloudmetadata |
169.254.169.254, metadata.google.internal |
Cloudmetadataservices |
100.64.0.0/10 |
Gedeelde adresruimte voor carrier-grade NAT |
198.18.0.0/15, 2001:2::/48 |
Benchmarkbereiken |
192.0.0.0/24, 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32 |
Bereiken voor speciaal gebruik en documentatie |
224.0.0.0/4, ff00::/8 |
Multicast |
240.0.0.0/4 |
Gereserveerde IPv4-adressen |
fc00::/7, fec0::/10 |
Lokale/privébereiken voor IPv6 |
100::/64, 2001:20::/28 |
IPv6-bereiken voor discard en ORCHIDv2 |
64:ff9b::/96, 64:ff9b:1::/48 |
NAT64-prefixen met ingebedde IPv4 |
2002::/16, 2001::/32 |
6to4 en Teredo met ingebedde IPv4 |
::/96, ::ffff:0:0/96 |
IPv4-compatibele en IPv4-mapped IPv6-adressen |
Voeg eventuele aanvullende metadatahosts of gereserveerde bereiken toe die door je cloudprovider of netwerkplatform worden gedocumenteerd.
Beperkingen
| Oppervlak | Status van beheerde proxy |
|---|---|
fetch, node:http, node:https, gangbare WebSocket-clients |
Worden via beheerde proxyhooks gerouteerd wanneer deze zijn geconfigureerd. |
| Directe APNs HTTP/2 | Wordt via de beheerde APNs-helper CONNECT gerouteerd. |
| Loopback van het Gateway-besturingsvlak | Alleen direct voor de exact geconfigureerde lokale loopback-Gateway-URL. |
| Upstreamforwarding via de debugproxy | Uitgeschakeld terwijl de beheerde proxymodus actief is, tenzij dit expliciet is ingeschakeld voor lokale diagnostiek. |
| IRC | Onbewerkte TCP/TLS; niet geproxied door de beheerde HTTP-proxymodus. Stel channels.irc.enabled: false in als je implementatie vereist dat alle egress via de forward proxy verloopt. |
Andere clientaanroepen via onbewerkte net, tls of http2 |
Moeten vóór opname worden geclassificeerd door de bewaking voor onbewerkte sockets. |
- Dit biedt dekking op procesniveau voor JavaScript HTTP/WebSocket-clients, geen netwerksandbox op besturingssysteemniveau.
- Onbewerkte
net-,tls- enhttp2-sockets, native add-ons en niet-OpenClaw-subprocessen kunnen routering op Node-niveau omzeilen, tenzij ze proxyomgevingsvariabelen overnemen en respecteren. Afgesplitste OpenClaw-subprocess-CLI's nemen de beheerde proxy-URL en deproxy.loopbackMode-status over. - Lokale WebUI's van gebruikers en lokale modelservers vallen niet onder een algemene omzeiling voor het lokale netwerk — voeg ze indien nodig toe aan de allowlist van het proxybeleid van de beheerder. De uitzondering is het bewaakte directe pad van de gebundelde Ollama-provider voor geheugenembeddings, beperkt tot de exacte host-lokale loopback-origin uit de geconfigureerde
baseUrl; Ollama-hosts op het LAN, tailnet, privénetwerk en openbare netwerk gebruiken nog steeds de beheerde proxy. - De directe upstreamforwarding van de lokale debugproxy (voor proxyverzoeken en
CONNECT-tunnels) is standaard uitgeschakeld terwijl de beheerde proxymodus actief is; schakel deze alleen in voor goedgekeurde lokale diagnostiek. - OpenClaw inspecteert, test of certificeert je proxybeleid niet. Behandel wijzigingen in het proxybeleid als beveiligingsgevoelige operationele wijzigingen.