Logo Herborner Pumpentechnik GmbH & Co KGMQTT Connector – Dokumentation
Inhalt dieser Seite

MQTT Connector – Sicherheit

Der MQTT Connector ist die Schnittstelle zwischen Ihrer Steuerung und den Pumpendaten. Wer sich am Broker anmelden kann, liest die Werte der Anlage; wer schreiben darf, gibt Messwerte vor. Deshalb schützt die App den Zugang in mehreren Ebenen, die aufeinander aufbauen. Keine Ebene genügt allein, zusammen ergeben sie einen belastbaren Schutz.

               1. Netzwerk   2. TLS           3. Anmeldung   5. Schreib-   6. Wertprüfung
Steuerung ───► Firewall ───► verschlüsselt ─► Passwort ────► rechte    ───► Typ, Min/Max, ───► Pumpendaten
                                              4. Zertifikat  je Gerät      Schreibrecht
                             7. Überwachung: Weboberfläche, Logs, Statistik

Übersicht

Ebene Schützt vor Im Auslieferungszustand Wer stellt ein
1. Netzwerk Zugriff von fremden Rechnern Broker auf Port 1883 im ganzen Netz erreichbar Betreiber (Firewall, Netzplanung)
2. TLS Mitlesen von Passwörtern und Werten aus Herborner Pumpen (Konfiguration), Betreiber (Zertifikat in der Steuerung)
3. Anmeldung Unbekannte Clients an, anonyme Verbindungen sind immer gesperrt Betreiber oder Herborner Pumpen
4. Client-Zertifikat Gestohlene Passwörter aus, derzeit nicht einrichtbar –
5. Schreibrechte Schreiben durch reine Lese-Systeme oder auf fremde Geräte an: plc schreibt alles, monitor nichts Herborner Pumpen
6. Wertprüfung Falsche oder unzulässige Werte an, nicht abschaltbar –
7. Überwachung Unbemerkte Angriffe und Fehler an Betreiber (regelmäßig hinsehen)

1. Netzwerk

Was es bringt: Ein Angreifer, der das Gerät gar nicht erreicht, kann auch nichts ausprobieren. Der Broker bremst falsche Anmeldeversuche nicht; das Netzwerk ist deshalb die erste und wichtigste Hürde.

So nutzen Sie es:

  1. Betreiben Sie das Gerät im Steuerungsnetz (OT-Netz) der Anlage, nicht im Büronetz und nie direkt am Internet.
  2. Lassen Sie per Firewall auf den MQTT-Port (1883, mit TLS 8883) nur die IP-Adressen der Steuerungen und Leitsysteme zu, die ihn brauchen.
  3. Geben Sie die Weboberfläche nur für Service-Rechner frei. Sie arbeitet ohne Anmeldung und zeigt Werte, Protokolle und Benutzernamen – nie Passwörter.

Die Verbindung zur Herborner-Cloud baut HP.CloudLink auf, nicht der MQTT Connector. Für den MQTT Connector sind keine Verbindungen von außen in das Anlagennetz nötig.

2. Verschlüsselung (TLS)

Was es bringt: Ohne TLS gehen Benutzername, Passwort und alle Werte im Klartext über das Netz. Jeder, der im selben Netz mitschneidet, kann das Passwort lesen und sich danach selbst anmelden. Mit TLS ist die Verbindung verschlüsselt, und die Steuerung prüft anhand des Zertifikats, dass sie wirklich mit diesem Gerät spricht.

Ist TLS eingeschaltet, nimmt der Broker Verbindungen von außen nur noch verschlüsselt auf Port 8883 an. Port 1883 ist dann nur noch für die App selbst innerhalb des Geräts erreichbar.

Das Gerät weist sich mit einem eigenen Zertifikat aus, das die App selbst erzeugt (selbstsigniert). Der zugehörige private Schlüssel entsteht auf dem Gerät und verlässt es nie. Die Steuerung vertraut genau diesem Zertifikat; man nennt das Pinnen.

So nutzen Sie es:

  1. TLS einschalten: Herborner Pumpen setzt in der Konfiguration unter broker:

    Parameter Wert Bedeutung
    tls_enabled true TLS einschalten
    tls_port 8883 Port für verschlüsselte Verbindungen
    tls_subject_alt_names z. B. ["plc-gateway.local"] zusätzliche Namen im Zertifikat, sonst leer

    Die App erzeugt daraufhin das Zertifikat. Darin stehen die IP-Adressen des Geräts, die FLECS meldet, und die Namen aus tls_subject_alt_names.

  2. Port freigeben: Port 8883 muss für die App in FLECS und in der Firewall freigegeben sein.

  3. Zertifikat herunterladen: In der Weboberfläche unter Telemetry, Zeile TLS, auf Download certificate klicken. Die Datei mqtt-broker.crt enthält nur das Zertifikat, nie den Schlüssel.

  4. Fingerabdruck vergleichen: Dieselbe Zeile zeigt den SHA-256-Fingerabdruck; das Symbol daneben kopiert ihn. Vergleichen Sie ihn mit dem der heruntergeladenen Datei, etwa mit openssl x509 -in mqtt-broker.crt -noout -fingerprint -sha256, oder mit dem Fingerabdruck, den Herborner Pumpen aus der Cloud nennt. So stellen Sie sicher, dass unterwegs niemand ein anderes Zertifikat untergeschoben hat. Steuerungen, die statt des Zertifikats nur den Fingerabdruck hinterlegen, bekommen ihn auf demselben Weg.

  5. Steuerung umstellen: Port 8883, TLS ein, mqtt-broker.crt als vertrauenswürdiges Zertifikat hinterlegen. Testen lässt sich das so:

    mosquitto_sub -h <IP-Adresse> -p 8883 --cafile mqtt-broker.crt -u plc -P <Passwort> -t HP/status -v
    

Gut zu wissen:

3. Anmeldung mit Benutzer und Passwort

Was es bringt: Nur wer Benutzername und Passwort kennt, verbindet sich mit dem Broker. Anonyme Verbindungen sind immer gesperrt, unabhängig von der Konfiguration. Ein Benutzer ohne Passwort kann sich nicht anmelden.

Ein sicheres Passwort wählen

Auf dem Gerät und in der Konfiguration steht nie das Passwort selbst, sondern nur sein Hash, eine Art Fingerabdruck. Aus dem Hash lässt sich das Passwort nicht zurückrechnen, wohl aber durch Ausprobieren erraten – bei kurzen oder gängigen Passwörtern schnell. Der Hash wird mit der Konfiguration auch in die Herborner-Cloud übertragen.

Verwenden Sie deshalb zufällig erzeugte Passwörter mit mindestens 20 Zeichen, etwa so (auf einem Rechner mit Python 3):

python3 -c 'import secrets; print(secrets.token_urlsafe(24))'

Die Steuerung speichert das Passwort ohnehin; niemand muss es sich merken.

Das Passwort setzen

Gesetzt wird das Passwort als Umgebungsvariable der App in FLECS (Weg A) oder in der Weboberfläche von eThemis, auf Anfrage auch durch Herborner Pumpen (Weg B). Auf das Gerät gelangt in beiden Fällen nur der Hash. Eine Umgebungsvariable hat Vorrang: Solange sie gesetzt ist, behält der Betreiber vor Ort die Hoheit über das Passwort. Bedenken Sie, dass jeder mit Zugriff auf die Einstellungen der App in FLECS die Variable lesen kann.

Die einzelnen Schritte stehen in der Inbetriebnahme unter Passwort setzen.

Passwort ändern oder Zugang sperren

Die App meldet sich selbst mit einem eigenen, zufällig erzeugten Zugang am Broker an. Dieser steht nie in der Konfiguration und verlässt das Gerät nicht.

4. Client-Zertifikate

Was es bringt: Zusätzlich zum Passwort muss jede Steuerung ein Zertifikat vorweisen, das Ihre CA ausgestellt hat. Ein abgefangenes oder erratenes Passwort genügt dann nicht mehr; der Angreifer bräuchte auch das Zertifikat mit dem zugehörigen privaten Schlüssel aus der Steuerung. Das entspricht einer Anmeldung mit zwei Faktoren: etwas, das man weiß (Passwort), und etwas, das man hat (Zertifikat).

Stand: Der Broker kann Client-Zertifikate prüfen, die CA dafür lässt sich aber noch nicht auf das Gerät bringen. Sobald es dafür einen Weg gibt, beschreibt ihn diese Seite. Benutzername und Passwort bleiben auch dann nötig.

5. Schreibrechte je Gerät

