DBAtlas · Atlas für Datenbankbetrieb

Elasticsearch-Sicherheitshärtung (Security, TLS, Rollen, Audit)

ElasticsearchStufe: FortgeschrittenDauer: 10 Min. (Audit) – 2 Stunden (vollständige Härtung)

Keine Installation und kein Tagesbetrieb: ein szenariobasiertes Runbook zur Härtung eines laufenden Elasticsearch-Clusters. Lesendes Sicherheitsaudit, Aktivieren der deaktivierten Security zusammen mit Transport-TLS (vollständiger Cluster-Neustart), Rolling-Umstellung auf HTTP-TLS, DBA- und Anwendungsrollen, API Keys mit Ablaufzeit, ein Notfallbenutzer im File Realm, elastic aus der täglichen Arbeit nehmen, anonymen Zugriff abschalten, network.host und IP-Filterung, Audit Logging (mit Lizenzprüfung), Zugriff auf das Snapshot-Repository und Service-Account-Token für Kibana; am Ende wird das Audit wiederholt, um zu zeigen, dass die Risiken geschlossen sind. Bei RPM/DEB-Installationen von 8.x/9.x sind Security und TLS bereits aktiv: Beginne mit dem Audit und wende nur die Szenarien an, die RISK oder WARNING melden. Shard-, Festplatten- und Node-Aufgaben stehen im Betriebs-Guide, Backups im Snapshot-Guide.

Topologie: Elasticsearch-Cluster mit 1–12 Nodes (+ Kibana)

Szenarien

  • Sicherheitsstatus prüfen (nur lesend) — Ändert nichts. Ob Security aktiv ist, Zugriff ohne Authentifizierung, HTTP-/Transport-TLS, anonymer Zugriff, Benutzer und Verwendung von elastic, API Keys ohne Ablaufzeit, Audit Logging, IP-Filterung, Listen-Adressen und Lizenzstatus werden als OK / WARNING / RISK gemeldet. Wähle das, wenn du nicht weißt, wo du anfangen sollst.
  • Vollständige Härtung (alles der Reihe nach) — Audit → Security + Transport-/HTTP-TLS (falls deaktiviert; vollständiger Cluster-Neustart) → Benutzer/Rollen/API Keys, anonymen Zugriff abschalten, elastic aus der täglichen Arbeit nehmen → Netzwerk und IP-Filterung → Audit Logging (falls die Lizenz es erlaubt) → Zugriff auf das Snapshot-Repository → Kibana-Verbindung → abschließendes Audit.
  • Security deaktiviert: Security und Transport-TLS aktivieren — Ein Cluster mit xpack.security.enabled: false oder aus 7.x aktualisiert, auf den ohne Authentifizierung zugegriffen wird. Zertifikate werden erzeugt, Security wird mit Transport-TLS (optional auch HTTP-TLS) aktiviert. Ein vollständiger Cluster-Neustart ist nötig (Ausfallzeit): TLS- und Nicht-TLS-Verbindungen zwischen Nodes können nicht nebeneinander bestehen.
  • HTTP-(REST-)Verkehr auf TLS umstellen — Security ist aktiv, aber Port 9200 spricht unverschlüsseltes HTTP: Passwörter sind im Netz lesbar. HTTP-Zertifikate werden verteilt und die Nodes nacheinander neu gestartet; die Clients wechseln auf https://.
  • Benutzer, Rollen, API Keys; elastic und anonymer Zugriff — Anwendungen verbinden sich mit dem Superuser elastic, anonymer Zugriff ist aktiv oder es gibt API Keys ohne Ablaufzeit. Getrennte Rollen und Benutzer für DBA und Anwendung, ein API Key mit Ablaufzeit für die Anwendung, ein Notfallbenutzer (File Realm); das Passwort von elastic wird geändert und elastic aus der täglichen Arbeit genommen.
  • Audit Logging aktivieren — Wer auf welchen Index zugegriffen hat, fehlgeschlagene Anmeldeversuche, Autorisierungsablehnungen und Änderungen an Sicherheitseinstellungen müssen protokolliert werden. xpack.security.audit.enabled (statisch, Rolling Restart) – erfordert eine Lizenz (der Schritt prüft die Lizenz).
  • Netzwerkzugriff und IP-Filterung — 9200/9300 lauschen auf allen Interfaces oder sind für alle erreichbar. network.host wird auf die interne IP beschränkt; mit Firewall und Elasticsearch-IP-Filterung sind nur die Nodes, Kibana und das Anwendungsnetz zugelassen.
  • Zugriff auf das Snapshot-Repository absichern — Das Snapshot-Verzeichnis ist für alle lesbar, die Berechtigung zur Verwaltung des Repositorys ist zu weit gefasst oder Cloud-Zugangsschlüssel stehen in elasticsearch.yml. Verzeichnisrechte, eine Snapshot-Operator-Rolle, Keystore und eine schreibgeschützte Repository-Registrierung auf dem zweiten Cluster.
  • Kibana-Verbindung absichern — Kibana verbindet sich mit dem Benutzer elastic oder unverschlüsselt, das Passwort steht im Klartext in kibana.yml. Service-Account-Token, CA-Prüfung, Keystore und Verschlüsselungsschlüssel.

