Sechs Riegel
Die Oberfläche steht im Netz und darf alles, was Ihre Zugänge dürfen. Sechs Handgriffe, jeder schließt eine andere Tür.
n8n ist kein Werkzeug wie ein Texteditor. Es hat Zugriff auf Ihre Datenbank, Ihr Postfach und jedes System, für das Sie einen Zugang hinterlegt haben. Wer in die Oberfläche kommt, kommt an alles davon — nicht durch einen Angriff, sondern indem er einen Ablauf baut.
Kein geteiltes Anmelden. Nicht wegen des Misstrauens, sondern weil man sonst weder sperren noch nachvollziehen kann: Wer geht, nimmt das gemeinsame Kennwort mit, und im Protokoll steht bei jeder Änderung derselbe Name.
Den zweiten Faktor schaltet jeder für sein eigenes Konto ein (Einstellungen → eigenes Konto). Bei einer Oberfläche, die im offenen Netz steht und Zugriff auf alle Systeme hat, ist ein Passwort allein zu wenig.
Der Container von n8n lauscht auf Port 5678 — dieser Port wird nirgends nach außen veröffentlicht. Erreichbar ist n8n nur über den Reverse Proxy, der das Zertifikat hält.
Die Datenbank hängt in einem internen Docker-Netz. Sie braucht keine Adresse in der Welt, und sie bekommt keine.
sudo ufw status docker compose -f /opt/n8n/docker-compose.yml ps
docker compose ps bei n8n oder db eine Portangabe wie 0.0.0.0:5678->5678 steht, ist eine Tür offen, die zu bleiben hat. Der ports-Abschnitt gehört aus der Datei entfernt.Alle hinterlegten Zugänge liegen verschlüsselt in der Datenbank. Der Schlüssel dazu steht in der Umgebungsdatei — und nur dort, wenn niemand ihn wegträgt.
Die Probe: Stellen Sie sich vor, der Server ist weg. Sie haben die Sicherung von gestern. Kommen Sie an die Zugänge? Nur, wenn der Schlüssel an einem zweiten Ort liegt.
n8n speichert zu jedem Lauf die Daten, die durchgelaufen sind — Namen, Adressen, Beträge, ganze Mailtexte. Das ist beim Suchen eines Fehlers Gold wert und nach vier Wochen ein Datenbestand, den niemand bestellt hat.
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=336 # Stunden — hier 14 Tage
EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000Die Checkliste zum Ausdrucken unterlagen/checkliste-absicherung.md 50 Zeilen — Kopierknopf oben rechts
# Checkliste: n8n sicher betreiben > Reihenfolge ist Absicht: Was oben steht, schließt die Tür, die am > wahrscheinlichsten offen steht. Geprüft wird mit `n8n-check.sh`, wo möglich. ## Zugang zur Oberfläche - [ ] Ein Konto je Person — kein geteiltes Anmelden - [ ] Zweiter Faktor eingeschaltet, mindestens für den Eigentümer - [ ] Ausgeschiedene Personen sind gesperrt (nicht nur „nicht mehr benutzt") - [ ] Neue Konten legt nur an, wer schon drin ist — keine offene Registrierung ## Netz - [ ] Nur 443 nach außen offen; Port 5678 ist nirgends veröffentlicht - [ ] Die Datenbank hängt im internen Netz und ist von außen nicht erreichbar - [ ] HTTPS mit gültigem Zertifikat, keine Ausnahme für „schnell mal" ## Der Auslöser von außen (Webhook) - [ ] Kennwort oder Signatur wird geprüft — eine geheime Adresse ist **keine** Absicherung - [ ] Es werden nur die erwarteten Felder übernommen, alles andere verworfen - [ ] Die Größe der Anfrage ist begrenzt - [ ] Die Antwort verrät nichts über das Innere ## Geheimnisse - [ ] `N8N_ENCRYPTION_KEY` ist gesetzt und liegt **zusätzlich** im Passwortspeicher - [ ] Die Umgebungsdatei ist nur für root lesbar (`chmod 600`) - [ ] Kein Geheimnis steht in einem Knoten, einer Notiz oder einem Ausdruck - [ ] Jeder Zugang hat nur die Rechte, die er braucht (eigener Datenbankbenutzer, eigenes Postfach) ## Sicherung - [ ] Tägliche Sicherung von Datenbank **und** Schlüssel (`n8n-sichern.sh`) - [ ] Die Sicherung liegt außerhalb des Servers - [ ] Einmal im Quartal auf einen leeren Container zurückgespielt — mit Probelauf - [ ] Die Abläufe liegen als JSON im Repository, mit Historie ## Daten - [ ] Die Ausführungen werden aufgeräumt (`EXECUTIONS_DATA_PRUNE`), mit einer begründeten Frist - [ ] Es ist bekannt, welche personenbezogenen Daten in den Ausführungen stehen - [ ] Fremdsysteme, die Daten sehen, sind im Verarbeitungsverzeichnis erfasst ## Pflege - [ ] Die n8n-Fassung ist festgenagelt (kein `latest`) - [ ] Vor jeder Aktualisierung: Sicherung, danach: ein Probelauf - [ ] Die Änderungsliste der neuen Fassung wurde gelesen
- Prüfliste Absicherung
WarumWer im Haus welche Rolle bekommt
n8n kennt in der freien Fassung wenige Rollen, aber die reichen für die Grundregel: Wer Abläufe bauen darf, darf alles, was die hinterlegten Zugänge dürfen. Eine feinere Trennung (wer welchen Ablauf sehen darf, Freigaben vor dem Aktivieren) gehört zu den kostenpflichtigen Fassungen.
Praktisch heißt das für ein mittelständisches Haus:
- Zwei Personen mit vollem Zugang — der Kümmerer und eine Vertretung. Nicht mehr, nicht weniger: bei einer Person steht der Betrieb im Urlaub still, bei fünf weiß niemand mehr, wer was geändert hat.
- Alle anderen bekommen das Ergebnis, nicht die Oberfläche — die Liste der offenen Fälle, die Tagesmeldung, die Tabelle in der Anwendung.
- Wer nur zusehen will, bekommt einen Screenshot oder eine Führung. Ein Zuschauerkonto in einem Werkzeug, das Zugriff auf alle Systeme hat, ist kein Zuschauerkonto.