Sichere SIEM-Stack-Container einrichten

Diese Anleitung beschreibt Schritt für Schritt die Einrichtung und Verwendung unserer vorgefertigten, gehärteten und produktionsreifen Container, die für On-Premise- und Cloud-Bereitstellung geeignet sind.

Ein einsatzbereiter, gehärteter SIEM-Stack für Schutzunterkünfte und Krisenzentren: Überwacht Netzwerk und Endgeräte auf Eindringlinge, Stalkerware und andere Missbrauchssoftware – mit vorgefertigten Dashboards und täglichen Threat-Intel-Updates.


Funktionen

  • Wazuh + Elasticsearch + Kibana SIEM-Stack
  • Zeek & Suricata zur Netzwerküberwachung mit speziellen Stalkerware-Regeln
  • Nur VPN-Zugriff (WireGuard)
  • TLS-Verschlüsselung zwischen allen Diensten
  • Vordefinierte RBAC-Konten (Admin, Viewer)
  • Tägliche Regel- und Threat-Intel-Updates
  • Verschlüsselte Nachtbackups auf lokale 500-GB-Festplatte
  • Vorgefertigte Kibana-Dashboards für:
    • Bedrohungsüberblick
    • Stalkerware-Watchlist
    • Netzwerkanomalien
    • Hochrisiko-Geräte

Anforderungen

Host-System:

  • Linux-Server (getestet mit Debian 12, Ubuntu 22.04 LTS, Rocky Linux 9)
  • Docker + Docker Compose v2
  • Mindestanforderungen:
    • CPU: 4 Kerne (8+ empfohlen)
    • RAM: 8 GB (16 GB empfohlen)
    • Speicher: 200 GB SSD für Daten + separate 500-GB-Festplatte für Backups
  • Dedizierte Netzwerkkarte für Monitoring (Sniffing):
    • Zweite Netzwerkkarte, die mit dem zu überwachenden Netzwerk verbunden ist
    • Darf keine IP-Adresse haben
    • Beispiel: eth1 unter Linux
    • Kann ein USB-3.0-Gigabit-Ethernet-Adapter sein, falls kein PCIe-Slot frei ist
  • Internetverbindung (für Regel-Updates, außer bei Offline-Nutzung)

Client-Geräte (für VPN-Zugriff):

  • WireGuard-Client installiert (Windows, macOS, Linux, iOS oder Android)

Erstinstallation

1. Repository klonen

git clone https://github.com/ninabarzh/secure-shelter-siem-stack.git
cd secure-shelter-siem-stack

2. Umgebungsvariablen kopieren und anpassen

cp .env.example .env
nano .env

Sichere Passwörter setzen für:

  • ELASTIC_PASSWORD
  • KIBANA_PASSWORD
  • WAZUH_PASSWORD

3. WireGuard VPN starten (erforderlich)

Zugriff auf Kibana, Elasticsearch und Wazuh erfolgt ausschließlich über das VPN – keine Dienste sind öffentlich erreichbar.

Im Repository-Stammverzeichnis:

docker-compose up -d vpn

Der VPN-Server lauscht auf UDP/51820. Das standardmäßige VPN-Subnetz-Gateway ist 10.13.13.1.

4. VPN-Peers hinzufügen (Mitarbeiter, Responder, Remote-Agents)

Neuen Peer anlegen:

./vpn/add-peer.sh <peer-name>

Beispiel:

./vpn/add-peer.sh alice

Dies führt folgende Schritte aus:

  • Erstellt einen WireGuard-Peer namens alice
  • Weist eine IP im VPN-Subnetz zu
  • Speichert die Konfiguration unter vpn/alice.conf

alice.conf sicher an den Nutzer übermitteln – die Datei kann im WireGuard-Client (Windows, macOS, Linux, Android oder iOS) importiert werden.

5. TLS-Zertifikate für Elasticsearch generieren

Ausführen:

./scripts/gen-certs.sh

Erstellt:

config/elasticsearch/certs/elastic-stack-ca.p12
config/elasticsearch/certs/elastic-certificates.p12

Das Passwort wird in .env gesetzt – bei Bedarf anpassen.