Vor dem Start

  • root/sudo auf allen Nodes; SSH vom ersten Node zu den anderen (Verteilung der Zertifikate).
  • Der Cluster ist green; Rolling-Vorgänge werden nicht auf einem ungesunden Cluster durchgeführt.
  • python3 (JSON-Parsing), openssl und unzip sind installiert.
  • Das Aktivieren der Security (Transport-TLS) erfordert einen vollständigen Cluster-Neustart: ein Wartungsfenster und einen vorher erstellten Snapshot.
  • Client-Inventar (Kibana, Logstash, Beats, Anwendungen): Sobald HTTP-TLS und Authentifizierung aktiv sind, muss jeder Client auf https + CA + Benutzer/API Key umgestellt werden.
  • Audit Logging und IP-Filterung sind kostenpflichtige Lizenzfunktionen (Gold und höher: Gold, Platinum, Enterprise oder ein 30-Tage-Trial; bei neuen Self-Managed-Subscriptions Platinum/Enterprise). Mit einer Basic-Lizenz funktioniert beides nicht: Die Einstellung wird akzeptiert, aber es entstehen keine Audit-Einträge und der IP-Filter blockiert keine Verbindung. Lizenz: GET _license.

Phasen der Anleitung

  • Vorbereitung: Sicherheitsnetz und Hilfswerkzeuge — Backup von Konfiguration, Keystore und Zertifikaten: … · Snapshot erstellen (empfohlen) · PyYAML und Werkzeuge: … · Berechtigungen der Konfigurationsdateien: … · Admin-Zugangsdaten in die netrc-Datei schreiben
  • Statusprüfung (nur lesend) — Sicherheitsbericht: … · Befunde den Szenarien zuordnen
  • Security aktivieren: Diagnose und Zertifikate — Diagnose: Ist Security wirklich deaktiviert? · CA- und Node-Zertifikate erzeugen · Zertifikate auf die Nodes verteilen · Zertifikatsberechtigungen: … · elasticsearch.yml: Security- und TLS-Einstellungen: … · Shard-Allocation stoppen und Flush ausführen
  • Security aktivieren: vollständiger Cluster-Neustart — Stoppen: … · Starten: … · Passwort für elastic festlegen · Admin-Zugangsdaten in die netrc-Datei schreiben (elastic) · Shard-Allocation freigeben und auf Gesundheit warten · Passwort für kibana_system …
  • HTTP-TLS: Zertifikate — Aktueller Zustand · HTTP-Zertifikate erzeugen · Verteilen und Berechtigungen setzen: …
  • Benutzer, Rollen und API Keys — Vorhandene Benutzer, Rollen und API Keys · DBA-Adminbenutzer (…) · Notfallbenutzer (File Realm): … · Anwendungsrolle und -benutzer (…) · API Key mit Ablaufzeit für die Anwendung · Minimale Berechtigungen prüfen (…) …
  • Netzwerkzugriff und IP-Filterung — Firewall: … · Liegt network.host auf der internen IP: … · Elasticsearch-IP-Filterung
  • Audit Logging: Lizenz und Einstellungen — Erlaubt die Lizenz Audit Logging?
  • Audit Logging: Ereignisauswahl und Prüfung — Welche Ereignisse aufgezeichnet werden · Entstehen Audit-Einträge: …
  • Zugriff auf das Snapshot-Repository — Berechtigungen des Snapshot-Verzeichnisses: … · Repository-Liste, Cloud-Schlüssel und Snapshot-Operator-Rolle
  • Kibana-Verbindung — Service-Account-Token für Kibana · kibana.yml und Keystore · Kibana-Verbindung prüfen
  • Abschließendes Audit (nach der Härtung) — Sicherheitsbericht: … (Endzustand)
  • Aufräumen und Nacharbeiten — Temporäre Zugangsdatendateien löschen: … · Nacharbeiten
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →