Security
Netzwerk-Proxy
OpenClaw kann HTTP- und WebSocket-Datenverkehr zur Laufzeit über einen vom Betreiber verwalteten Forward-Proxy leiten. Dies ist eine optionale mehrschichtige Schutzmaßnahme: zentrale Kontrolle ausgehender Verbindungen, stärkerer SSRF-Schutz und Nachvollziehbarkeit der Ziele an der Netzwerkgrenze. Da der Proxy das Ziel beim Verbindungsaufbau prüft, also nach der DNS-Auflösung und unmittelbar bevor er die Upstream-Verbindung öffnet, verkleinert er außerdem das Zeitfenster, das ein DNS-Rebinding-Angriff zwischen einer früheren DNS-Prüfung auf Anwendungsebene und der tatsächlichen ausgehenden Verbindung ausnutzt. Eine zentrale Proxy-Richtlinie bietet Betreibern zudem eine einzige Stelle, an der sie Zielregeln, Netzwerksegmentierung, Ratenbegrenzungen oder Positivlisten für ausgehende Verbindungen durchsetzen können, ohne OpenClaw neu erstellen zu müssen.
OpenClaw liefert keinen Proxy mit, lädt keinen herunter, startet oder konfiguriert keinen und zertifiziert keine Proxy-Lösung. Sie betreiben die für Ihre Umgebung geeignete Proxy-Technologie; OpenClaw leitet seine eigenen HTTP- und WebSocket-Clients darüber.
Konfiguration
proxy: enabled: true proxyUrl: http://127.0.0.1:3128Sie können die URL auch über die Umgebung festlegen, während proxy.enabled: true in der Konfiguration verbleibt:
OPENCLAW_PROXY_URL=http://127.0.0.1:3128 openclaw gateway runproxy.proxyUrl hat Vorrang vor OPENCLAW_PROXY_URL. Wenn proxy.enabled auf true gesetzt ist, aber keine gültige URL ermittelt werden kann, schlagen geschützte Befehle beim Start fehl, statt auf direkten Netzwerkzugriff zurückzufallen.
| Schlüssel | Typ | Standardwert | Hinweise |
|---|---|---|---|
proxy.enabled |
boolescher Wert | nicht gesetzt | Muss auf true gesetzt sein, um die Weiterleitung zu aktivieren. |
proxy.proxyUrl |
Zeichenfolge | nicht gesetzt | Forward-Proxy-URL mit http:// oder https://. In der URL eingebettete Anmeldedaten werden als vertraulich behandelt und in Snapshots sowie Protokollen unkenntlich gemacht. |
proxy.tls.caFile |
Zeichenfolge | nicht gesetzt | CA-Bundle zur Überprüfung eines mit einer privaten CA signierten https://-Proxy-Endpunkts. |
proxy.loopbackMode |
gateway-only | proxy | block |
gateway-only |
Steuert das Umgehungsverhalten für local loopback; siehe unten. |
Speichern Sie bei verwalteten Gateway-Diensten die URL in der Konfiguration, damit sie eine Neuinstallation übersteht, statt sich auf die Umgebung eines Vordergrundprozesses zu verlassen:
openclaw config set proxy.enabled trueopenclaw config set proxy.proxyUrl http://127.0.0.1:3128openclaw gateway install --forceopenclaw gateway startDie Umgebungsfallback-Variable OPENCLAW_PROXY_URL eignet sich am besten für Ausführungen im Vordergrund. Um sie mit einem installierten Dienst zu verwenden, legen Sie sie in der dauerhaften Umgebung des Dienstes ab ($OPENCLAW_STATE_DIR/.env, standardmäßig ~/.openclaw/.env) und installieren Sie anschließend neu, damit launchd/systemd/Geplante Aufgaben sie übernimmt.
HTTPS-Proxy-Endpunkt mit privater CA
proxy: enabled: true proxyUrl: https://proxy.corp.example:8443 tls: caFile: /etc/openclaw/proxy-ca.pemproxy.tls.caFile überprüft das TLS-Zertifikat des Proxy-Endpunkts selbst. Es handelt sich weder um eine Vertrauenseinstellung für einen Man-in-the-Middle-Angriff auf das Ziel noch um ein Clientzertifikat oder einen Ersatz für die Zielrichtlinie des Proxys. Verwenden Sie stattdessen NODE_EXTRA_CA_CERTS nur, wenn der gesamte Node-Prozess bereits beim Start einer zusätzlichen CA vertrauen muss, etwa wenn ein unternehmensweites TLS-Inspektionssystem jedes HTTPS-Zielzertifikat neu signiert. Diese Variable gilt prozessweit und muss vor dem Start von Node gesetzt werden, sodass OpenClaw sie nicht wie proxy.tls.caFile während der Ausführung anwenden kann. Bevorzugen Sie proxy.tls.caFile, um einem HTTPS-Proxy-Endpunkt zu vertrauen: Diese Einstellung ist auf die verwaltete Proxy-Weiterleitung beschränkt und gilt nicht für den gesamten Prozess.
openclaw config set proxy.enabled trueopenclaw config set proxy.proxyUrl https://proxy.corp.example:8443openclaw config set proxy.tls.caFile /etc/openclaw/proxy-ca.pemopenclaw gateway runFunktionsweise der Weiterleitung
Mit proxy.enabled: true und einer gültigen URL leiten geschützte Laufzeitprozesse (openclaw gateway run, openclaw node run, openclaw agent --local) normalen ausgehenden HTTP- und WebSocket-Datenverkehr über den Proxy:
OpenClaw-Prozess fetch-, node:http-, node:https- und WebSocket-Clients -> Betreiber-Proxy -> ZielIntern installiert OpenClaw Proxyline als prozessweite Laufzeitkomponente für die Weiterleitung. Sie deckt fetch, auf undici basierende Clients, node:http/node:https, gängige WebSocket-Clients und von Hilfsfunktionen erstellte CONNECT-Tunnel ab. Außerdem ersetzt sie von Aufrufern bereitgestellte Node-HTTP-Agents, sodass explizite Agents – darunter axios, got, node-fetch und ähnliche auf Node-Agents basierende Clients – den Proxy nicht unbemerkt umgehen können.
Das URL-Schema des Proxys beschreibt die Verbindung von OpenClaw zum Proxy, nicht zum endgültigen Ziel:
http://proxy.example:3128— unverschlüsseltes TCP zum Proxy; OpenClaw sendet HTTP-Proxy-Anfragen, einschließlichCONNECTfür HTTPS-Ziele.https://proxy.example:8443— OpenClaw stellt eine TLS-Verbindung zum Proxy selbst her und überprüft dessen Zertifikat; anschließend sendet es innerhalb dieser Sitzung HTTP-Proxy-Anfragen.
Die TLS-Verbindung zum Ziel ist von der TLS-Verbindung zum Proxy-Endpunkt unabhängig: Bei einem HTTPS-Ziel fordert OpenClaw vom Proxy immer einen CONNECT-Tunnel an und startet die TLS-Verbindung zum Ziel durch diesen Tunnel.
Während der Proxy aktiv ist, löscht OpenClaw no_proxy/NO_PROXY. Diese Umgehungslisten basieren auf Zielen; würden localhost oder 127.0.0.1 darin verbleiben, könnten SSRF-Ziele den Proxy vollständig umgehen. Beim Herunterfahren stellt OpenClaw die vorherige Proxy-Umgebung wieder her und setzt den zwischengespeicherten Weiterleitungsstatus zurück.
Einige Plugins besitzen einen benutzerdefinierten Transport, der selbst bei aktiver prozessweiter Weiterleitung eine eigene Proxy-Anbindung benötigt. Der Bot-API-Client von Telegram verwendet einen eigenen HTTP/1-undici-Dispatcher und berücksichtigt separat die Proxy-Umgebungsvariablen des Prozesses sowie den Fallback OPENCLAW_PROXY_URL.
local loopback-Modus des Gateways
Lokale Clients der Gateway-Steuerungsebene stellen normalerweise eine Verbindung zu einem local loopback-WebSocket wie ws://127.0.0.1:18789 her. proxy.loopbackMode steuert, ob dieser Datenverkehr den verwalteten Proxy umgeht:
proxy: enabled: true proxyUrl: http://127.0.0.1:3128 loopbackMode: gateway-only # gateway-only, proxy, or block| Modus | Verhalten |
|---|---|
gateway-only (Standardwert) |
OpenClaw registriert die aktive local loopback-Adresse des Gateways als Ausnahme für direkte Verbindungen, sodass lokaler Gateway-WebSocket-Datenverkehr ohne den Proxy verbunden wird. Benutzerdefinierte local loopback-Ports funktionieren, da sich die Ausnahme auf die exakt konfigurierte Kombination aus Host und Port bezieht. Das mitgelieferte Browser-Plugin registriert dieselbe Art von Ausnahme für die exakten lokalen URLs der CDP-Bereitschaft und des DevTools-WebSockets von durch OpenClaw gestarteten verwalteten Browsern. Der mitgelieferte Provider für Ollama-Speichereinbettungen besitzt einen enger gefassten, geschützten direkten Pfad für seinen exakt konfigurierten, hostlokalen local loopback-Ursprung für Einbettungen. |
proxy |
Es werden keine local loopback-Ausnahmen registriert; local loopback-Datenverkehr des Gateways und von Ollama wird über den Proxy geleitet. Ein entfernter Proxy muss den Datenverkehr zum local loopback-Dienst des OpenClaw-Hosts zurückleiten können, beispielsweise über einen erreichbaren Hostnamen, eine IP-Adresse oder einen Tunnel. Ein gewöhnlicher entfernter Proxy löst 127.0.0.1/localhost relativ zu sich selbst auf, nicht relativ zum OpenClaw-Host. |
block |
OpenClaw verweigert local loopback-Verbindungen zur Gateway-Steuerungsebene und geschützte local loopback-Einbettungsverbindungen von Ollama, bevor ein Socket geöffnet wird. |
Die Umgehung für die Gateway-Steuerungsebene ist auf localhost und URLs mit ausdrücklichen local loopback-IP-Adressen beschränkt. Verwenden Sie ws://127.0.0.1:18789, ws://[::1]:18789 oder ws://localhost:18789. Andere Hostnamen werden wie gewöhnlicher Datenverkehr weitergeleitet.
Container
Bei Befehlen der Form openclaw --container ... reicht OpenClaw OPENCLAW_PROXY_URL an die auf den Container ausgerichtete untergeordnete CLI weiter, sofern die Variable gesetzt ist. Die URL muss aus dem Container heraus erreichbar sein. 127.0.0.1 bezieht sich dort auf den Container selbst, nicht auf den Host. OpenClaw lehnt local loopback-Proxy-URLs für containerbezogene Befehle ab, sofern Sie diese Prüfung nicht ausdrücklich mit OPENCLAW_CONTAINER_ALLOW_LOOPBACK_PROXY_URL=1 außer Kraft setzen.
Verwandte Proxy-Begriffe
proxy.enabled/proxy.proxyUrl— ausgehende Forward-Proxy-Weiterleitung für Laufzeitdatenverkehr. Diese Seite.gateway.auth.mode: "trusted-proxy"— eingehende, identitätsbasierte Reverse-Proxy-Authentifizierung für den Gateway-Zugriff. Siehe Authentifizierung über einen vertrauenswürdigen Proxy.openclaw proxy— lokaler Debug-Proxy und Inspektor für aufgezeichneten Datenverkehr zur Entwicklung und Unterstützung. Siehe openclaw proxy.tools.web.fetch.useTrustedEnvProxy— optionale Einstellung fürweb_fetch, mit der ein vom Betreiber kontrollierter HTTP(S)-Proxy aus der Umgebung DNS auflösen darf, während standardmäßig strikte DNS-Bindung und Hostnamenrichtlinien beibehalten werden. Siehe Webabruf.- Kanal- oder Provider-spezifische Proxy-Einstellungen — eigentümerspezifische Außerkraftsetzungen für einen einzelnen Transport. Bevorzugen Sie den verwalteten Netzwerk-Proxy für die zentrale Kontrolle ausgehender Verbindungen in der gesamten Laufzeit.
Validieren des Proxys
Die Zielrichtlinie des Proxys bildet die tatsächliche Sicherheitsgrenze; OpenClaw kann nicht überprüfen, ob Ihr Proxy die richtigen Ziele blockiert. Konfigurieren Sie ihn so, dass er:
- ausschließlich an local loopback oder eine private, vertrauenswürdige Schnittstelle gebunden ist, die nur für den OpenClaw-Prozess, -Host, -Container oder das Dienstkonto erreichbar ist;
- Ziele selbst auflöst und nach der DNS-Auflösung beim Verbindungsaufbau anhand der IP-Adresse blockiert, sowohl für unverschlüsseltes HTTP als auch für HTTPS-
CONNECT-Tunnel; - zielbasierte Umgehungen für local loopback-, private, Link-Local-, Metadaten-, Multicast-, reservierte und Dokumentationsadressbereiche ablehnt;
- Positivlisten für Hostnamen vermeidet, sofern Sie dem DNS-Auflösungspfad nicht vollständig vertrauen;
- Ziel, Entscheidung, Status und Grund protokolliert, jedoch niemals Anfragetexte, Autorisierungsheader, Cookies oder andere Geheimnisse;
- die Richtlinie unter Versionskontrolle hält und Änderungen als sicherheitsrelevant prüft.
Validieren Sie vom selben Host, Container oder Dienstkonto aus, unter dem OpenClaw ausgeführt wird:
openclaw proxy validate --proxy-url http://127.0.0.1:3128Bei einem HTTPS-Proxy-Endpunkt mit privater CA:
openclaw proxy validate --proxy-url https://proxy.corp.example:8443 --proxy-ca-file /etc/openclaw/proxy-ca.pem| Flag | Zweck |
|---|---|
--proxy-url <url> |
Diese URL validieren, anstatt Konfiguration/Umgebung aufzulösen. |
--proxy-ca-file <path> |
CA-Bündel für einen HTTPS-Proxy-Endpunkt. |
--allowed-url <url> |
Ziel, das erwartungsgemäß erreichbar sein muss (wiederholbar). |
--denied-url <url> |
Ziel, das erwartungsgemäß blockiert sein muss (wiederholbar). |
--apns-reachable |
Zusätzlich prüfen, ob der Proxy eine direkte HTTP/2-Testanfrage an die APNs-Sandbox tunneln kann. |
--apns-authority <url> |
Die mit --apns-reachable geprüfte APNs-Autorität überschreiben. |
--timeout-ms <ms> |
Zeitüberschreitung pro Anfrage. |
--json |
Maschinenlesbare Ausgabe. |
Wenn proxy.enabled nicht true ist und kein --proxy-url angegeben wurde, meldet der Befehl ein Konfigurationsproblem, anstatt eine Validierung durchzuführen. Übergeben Sie --proxy-url für eine einmalige Vorabprüfung, bevor Sie die Konfiguration ändern.
Ohne --allowed-url/--denied-url werden standardmäßig folgende Prüfungen durchgeführt: https://example.com/ muss erreichbar sein, und ein temporärer local-loopback-Canary-Server, den der Proxy nicht erreichen darf, muss blockiert werden. Die local-loopback-Prüfung gilt bei einem Transportfehler oder bei einer Nicht-2xx-Antwort ohne das für den jeweiligen Durchlauf erzeugte Token des Canary-Servers als bestanden. Sie schlägt bei einer 2xx-Antwort ohne das Token fehl, da dies einen unerwarteten Erfolg durch etwas anderes als den Canary-Server darstellt, und insbesondere bei jeder Antwort mit dem passenden Token, da dies beweist, dass der Proxy tatsächlich ein local-loopback-Ziel weitergeleitet hat, das er hätte blockieren müssen. Benutzerdefinierte --denied-url-Ziele besitzen kein solches Canary-Token und werden daher nach dem Fail-Closed-Prinzip behandelt: Jede HTTP-Antwort bedeutet, dass das Ziel erreichbar ist (Fehlschlag), während ein Transportfehler als nicht eindeutig und nicht als nachweislich blockiert gemeldet wird, weil OpenClaw nicht bestätigen kann, ob Ihr Proxy einen erreichbaren Ursprung blockiert hat oder ein anderer Fehler aufgetreten ist. --apns-reachable sendet absichtlich ein ungültiges Provider-Token, sodass eine Antwort vom Typ 403 InvalidProviderToken als Nachweis gilt, dass der Tunnel Apple erreicht hat. Bei jedem Validierungsfehler wird der Befehl mit 1 beendet. Zugangsdaten in der Proxy-URL werden sowohl in der Text- als auch in der JSON-Ausgabe unkenntlich gemacht.
{ "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 } ]}Manuelle Prüfung mit curl (die öffentliche Anfrage sollte erfolgreich sein; die local-loopback- und Metadatenanfragen sollten vom Proxy selbst blockiert werden — curl allein kann eine Ablehnung durch den Proxy nicht von einem nicht erreichbaren Ursprung unterscheiden, wie dies der integrierte Canary von openclaw proxy validate kann):
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/Empfohlene blockierte Ziele
Ausgangspunkt für eine Sperrliste für jeden Forward-Proxy, jede Firewall oder jede Richtlinie für ausgehenden Datenverkehr. OpenClaws eigener SSRF-Klassifikator befindet sich in src/infra/net/ssrf.ts und packages/net-policy/src/ip.ts (BLOCKED_HOSTNAMES, BLOCKED_IPV4_SPECIAL_USE_RANGES, BLOCKED_IPV6_SPECIAL_USE_RANGES, das Benchmark-Präfix gemäß RFC 2544 und die Verarbeitung eingebetteter IPv4-Adressen für NAT64-/6to4-/Teredo-/ISATAP-/IPv4-gemappte Formen) — nützliche Referenzen, jedoch exportiert oder erzwingt OpenClaw diese Regeln nicht in Ihrem externen Proxy.
| Bereich oder Host | Grund für die Blockierung |
|---|---|
127.0.0.0/8, localhost, localhost.localdomain |
IPv4-local-loopback |
::1/128 |
IPv6-local-loopback |
0.0.0.0/8, ::/128 |
Nicht spezifizierte Adressen / Adressen dieses Netzwerks |
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 |
Private Netzwerke gemäß RFC 1918 |
169.254.0.0/16, fe80::/10 |
Link-lokale Adressen, einschließlich gängiger Pfade zu Cloud-Metadaten |
169.254.169.254, metadata.google.internal |
Cloud-Metadatendienste |
100.64.0.0/10 |
Gemeinsam genutzter Adressbereich für Carrier-Grade-NAT |
198.18.0.0/15, 2001:2::/48 |
Benchmark-Bereiche |
192.0.0.0/24, 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32 |
Bereiche für besondere Zwecke und Dokumentation |
224.0.0.0/4, ff00::/8 |
Multicast |
240.0.0.0/4 |
Reservierter IPv4-Bereich |
fc00::/7, fec0::/10 |
Lokale/private IPv6-Bereiche |
100::/64, 2001:20::/28 |
IPv6-Verwerfungs- und ORCHIDv2-Bereiche |
64:ff9b::/96, 64:ff9b:1::/48 |
NAT64-Präfixe mit eingebettetem IPv4 |
2002::/16, 2001::/32 |
6to4 und Teredo mit eingebettetem IPv4 |
::/96, ::ffff:0:0/96 |
IPv4-kompatibles und IPv4-gemapptes IPv6 |
Fügen Sie alle weiteren Metadaten-Hosts oder reservierten Bereiche hinzu, die Ihr Cloud-Provider oder Ihre Netzwerkplattform dokumentiert.
Einschränkungen
| Oberfläche | Status des verwalteten Proxys |
|---|---|
fetch, node:http, node:https, gängige WebSocket-Clients |
Werden bei entsprechender Konfiguration über die Hooks des verwalteten Proxys geleitet. |
| Direkte HTTP/2-Verbindungen zu APNs | Werden über den verwalteten APNs-CONNECT-Helper geleitet. |
| local-loopback der Gateway-Steuerungsebene | Nur für die exakt konfigurierte lokale local-loopback-Gateway-URL direkt. |
| Weiterleitung an den Upstream durch den Debug-Proxy | Ist bei aktivem verwaltetem Proxy-Modus deaktiviert, sofern sie nicht ausdrücklich für lokale Diagnosen aktiviert wurde. |
| IRC | Verwendet unproxied TCP/TLS-Rohverbindungen. Legen Sie channels.irc.enabled: false fest, wenn Ihre Bereitstellung den gesamten ausgehenden Datenverkehr über den Forward-Proxy leiten muss. |
Andere Client-Aufrufe über net, tls oder http2 |
Müssen vor der Übernahme durch den Schutzmechanismus für Raw-Sockets klassifiziert werden. |
- Dies bietet Abdeckung auf Prozessebene für JavaScript-HTTP-/WebSocket-Clients, jedoch keine Netzwerksandbox auf Betriebssystemebene.
- Raw-Sockets über
net,tlsundhttp2, native Add-ons sowie untergeordnete Prozesse, die nicht zu OpenClaw gehören, können das Routing auf Node-Ebene umgehen, sofern sie Proxy-Umgebungsvariablen nicht erben und berücksichtigen. Durch Forking gestartete untergeordnete OpenClaw-CLI-Prozesse erben die URL des verwalteten Proxys und den Zustand vonproxy.loopbackMode. - Lokale WebUIs der Benutzer und lokale Modellserver werden nicht durch eine allgemeine Umgehung für das lokale Netzwerk abgedeckt — nehmen Sie sie bei Bedarf in die Zulassungsliste der Proxy-Richtlinie des Betreibers auf. Eine Ausnahme ist der geschützte direkte Pfad des gebündelten Ollama-Providers für Speicher-Embeddings, der auf den exakten hostlokalen local-loopback-Ursprung aus dessen konfigurierter
baseUrlbeschränkt ist. Ollama-Hosts im LAN, Tailnet, privaten Netzwerk oder öffentlichen Netzwerk verwenden weiterhin den verwalteten Proxy. - Die direkte Weiterleitung des lokalen Debug-Proxys an den Upstream ist sowohl für Proxy-Anfragen als auch für
CONNECT-Tunnel standardmäßig deaktiviert, solange der verwaltete Proxy-Modus aktiv ist. Aktivieren Sie sie ausschließlich für genehmigte lokale Diagnosen. - OpenClaw überprüft, testet oder zertifiziert Ihre Proxy-Richtlinie nicht. Behandeln Sie Änderungen an der Proxy-Richtlinie als sicherheitskritische betriebliche Änderungen.