6. Erkennungsregeln aktualisieren

Aktuelle Suricata-Regeln beziehen:

./scripts/update-rules.sh

Quellen:

  • Emerging Threats (v7.0.3)
  • AbuseCH SSL-Blacklist
  • Lokale custom.rules für Stalkerware-Erkennung

7. SIEM-Stack bereitstellen

./scripts/deploy.sh

Startet:

  • Elasticsearch mit TLS
  • Kibana (importiert Dashboards aus config/dashboards/)
  • Wazuh Manager
  • Suricata & Zeek
  • Filebeat mit TLS zu Elasticsearch

8. Auf Dashboards zugreifen (über VPN)

Mit der Peer-Konfiguration zum VPN verbinden, dann aufrufen:

http://10.13.13.1:5601

Anmeldung:

  • Benutzername: kibana_system (aus .env)
  • Passwort: Ihr KIBANA_PASSWORD

Verfügbare Dashboards:

  • Threat Overview: Alarme aller Quellen
  • High Risk Devices: Endgeräte mit wiederholten Detektionen
  • Network Anomalies: Verdächtige Verkehrsmuster
  • Stalkerware Watchlist: Erkennungen für BadBox, mFly, FlexiSpy, Spynger

9. Wazuh-Agents bereitstellen

Auf einem überwachten Endgerät (innerhalb des VPN oder lokalen Netzwerks):

curl -so wazuh-agent.deb https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.12.0-1_amd64.deb \
 && sudo WAZUH_MANAGER='10.13.13.1' dpkg -i ./wazuh-agent.deb \
 && sudo systemctl enable wazuh-agent --now

10. Netzwerkschnittstellen-Anforderungen

Bei Nutzung von Suricata/Zeek im Paketerfassungsmodus:

  • SNIFFING_INTERFACE in .env setzen (z.B. eth1)
  • Schnittstelle in Promiscuous-Modus versetzen:
sudo ip link set eth1 promisc on

Bereit zur Überwachung, Erkennung und Abwehr.


Dashboards

Nach dem ersten Login sehen Sie:

  • Bedrohungsübersicht: Zusammenfassung aller Warnmeldungen
  • Stalkerware-Watchlist: Erkennungen von BadBox, BadBox2, mFly, FlexiSpy, Spynger und anderen
  • Netzwerkanomalien: Suricata/Zeek-Ereignisse außerhalb normaler Muster
  • Hochrisiko-Geräte: Endgeräte mit mehreren Stalkerware-Indikatoren

Backups

  • Laufen täglich um 02:00 Uhr
  • Mit GPG verschlüsselt
  • Gespeichert auf /mnt/secure-backup (500 GB Festplatte)
  • Beim ersten Lauf wird config/backup/backup-key.gpg generiert
  • Kopieren Sie den Schlüssel auf einen USB-Stick und bewahren Sie ihn sicher auf – ohne ihn können Backups nicht wiederhergestellt werden

Wiederherstellung

gpg --import config/backup/backup-key.gpg
gpg --decrypt /mnt/secure-backup/shelter-siem-YYYY-MM-DD_HH-MM.tar.gz.gpg | tar -xz -C data/

Wartung

  • Stack stoppen: ./scripts/stop.sh
  • Daten sichern: Läuft nächtlich nach /mnt/secure-backup
  • Backup wiederherstellen: ./scripts/restore-backup.sh

Regeln manuell aktualisieren

./scripts/update-rules.sh
docker compose restart suricata zeek

Stack aktualisieren

docker compose pull && docker compose up -d

Sicherheitshinweise

  • Alle Standardpasswörter in .env vor der Bereitstellung ändern
  • VPN-Peer-Konfigurationen sicher aufbewahren
  • Elasticsearch-TLS-Zertifikate privat halten
  • Speicherverbrauch überwachen (./data/elasticsearch) – alte Indizes bei Bedarf bereinigen
  • Der Zugriff erfolgt ausschließlich über VPN – niemals die Ports 9200, 5601 oder 55000 dem Internet aussetzen
  • Bewahren Sie die Backup-Festplatte physisch gesichert auf
  • Testen Sie regelmäßig VPN-Konfigurationen und Backups