Zum Inhalt springen
Sicherheits-Checkliste

Sicherheits-Checkliste

⚠️ WARNUNG: Einige Sicherheitsmaßnahmen beziehen sich auf 230V AC- Netzspannung (Relais-Test, Netzteilprüfung). Vor Arbeiten an der Schaltung immer stromlos schalten. Im Zweifel eine qualifizierte Elektrofachkraft beauftragen.

Überblick

Diese Checkliste umfasst Sicherheitsmaßnahmen zur Härtung des Pool-Controllers. Obwohl der Controller im lokalen Netzwerk läuft und Pumpen (keine sicherheitskritischen Systeme) steuert, verhindern diese Empfehlungen unbefugten Zugriff und reduzieren die Angriffsfläche.


Kritisch (Muss umgesetzt werden)

1. Standard-Passwort ändern

Das werksseitige Web-Interface-Passwort muss vor dem Anschluss an ein Netzwerk geändert werden.

  • Standard: admin
  • Aktion: Web-UI → Security & Update → Passwort ändern
  • Anforderungen:
    • Mindestens 8 Zeichen
    • Mischung aus Groß-/Kleinbuchstaben, Ziffern und Sonderzeichen
    • Kein wiederverwendetes Passwort aus anderen Diensten
  • Hinweis: Dieses Passwort schützt auch die OTA-Update-Endpunkte — es gibt kein separates OTA-Passwort.

2. MQTT-Authentifizierung verwenden

  • Aktion: MQTT-Benutzername und -Passwort in den Controller-Einstellungen konfigurieren
  • Warum: Unauthentifiziertes MQTT erlaubt jedem im Netzwerk, auf Controller-Topics zu publizieren
  • Empfehlung: Dedizierten MQTT-Benutzer für den Controller mit minimalen Berechtigungen anlegen

3. MQTT-Broker nur intern erreichbar

  • Aktion: MQTT-Broker nur an lokale Netzwerkschnittstelle binden

  • Warum: Ein öffentlich erreichbarer MQTT-Broker kann gefunden und missbraucht werden

  • Mosquitto-Konfiguration:

    listener 1883 192.168.1.10
    allow_anonymous false
    password_file /etc/mosquitto/passwd
  • Port 1883 oder 8883 NIEMALS für das Internet freigeben


Hoch (Dringend empfohlen)

4. Web-Interface nur im LAN

  • Das Web-Interface hört standardmäßig auf allen Schnittstellen
  • Aktion: Sicherstellen, dass sich der Controller in einem vertrauenswürdigen lokalen Netzwerk befindet
  • Port 80/443 des Controllers NIEMALS für das Internet freigeben
  • Bei Bedarf nach Fernzugriff: VPN (WireGuard, Tailscale, OpenVPN) oder Home Assistant sicheren Fernzugriff verwenden

5. Nur offizielle Firmware verwenden

  • Aktion: Ausschließlich Firmware aus offiziellen GitHub-Releases flashen
  • Warum: Inoffizielle Firmware könnte Hintertüren oder unsichere Modifikationen enthalten
  • Prüfung:
    • Von offiziellen Releases herunterladen
    • Release-Tag mit der erwarteten Version vergleichen
    • Bei Bedarf selbst aus dem Quellcode bauen

6. Backup vor OTA-Update

  • Aktion: Screenshot oder Export der aktuellen Konfiguration vor dem Firmware-Update speichern
  • Warum: OTA-Fehler können das Dateisystem beschädigen und ein erneutes Flashen erforderlich machen
  • Hinweis: Die Konfiguration des Controllers wird im NVS gespeichert und überlebt in den meisten Fällen ein erneutes Flashen

Mittel (Empfohlen)

7. Relais vor Lastanschluss testen

  • Aktion: Relais-Funktion mit Multimeter prüfen, bevor 230V AC-Pumpen angeschlossen werden
  • Warum: Ein defektes Relais könnte eine Pumpe permanent eingeschaltet lassen, was ein Sicherheitsrisiko darstellt
  • Vorgehen: Siehe Hardware-Guide → Relais-Test

