Vorab-Checks vor dem Deployment (Node-Version und Berechtigungsmodell)
Bevor Sie Token und Firewall anfassen, muss die Laufzeitumgebung stabil und vorhersehbar sein. OpenClaw-CLI und zugehörige Pakete setzen in Produktions-Setups üblicherweise Node.js 22 LTS voraus; ältere Major-Versionen führen zu kryptischen ESM- oder Postinstall-Fehlern. Gleiches gilt für npm-Versionen, die mit overrides oder Workspaces kollidieren: ein einheitlicher npm -v auf allen Buildern verhindert „bei mir geht’s“-Drift.
which node
npm config get prefix
Legen Sie den Dienstbenutzer fest – nicht root, nicht Ihr persönlicher Admin-Account. Auf dem Mac genügt oft ein dedizierter Account mit eingeschränktem Home und ohne sudo für den Gateway-Prozess. Prüfen Sie realen Dateizugriff statt nur ls; erweiterte Attribute und ACLs verursachen subtile EPERM-Fehler, wenn der Prozess unter einer anderen UID läuft als der Entwickler, der das Repo geklont hat.
ls -le ~/path/to/workspace
csrutil status
Wenn Skripte Dateien unter ~/Library oder Tastatur-/Bildschirm-Capture anfassen, können TCC-Dialoge blockieren. Dokumentieren Sie jede manuelle Freigabe; in Headless-Remote-Macs vermeiden Sie solche Pfade konsequent und halten Sie Arbeitsverzeichnisse unterhalb eines klaren Präfixes wie /srv/openclaw oder ~/svc/openclaw. Gatekeeper und Quarantäne-Attribute (xattr -l auf heruntergeladenen Binaries) sollten vor dem Go-Live geprüft werden, damit der erste Produktionsstart nicht an „App kann nicht geöffnet werden“ scheitert. Für globale npm-Binaries: sicherstellen, dass der PATH in der launchd-plist denselben Prefix enthält wie die interaktive Shell – ein klassischer Grund für „Befehl nicht gefunden“ nur im Daemon.
Zusätzlich: SSH-Härtung (PasswordAuthentication no, PermitRootLogin no) und unnötige Dienste auf gemieteten Images deaktivieren.
Gateway-Token und Zugriffskontrolle – Konfigurationsschritte
Das Gateway darf nicht „nebenbei“ im Internet lauschen. Priorität 1: Bindung an 127.0.0.1 und Zugriff nur über SSH-Port-Weiterleitung (ssh -L 18789:127.0.0.1:18789 user@remote-mac), WireGuard oder einen internen Reverse-Proxy mit mTLS. Priorität 2: ein statistisch starkes Secret (mindestens 32 Bytes zufällig, Base64), gespeichert als Umgebungsvariable – nicht in Git, nicht in Slack-Threads.
export OPENCLAW_GATEWAY_TOKEN='…' # Platzhaltername; an Ihre OpenClaw-Doku anpassen
In der openclaw.json (oder gleichwertigen Projektdatei) sollten Sie Host/Port explizit setzen, sodass ein späteres Update nicht still auf 0.0.0.0 zurückfällt. Das folgende JSON ist ein illustratives Muster – Feldnamen können je nach Version abweichen; entscheidend ist die Idee: fester Loopback-Host, fester Port, Auth gebunden an Umgebungsvariable.
"gateway": {
"host": "127.0.0.1",
"port": 18789,
"auth": { "mode": "bearer", "tokenEnv": "OPENCLAW_GATEWAY_TOKEN" }
}
}
Rotieren Sie Tokens bei Personenwechsel oder nach Log-Leak sofort; halten Sie getrennte Tokens für Staging und Produktion. Für CI: Secret-Store der Plattform statt Klartext in YAML; in GitHub Actions z. B. verschlüsselte Secrets, niemals echo $TOKEN in Schritten mit Protokollierung. Ergänzend: read-only Mounts für sensible Repos, wenn der Agent nur lesen soll – das begrenzt Schaden bei kompromittiertem Skill-Code.
-H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \
http://127.0.0.1:18789/health
Ersetzen Sie Pfad und Headernamen gemäß Ihrer Gateway-API; wichtig ist: lokaler Test vor Öffnung nach außen. Hinter nginx/Caddy: TLS 1.2+, begrenzte Body-Größe und Timeouts.
Outbound-Domain-Whitelist und Proxy-Strategie – Checkliste
Agenten führen ausgehende Aufrufe zu Modell-APIs, Paketregistern und Git-Hosts aus. Ohne Policy kann ein kompromittiertes Skill beliebige Exfiltration starten oder DNS-Tunneling vorbereiten. Zwei Ebenen: Anwendung (erlaubte Basis-URLs in Config, feste Model-Endpoints) und Netz (Firewall / pf / MDM / Host-IPS / egress-proxy). Wer nur die App-Layer absichert, übersieht oft curl in Postinstall-Skripten oder Sidecar-Prozesse.
Proxy-Variablen für npm, Git und Node sollten konsistent und mit Ausnahmen gesetzt sein, damit interne Registry-Hosts nicht versehentlich über den Exit-Node laufen und damit TLS-Inspection nicht doppelt bricht:
export NO_PROXY=127.0.0.1,localhost,.internal,registry.internal
Für Node mit eigener CA-Datei in Unternehmensnetzen:
Git separat testen, weil es eigene http.proxy-Einstigungen kennt:
GIT_CURL_VERBOSE=1 git ls-remote https://github.com/…
Whitelist-Kern (projektspezifisch erweitern): api.openai.com, api.anthropic.com, registry.npmjs.org, github.com, objects.githubusercontent.com, ggf. huggingface.co, cdn.openai.com (falls Ihr Client Modelle cached) und Ihr eigener Mirror-Host. Alles andere bleibt gesperrt, bis ein Ticket die Freigabe dokumentiert. Für EU-Deployments: prüfen Sie, ob Ihr Anbieter regionale API-Hosts nutzt und tragen Sie diese explizit nach – sonst scheitern Deployments „nur in Frankfurt“.
Auf macOS können Sie mit pf arbeiten (Anchor-Datei, dann pfctl -f). Ein Minimalmuster ist: Standard deny ausgehend für den Gateway-UID-Bereich und pass nur für Whitelist-Ziele – exakte Regeln hängen von IPv4/IPv6, Standard-Gateway und VPN-Split-Tunnel ab; pf vor Produktion in einer Staging-VM validieren. Alternativ: dedizierter Egress-Proxy mit Domain-Policy, den nur der Dienstbenutzer nutzen darf.
sudo pfctl -si
Log-Audit, Aufbewahrung und Alarm-Schwellen
Ohne strukturierte Logs sehen Sie weder Brute-Force auf das Token noch plötzliche DNS-Peaks. Unter launchd leiten Sie stdout/stderr in rotierende Dateien; ergänzend log rotate oder newsyslog-Einträge, damit der Datenträger nicht vollläuft, wenn ein Agent in eine Retry-Schleife gerät.
StandardErrorPath /var/log/openclaw/gateway.err
Nutzen Sie log show --predicate für kurze Echtzeitanalysen auf dem Host (Zeitfenster anpassen). Der Prozessname kann je nach Startscript variieren – prüfen Sie mit ps aux | grep -i openclaw den tatsächlichen Binary-Namen.
JSON-Logs mit request_id, client_ip und auth_result erleichtern Aggregation in SIEM oder Managed-Logging.
Schwellen (Startwerte, nach Baseline feinjustieren):
- Mehr als 20 HTTP
401/403vom Gateway in 5 Minuten pro Quell-IP → Eskalation. - Neue ausgehende TCP-Ziele außerhalb der Whitelist → sofortiger Alert.
- Speicher- oder CPU-Sprung über 3× gleitenden 15-Minuten-Mittelwert → möglicher Mining- oder Loop-Bug.
- Plötzlicher Anstieg erfolgreicher
200-Antworten bei gleichbleibendem Team → prüfen auf gestohlenes Token oder neuen unautorisierten Client.
Rohlogs mindestens 14 Tage vorhalten; Request-Bodies vor SIEM-Export redigieren. Bei gemieteten Instanzen: klären, ob Logs bei Reset verloren gehen.
Typische Fehler: Port, TLS und Berechtigungen lokalisieren
Die folgende Tabelle fasst Symptome zusammen, die auf gemieteten Macs besonders oft auftreten, wenn mehrere Dienste dieselbe UID nutzen oder wenn Corporate-TLS das Node-Trust-Store sprengt. Arbeiten Sie von außen nach innen: erst Erreichbarkeit (curl), dann Auth, dann Dateisystem.
| Symptom | Wahrscheinliche Ursache | Diagnose / Fix |
|---|---|---|
EADDRINUSE |
Port doppelt belegt (alter Prozess, anderer Dienst) | lsof -nP -iTCP:18789 -sTCP:LISTEN → PID beenden oder Port in Config ändern |
TLS: UNABLE_TO_VERIFY_LEAF_SIGNATURE |
Firmenproxy oder fehlende Root-CA in Node | openssl s_client -connect api.example.com:443 -servername api.example.com; NODE_EXTRA_CA_CERTS setzen |
| 401 trotz Token | Falsche Header-Zeile, Leerzeichen, anderes Secret in launchd vs. Shell | Env in der LaunchAgent-plist prüfen (plutil -p ~/Library/LaunchAgents/…plist); Token synchronisieren |
Operation not permitted (Datei) |
TCC, falsche UID, SIP-geschützte Pfade | Workspace unter ~/openclaw des Dienstusers halten; keine Systemordner |
| Timeout nur zu Registry-Hosts | Proxy falsch, NO_PROXY zu schmal oder DNS-Filter | curl -v https://registry.npmjs.org mit/ohne Proxy vergleichen |
Zusätzlich: Wenn nur IPv6 zum Zielhost aufgelöst wird, Ihre Firewall aber nur IPv4-Regeln hat, wirkt der Dienst „tot“. Test mit curl -4 vs. curl -6. Bei Docker auf demselben Host (siehe Docker-Artikel) prüfen Sie Published-Ports auf Kollisionen mit dem nativen Gateway-Port.
Go-Live-Sicherheitscheckliste (kurz abhaken)
- Gateway nur 127.0.0.1 oder Socket; öffentliche Erreichbarkeit nur mit WAF + IP-Allowlist.
- Token per Zufallsgenerator; Rotation dokumentiert; keine Duplikate zwischen Teams.
- Outbound-Whitelist aktiv; Ausnahmen ticketgebunden.
- launchd-/Docker-Restart-Policy getestet (Stromausfall-Simulation).
- Logs mit Schwellen angebunden; Testalarm ausgelöst.
- Abhängigkeiten und Skills aus vertrauenswürdigen Quellen; Pinning in Lockfiles.
- Backup der
openclaw.jsonund LaunchAgents verschlüsselt; keine Secrets in Klartext-Archiven. - Incident-Playbook: wer rotiert Tokens, wer sperrt IPs, wer Kommunikation mit dem Provider (z. B. MacPull) aufnimmt.
Nach dem Abhaken: ein kurzer Penetrations-Test vom internen Netz (nmap auf den Builder-Port, falscher Bearer) sollte aktiv abgewiesen werden – ohne dass Produktionsdaten tangiert werden.
Sicherheits-FAQ
- Warum reicht ein starkes Passwort für das OpenClaw-Gateway nicht?
- Weil automatisierte Clients mit statischen Bearer-Tokens arbeiten. Ohne Netzsegmentierung und Rotation ersetzt kein Passwort die Kontrolle über dieses Secret.
- Soll das Gateway auf 0.0.0.0 lauschen, wenn nur ein Reverse-Proxy davor steht?
- Nur wenn Firewall und Quell-IP-Policy greifen. Sauberer ist Loopback-Bindung und TLS am Proxy – siehe auch unsere Matrix im MCP-Preflight-Artikel.
- Welche Domains gehören typischerweise auf die Whitelist?
- Modell-APIs, npm/Git-Registry, ggf. Hugging Face und interne Mirrors – nicht „das ganze Internet“.
- Wie erkenne ich TLS-Probleme hinter Corporate-Proxy schnell?
openssl s_clientund Vergleich der Zertifikatskette; Node mitNODE_EXTRA_CA_CERTSalignen.- Welche Log-Schwellen sind für ein kleines Team sinnvoll?
- Start mit Auth-Fehlern pro IP und Zeitfenster, plus Alert bei unbekanntem Egress – dann an die echte Baseline anpassen.
Zusammenfassung: Die produktive OpenClaw-Oberfläche 2025/2026 ist ein Zusammenspiel aus Node-22-Laufzeit, Gateway-Bindung, Bearer-Token-Lebenszyklus, Egress-Policy und auswertbaren Logs. Typische Brüche: 0.0.0.0 ohne Schutz, gleiche Tokens in mehreren Umgebungen, keine Auswertung von Auth-Fehlern. Mit den Befehlen und Checklisten oben reduzieren Sie das Risiko ohne Overhead-Papierkram.
Beschaffung & Betrieb: Ein gemieteter Apple-Silicon-Knoten entlastet Patch- und Netz-Arbeit: Kaufen (Region/Paket), Hilfe (Zugriff/Peering), Startseite (Vergleich). Teams trennen Staging/Produktion per Token, Ports und Logs. Mehr HowTos: Technik-Blog, Deployment, MCP-Preflight, Docker.