Was es bringt: Jeder Benutzer darf nur schreiben, was er für seine Aufgabe braucht. Ein Leitsystem, das nur anzeigt, kann so keine Werte vorgeben, und die Steuerung einer Halle keine Pumpe der anderen – selbst wenn ihr Passwort in falsche Hände gerät.

Lesen dürfen alle Benutzer alle Topics unter HP/. Schreiben legt die Liste write je Benutzer fest:

write Darf schreiben Typischer Einsatz
["+"] die Command-Topics aller Pumpen und Entities eine Steuerung für die ganze Anlage
["pump"] bzw. ["entity"] alle Pumpen bzw. alle Entities getrennte Steuerungen für Pumpen und Entities
["pump/AB-2400654-010-01"] nur diese Pumpe, über ihre Seriennummer eine Steuerung je Pumpe
[] nichts Visualisierung, Leitsystem, Datenaufzeichnung

Ein Recht über die Nummer (pump/1) gilt nur für den Pfad über die Nummer und folgt bei einer Umnummerierung nicht dem Gerät; für feste Zuordnungen die Seriennummer verwenden. Die Rechte setzt der Broker durch, bevor ein Befehl die App erreicht.

Kein Benutzer darf die State-Topics, HP/status, HP/error oder HP/response/… beschreiben. Diese Topics schreibt nur die App; wer sie liest, kann sich auf ihre Herkunft verlassen.

So nutzen Sie es:

6. Prüfung jedes Befehls

Was es bringt: Auch ein angemeldeter Benutzer mit Schreibrecht kann nur gültige Werte vorgeben. Diese Prüfung ist immer aktiv und nicht abschaltbar.

Jeder abgelehnte Befehl erscheint mit Grund auf HP/error und in der Statistik.

7. Überwachung

Was es bringt: Ein Schutz, den niemand überprüft, fällt nicht auf, wenn er versagt. Die Weboberfläche zeigt alles, was Sie dafür brauchen:

Wo Was Sie sehen Worauf Sie achten
Telemetry → Zustand Broker-Prozess, Anzahl verbundener Clients, anmeldbare Benutzer Mehr Clients als Steuerungen (plus die App selbst)? Benutzer ohne Passwort?
Logs Meldungen des Brokers (mit Mosquitto: gekennzeichnet): An- und Abmeldungen, abgelehnte Anmeldungen Häufige abgelehnte Anmeldungen (not authorised) von unbekannten Adressen
Statistics abgelehnte Befehle, Verbindungsabbrüche Plötzlich viele abgelehnte Befehle

Protokolle und Ereignisse gehen über HP.CloudLink auch an die Herborner-Cloud.

Bei Auffälligkeiten: Passwörter der betroffenen Benutzer ändern, Firewall-Regeln prüfen und Herborner Pumpen informieren.

Empfohlene Schutzstufen

Stufe Geeignet für Maßnahmen
Basis (Auslieferung) abgeschottetes Steuerungsnetz mit wenigen, bekannten Geräten Passwort für jeden Benutzer, Schreibrechte, Wertprüfung
Empfohlen übliches Anlagennetz zusätzlich: zufällige Passwörter (≥ 20 Zeichen), TLS, Firewall nur für die Steuerungen, eigener Benutzer je Steuerung mit Schreibrechten nur für ihre Geräte, write: [] für alle lesenden Systeme
Hoch Netze mit vielen Teilnehmern, Fernzugriff, kritische Infrastruktur zusätzlich: Passwörter nur per Umgebungsvariable vor Ort, Logs regelmäßig prüfen; Client-Zertifikate, sobald einrichtbar

Checkliste zur Inbetriebnahme

  1. Gerät im Steuerungsnetz, MQTT-Port nur für die Steuerungen freigegeben.
  2. Für jeden benötigten Benutzer ein eigenes, zufälliges Passwort gesetzt; Users in der Weboberfläche ist grün.
  3. Nicht benötigte Benutzer, etwa ein ungenutzter monitor, haben kein Passwort und sind damit gesperrt.
  4. TLS eingeschaltet, Fingerabdruck verglichen, Steuerungen verbinden sich auf Port 8883.
  5. Lesende Systeme verwenden einen Benutzer ohne Schreibrechte (write: []); jede Steuerung darf nur ihre Geräte schreiben (Spalte write access).
  6. Weboberfläche nur von Service-Rechnern erreichbar.

Grenzen

Diese Punkte sollten Sie bei der Bewertung kennen:

Mehr zur Funktion der App steht in der Funktionsbeschreibung.