8. Dediziertes Netzwerk-VLAN verwenden

Für fortgeschrittene Aufbauten:

  • ESP32 in ein IoT-VLAN mit eingeschränktem Internetzugriff legen
  • Nur erlauben: MQTT-Broker, NTP-Server, Home Assistant
  • Alle eingehenden Verbindungen aus dem Internet blockieren

9. Unbenutzte Funktionen deaktivieren

  • Aktion: Wenn OTA nicht genutzt wird:
    • Nur GitHub-OTA deaktivieren: Ausgehenden HTTPS (Port 443) vom Controller in der Netzwerk-Firewall blockieren
    • OTA vollständig deaktivieren (inkl. manuellem Upload): Die OTA-Routenregistrierungen in src/WebPortal.cpp (Zeilen 175–228) entfernen und die Firmware neu bauen; oder OTA sowohl ein- als auch ausgehend in der Firewall blockieren
  • Aktion: Wenn das Web-Interface nicht benötigt wird, Zugriff über Netzwerk-Firewall-Regeln einschränken
  • Warum: Weniger Angriffsfläche reduziert Risiken

Netzwerksicherheit-Übersicht

Internet
    │ (blockiert)
┌──────────────┐     ┌────────────┐     ┌──────────────────┐
│ Heimrouter   │─────│ Lokales LAN│─────│ Pool Controller   │
│ (Firewall)   │     │ 192.168.x.x│     │ ESP32             │
└──────────────┘     └────────────┘     └──────────────────┘
                            │                    │
                            ▼                    ▼
                      ┌──────────────┐     ┌──────────────┐
                      │ MQTT-Broker  │     │ Home Assistant│
                      │ (nur lokal)  │     │ (nur lokal)   │
                      └──────────────┘     └──────────────┘

Empfohlene Firewall-Regeln

QuelleZielPortProtokollAktionZweck
ControllerDNS-Server53UDP/TCPErlaubenNamensauflösung
ControllerMQTT-Broker1883TCPErlaubenMQTT-Kommunikation
ControllerNTP-Server123UDPErlaubenZeitsynchronisation
ControllerInternet80TCPBlockierenKein Webzugriff nötig
ControllerInternet443TCPErlaubenOTA-Update (GitHub)
InternetControllerbeliebigbeliebigBlockierenKein eingehender Zugriff
HA-ServerController80TCPErlaubenWeb-UI / API

Hinweis: Falls OTA-Updates nicht genutzt werden, kann Port 443 stattdessen blockiert werden. Der Controller verwendet ausgehenden HTTPS nur zum Prüfen und Herunterladen von Firmware-Releases von GitHub.


Zugangsdaten-Verwaltung

Speicherort der Zugangsdaten

ZugangsdatenSpeicherVerschlüsselt?
WLAN-PasswortNVSNein (NVS standardmäßig unverschlüsselt)
MQTT-PasswortNVSNein
Web-UI-PasswortNVSSHA-256-gehasht

Hinweis: NVS-Werte werden im Klartext auf dem Flash-Chip gespeichert. Physischer Zugriff auf das Gerät gefährdet alle Zugangsdaten. Flash-Verschlüsselung für Produktionsumgebungen aktivieren.

Flash-Verschlüsselung (ESP32)

Für erweiterte Sicherheit die ESP32-Flash-Verschlüsselung aktivieren:

  1. In menuconfig aktivieren: Security features → Enable flash encryption
  2. Efuse brennen, um Verschlüsselung dauerhaft zu aktivieren
  3. Firmware neu flashen
  4. Alle NVS-Daten werden verschlüsselt gespeichert

⚠️ Warnung: Flash-Verschlüsselung ist auf den meisten ESP32-Modulen nicht umkehrbar. Nach der Aktivierung kann der Flash ohne Verschlüsselungsschlüssel nicht mehr gelesen werden.


Verwandte Dokumente

Zuletzt aktualisiert am