OpenClaw absichern: Zugangsdaten, Tool-Allowlists und wer mit deinem Agenten sprechen darf
Warum dieser Post existiert
Diese Woche machte ein Tweet die Runde:
> *"There's a tension between privacy and capability with AI products. The more info you give, the more effective the tools are, but the larger the security blast radius grows. Nothing highlights this more than how people use and (don't) configure OpenClaw properly today."*
10 Impressionen, aber er hat recht. Die meisten Leute richten OpenClaw ein, geben dem Agenten alle API-Keys, öffnen alle Tools — und denken darüber nicht nach.
Das ist ein Problem. Nicht weil OpenClaw unsicher gebaut ist, sondern weil ein schlecht konfigurierter Agent dasselbe tut wie ein schlecht konfigurierter Server: er wird zur Angriffsfläche.
Dieser Post zeigt die drei Ebenen, auf denen wir unser 6-Agenten-Setup abgesichert haben. Keine Theorie — konkrete Einstellungen.
---
Ebene 1: Zugangsdaten richtig speichern
Das ist der häufigste Fehler und der mit den schlimmsten Konsequenzen.
Was die meisten machen (falsch):
```yaml
# In der openclaw-Konfiguration direkt:
ANTHROPIC_API_KEY: sk-ant-api03-xxxxx
TELEGRAM_TOKEN: 8234567890:AAHxxxxx
```
Das Problem: Diese Datei liegt meist unter `~/.openclaw/config.yaml` oder im Workspace-Ordner. Infostealer-Malware, die auf KI-Entwickler-Setups abzielt, kennt diese Pfade. Sie suchen aktiv danach.
Was wir stattdessen machen:
Option 1: .env-Datei mit strikten Berechtigungen
```bash
# .env erstellen
touch /home/sam/.openclaw/workspace/.env
chmod 600 /home/sam/.openclaw/workspace/.env # Nur Owner kann lesen
# Inhalt:
ANTHROPIC_API_KEY=sk-ant-...
TELEGRAM_TOKEN=123456:ABC...
```
In der OpenClaw-Konfiguration dann nur die Variable referenzieren, nicht den Wert selbst.
Option 2: Ausgaben mit Limits absichern
Egal welche Option du wählst: Setz Spending-Limits beim LLM-Provider. Bei Anthropic geht das unter *Usage Limits* in den Account-Einstellungen. Bei OpenAI unter *Billing → Usage limits*.
Wenn ein Key kompromittiert wird, stoppt das den Schaden bei 50€ statt 5.000€.
Option 3: Regelmäßige Key-Rotation
Einmal im Monat alle API-Keys rotieren. Schmerzhaft? Ja. Aber deutlich weniger schmerzhaft als eine unerwartete Rechnung.
---
Ebene 2: Tool-Allowlists — Agenten brauchen nicht alles
OpenClaw-Agenten können standardmäßig viele Tools nutzen: Shell-Ausführung, Browser-Kontrolle, Web-Fetching, Datei-Zugriff. Das ist praktisch. Aber nicht jeder Agent braucht alles.
Das Prinzip des minimalen Privilegs
Unser Coding-Agent Peter braucht:
Unser Marketing-Agent Maya braucht:
Wie wir das umsetzen
In der SOUL.md jedes Agenten definieren wir explizit, welche Tools erlaubt sind und welche Bereiche off-limits:
```markdown
Boundaries
```
Das ist kein technisches Lock, sondern ein Anweisung — aber in Kombination mit Docker-Volumes (die den Zugriff physisch begrenzen) ist es effektiv. Der Agent weiß nicht mal, dass /etc/ existiert, wenn es nicht ins Volume gemountet ist.
Docker-Volumes als harte Grenze
```yaml
# docker-compose.yml
services:
maya:
image: openclaw/openclaw:latest
volumes:
- ./maya-workspace:/home/sam/.openclaw/workspace:rw
- ./content:/content:rw
# Kein Zugriff auf das Host-System außerhalb dieser Pfade
```
Der Agent kann schreiben was er will in sein Workspace-Verzeichnis — aber er kann nicht aus dem Container heraus auf /etc/passwd oder andere kritische Dateien zugreifen.
---
Ebene 3: Wer darf mit deinem Agenten sprechen?
Das wird am häufigsten vergessen. Wenn du einen Agenten über Telegram, Discord oder WhatsApp erreichbar machst — wer kann ihm dann Befehle schicken?
Das Standard-Problem
Viele richten einen Telegram-Bot ein und gehen davon aus, dass "eh niemand die Bot-ID kennt". Das ist Security durch Obscurity. Bot-IDs sind nicht geheim. Wenn dein Bot-Token irgendwo auftaucht (in einem Commit, einem Screenshot, einem Fehlerlog), kann jeder deinem Agenten Befehle schicken.
Und dein Agent — mit Zugriff auf deine API-Keys, deinen Server, deine Dateien — wird diese Befehle ausführen.
Allowlist-basierte Zugriffskontrolle
OpenClaw unterstützt Channel-Konfigurationen mit Absender-Filterung. In unserer Konfiguration:
```yaml
channels:
telegram:
token: ${TELEGRAM_TOKEN}
allowedUsers:
- "123456789" # Dimitrios User-ID
- "987654321" # Sam User-ID
# Alles andere wird ignoriert
```
Jede Nachricht von einer unbekannten User-ID: wird stillschweigend ignoriert. Kein "Wer bist du?", kein Hinweis dass der Bot existiert.
Discord: Rollen statt IDs
Für Discord nutzen wir rollenbasierte Kontrolle:
```yaml
channels:
discord:
allowedRoles:
- "Team"
- "Admin"
# Ohne diese Rolle: keine Reaktion
```
Das bedeutet: Selbst wenn jemand den Discord-Server findet, kann er dem Agenten keine Befehle schicken ohne die richtige Rolle.
---
Die kombinierten Ergebnisse
Vor diesem Setup:
Nach diesem Setup:
Der Aufwand: ein halber Tag. Die Konsequenz: unser gesamtes Agenten-Setup ist jetzt deutlich widerstandsfähiger gegen die häufigsten Angriffsvektoren.
---
Weiterführende Ressourcen
Das vollständige Playbook dokumentiert in Kapitel 7 und 8 genau, wie wir Isolation, Zugriffskontrolle und Credential-Management in unserem 6-Agenten-Setup umgesetzt haben — inklusive der Docker-Compose-Dateien und der exakten Channel-Konfigurationen.
Komplett auf Deutsch verfügbar. 🇩🇪