MQT Sicherheit Best Practices und Implementierung

von Hema


MQTT security best practices

Das Internet der Dinge (IoT) Ökosystem verbindet Milliarden von Geräten auf der ganzen Welt, von Heimautomatisierungssysteme für Industriemaschinen. Ob Sie mit einem kleinen IoT-Netzwerk zusammenarbeiten eine kontrollierte Umgebung oder Implementierung eines groß angelegten, unternehmenseigenen IoT-Ökosystems, Sicherheit nicht übersehen werden. Auch bei geschlossenen Netzwerk-Implementierungen, bei denen der Zugriff begrenzt ist, besteht die Gefahr, dass interne Angriffe, unbefugter Zugriff auf das Gerät und Datenverstöße existieren noch. Schwache Sicherheit Praktiken in jeder Größenordnung der Bereitstellung können sensible Daten, Kompromisse bei der Geräteintegrität und das gesamte System gefährden. In diesem Leitfaden werden wir IoT-Sicherheitspraktiken erforschen und uns darauf konzentrieren, wie UmsetzungSicherheitsmaßnahmen mit MQTT(Message Queuing Telemetry Transport) mit Beispielen von Paho (Client) und CrystalMQ (Server).


Sicherheitsrisiken verstehen IoT

Der erste Schritt zur Sicherung eines IoT-Ökosystems ist das Verständnis der verschiedenen Sicherheitslücken, einschließlich:

  • Daten Breaches:Sensible Daten übertragen über unverschlüsselte Kanäle.
  • Geräte-Hijacking:Unbefugter Zugriff auf Geräte.
  • Man-in-the-Middle Attacks (MITM):Erfassung und Änderung der Daten.
  • Denial of Service (DoS):Überfluten des Systems mit gefälschten Anträgen auf überwältigende Ressourcen.

Um diese Risiken zu mindern, ist es wichtig, sowohl Client- als auch serverseitige Sicherheitsprotokolle umzusetzen, sowie die Sicherstellung der Datenverschlüsselung und des sicheren Hostings

MQTT und seine Sicherheitsanforderungen

MQTist ein leichtes Protokoll für eine effiziente Kommunikation zwischen IoT-Geräten und einem zentralen Server. Während es ideal für eingeschränkte Geräte ist, kann seine Einfachheit auch zu Sicherheits-Herausforderungen führen. als:

  • Mangel an eingebauter Verschlüsselung
  • Unauthentische Geräteverbindungen
  • Mangel an feinkörniger Zutrittskontrolle

Um diese Probleme zu überwinden, benötigt MQTT zusätzliche Sicherheitsschichten wieSSL/TLS für Verschlüsselung, Geräteauthentifizierung und Access Control Lists (ACLs) für die Autorisierung.

Client-Side Sicherheit: Python MQTT

Verwendung vonPython Kundeals Beispiel sehen wir, wie wir eine sichere Verbindung mit der Server. Hier sind die wichtigsten Sicherheitskonfigurationen:

Schritt 1: Aktivieren der Client-Authentifizierung (Username & Passwort)

Die erste Sicherheitsschicht ist die grundlegende Authentifizierung. Paho bietet einfache Methoden, um dies einzurichten Konfiguration.

Import paho.mqt.client als mqtt

Client = mqtt.Client()

# Benutzername und Passwort für die Authentifizierung festlegen

client.username_pw_set(username="client_user", Passwort="client_password")

# Verbindung zum Broker

client.connect("broker.example.com", 1883, 60)

Client.loop_start()

Schritt 2: Aktivieren von TLS/SSL-Verschlüsselung

Um die Daten im Transit zu schützen, muss TLS/SSL aktiviert werden. Paho unterstützt SSL mit einem einfachen Konfiguration:

Import paho.mqt.client als mqtt

Client = mqtt.Client()

# Pfad zum CA Zertifikat

client.tls_set(ca_certs="/path/to/ca.crt")

# TLS/SSL aktivieren

client.username_pw_set("client_user", "client_password")

client.connect("broker.example.com", 8883, 60)

Client.loop_start()

Schritt 3: Zertifikatsvalidierung

Achten Sie darauf, das Zertifikat des Brokers zu überprüfen, um MITM-Angriffe zu vermeiden. Die Paho-Client unterstützt verschiedene Zertifikatsoptionen, um die Datenintegrität zu gewährleisten.

Paho bietet Optionen für die Zertifikatsvalidierung standardmäßig und kann mittls_set()undtls_insecure_set(). Hier ist ein Beispiel, wo die Kunden die Bescheinigung des Maklers gegen die Bescheinigungsbehörde (CA) validiert und gewährleistet, dass die die Verbindung ist sicher.

Import paho.mqt.client als mqtt

# Erstellen einer neuen MQTT-Client-Instanz

Client = mqtt.Client()

# Benutzername und Passwort für die grundlegende Authentifizierung festlegen

client.username_pw_set(username="client_user", Passwort="client_password")

# Pfad zum CA-Zertifikat zur Validierung des Brokers

ca_cert_path = "/path/to/ca.crt"

# Pfad zum eigenen Zertifikat des Kunden und privaten Schlüssel (optional, für gegenseitige TLS)

client_cert_path = "/path/to/client.crt"

client_key_path = "/path/to/client.key"

# TLS/SSL-Verschlüsselung mit Zertifikatsvalidierung aktivieren

client.tls_set(ca_certs=ca_cert_path,

certfile=client_cert_path,

keyfile=client_key_path,

tls_version=mqtt.ssl.PROTOCOL_TLSv1_2)

# Stellen Sie sicher, dass das Zertifikat validiert wird (verpflichtet, die Validierung durchzusetzen)

client.tls_insecure_set(False)

# Verbinden Sie mit dem Broker auf dem sicheren Port (in der Regel 8883 für MQTT über SSL)

broker_url = "broker.example.com"

Broker_port = 8883

client.connect(broker_url, broker_port)

# Starten Sie die Clientschleife, um Netzwerkereignisse zu bearbeiten

Client.loop_start()

Erläuterung
  • ca_certs=ca_cert_path:Dies ist der Weg zu die CA-Zertifikatdatei. Es erlaubt dem Kunden zu bestätigen, dass das Broker-Zertifikat war von einer vertrauenswürdigen Bescheinigungsbehörde unterzeichnet.
  • certfile und keyfile (Optional):Diese Parameter werden für die gegenseitige TLS (mTLS) verwendet, wo der Client auch ein Zertifikat zur Verfügung stellt. der Broker. Dies ist eine optionale Sicherheitsschicht, die sicherstellt, dass beide Parteien überprüft werden. Wenn Sie keine gegenseitige Authentifizierung benötigen, können Sie diese Zeilen verlassen.
  • tls_insecure_set(False):Dies gewährleistet, dass der Broker Zertifikat wird immer validiert. Indem Sie dies auf False setzen, erzwingen Sie, dass Paho die Überprüfung der Broker-Zertifikat gegen das bereitgestellte CA-Zertifikat. Bei Ausfall der Validierung wird die Verbindung nicht hergestellt.
  • TLS Version:Wir setzen die TLS ausdrücklich fest Version zu PROTOCOL_TLSv1_2, um die Verwendung der neuesten Version von TLS zu gewährleisten (oder neuere Versionen wie TLS 1.3, wenn von Client und Broker unterstützt).

4. Server-Side Security: Kristall MQ MQTT Broker

Der MQTT-Broker steht im Zentrum der IoT-Kommunikation. Sicherung des Brokers sorgt dafür, dass nur authentifizierte Geräte können verbinden und kommunizieren. UnsereMQTT Broker(CrystalMQ) bietet mehrere Sicherheitsschichten zum Schutz die IoT-Infrastruktur.

Schritt 1: Aktivieren von SSL/TLS-Verschlüsselung

CrystalMQ unterstützt SSL/TLS, so dass Sie die Kommunikation verschlüsseln zwischen dem Broker und den IoT-Geräten.

  • Konfigurieren Sie den Broker, um Port 8883 für sichere Kommunikation zu verwenden.
  • Laden Sie das selbstsignierte oder CA-signierte Zertifikat hoch.
  • Ermöglicht Sie ist auf Client-Verbindungen.

Es kommt mit einem selbstsignierten CA-Zertifikat, in der CrystalMQ/Certificate Ordner. Sie können das standardmäßige selbstsignierte Zertifikat verwenden oder es durch Ihr eigenes beschiedenes Zertifikat ersetzen.

Die„TLS/SSL-Verschlüsselung 'Profil in unserem Hilfedokumentation zur Konfiguration von TLS/SSL in unserem Broker.

Schritt 2: Benutzerauthentifizierung

CrystalMQ bietet ein einfach zu konfigurierendes Benutzerauthentifizierungssystem.

Es ermöglicht Ihnen, Authentifizierungsschlüssel und Token (Benutzername und Passwort) über das MQTT Broker Dashboard unter dem Sicherheits-Tab. Dies macht es einfach, die Client-Authentifizierung direkt aus dem Dashboard zu verwalten.

Um einen neuen Benutzer hinzuzufügen oder zu erstellen:
  • Gehen Sie im Dashboard in das Security Tab.
  • Fügen Sie einen neuen Benutzer mit einem Benutzernamen und einem Passwort für die Client-Authentifizierung hinzu.

Die erstellten Schlüssel werden auf dem Paho-Client eingestellt / konfiguriert Benutzername_pw_set() Funktion.

Weitere Details zum Aufbau von Sicherheit finden Sie in unsererHilfe und Hilfe.

Schritt 3: Autorisierung mit Access Control Lists (ACLs)

Die Autorisierung stellt sicher, dass, sobald ein Client authentifiziert ist, es nur erlaubt, bestimmte Handlungen durchzuführen, wie z.B. das Publizieren oder die Anmeldung zu bestimmten Themen.Zutrittskontrolle (ACL)sind ein gemeinsamer Weg diese Berechtigungen in einem MQTT-System verwalten.

In CrystalMQ können Administratoren ACLs entweder individuell konfigurieren Benutzernamen oder verbundene Client-IDs. Dies kann durch den MQTT Broker geschehen Dashboard durch Navigieren zum Sicherheitsmenü.

  • Benutzernamebasierte ACL:Jeder MQTT Benutzername kann bestimmte Berechtigungen zum Veröffentlichen/Abschreiben von Themen zugewiesen werden. Standardmäßig haben neue Benutzer Zugriff zu allen Themen, aber dies kann durch die Bearbeitung der Einstellungen des Benutzers geändert werden.
  • Clientbasierte ACL:Administratoren können festlegen ACLs für bereits verbundene Clients auf Basis ihrer Client-ID.

Beispielsweise kann ein Client nur auf ein bestimmtes Thema publizieren, während er verweigert wird Zugang zu anderen.

5. Datensicherung im Transit und im Rest

Datensicherheit ist für IoT-Systeme von entscheidender Bedeutung, zumal sie oft sensible Informationen zu behandeln, die Schutz erfordern, während sie übertragen werden (in Durchgang) und bei Lagerung (im Ruhezustand). Ein sicheres IoT-Ökosystem sorgt dafür, dass Daten während der sichere Übertragung und Speicherung, unberechtigter Zugriff und minimiert das Risiko von Daten Verstöße.

Daten im Transit

Daten im Transit beziehen sich auf die Daten, die von IoT-Geräten auf einen Server oder von Server auf einen Server übertragen werden Client. Das größte Risiko in dieser Phase ist das Abfangen von Angreifern, auch bekannt als Man-in-the-Middle (MITM) Angriffe. Um solche Angriffe zu verhindern, werden Verschlüsselungsprotokolle wieTLS/SSLsind wesentlich.

Daten bei Rest

Die restlichen Daten beziehen sich auf die auf Servern oder Datenbanken gespeicherten Daten. Geschichte Daten sicher sind kritisch, um unberechtigten Zugriff zu verhindern, insbesondere bei Datenverletzungen oder physischem Zugriff auf Server.

Best Practices zur Datensicherung bei Rest:
  • Verschlüsselte Speicherung: Kristall MQ verwendet eine Hash- und Salzmethode, um Client-Authentifizierungsschlüssel zu speichern. Dies stellt sicher, dass auch wenn Angreifer Zugang zum Speicher erhalten, sie können die Originalschlüssel nicht abrufen. Die Hash-Funktion, kombiniert mit einem einzigartigen Salz für jede Schlüssel, macht es rechnerisch unfehlbar, die gespeicherten Werte umzuschalten, wodurch sensible Authentifizierungsdaten.
  • CrystalMQ ermöglicht die sichere Speicherung von Nachrichtendaten und Sie können den Broker konfigurieren, um Protokolle zu speichern und persistente Nachrichten in verschlüsselten Datenbanken.
  • Schlüsselverwaltung: Sichere Schlüsselverwaltungspraktiken sollten vor Ort zum Schutz Verschlüsselungsschlüssel. Stellen Sie sicher, dass die Tasten periodisch gedreht werden und sicher über Hardware-Sicherheitsmodule (HSMs) oder sichere Schlüsselgewölbe gespeichert.
  • Zugriffskontrolle und Authentifizierung:Wir sind auf der Suche IoT-Plattformeinen begrenzten Zugriff auf die Datenspeicherung mittels Multi-Faktor Authentisierung (MFA) und Rollenbasierte Zugriffskontrolle (RBAC). Dies stellt sicher, dass nur berechtigtes Personal oder Dienste können auf die gespeicherten Daten zugreifen.
  • Datenschutzrichtlinien: UnsereCloud Hosted MQTT Brokerhat klare Datenschutzrichtlinien, um die Speicherung unnötiger Daten zu minimieren. Löschen von alten oder redundanten Daten reduziert die Risikooberfläche für Angreifer und sorgt für Compliance mit Datenschutzgesetzen wieDSGVOoder CCPA. Diese Politik kann auch bei der Verwaltung der Datenbank auf eigene Faust in einem lokalen Umfeld praktiziert werden.

6. Hosting Umweltsicherheit

Die Sicherheit der Hosting-Umgebung spielt eine wichtige Rolle in der Gesamtschutz eines IoT-Ökosystems. Ob CrystalMQ eingesetzt wird On-Premis oder Verwendung einer Cloud-basierte Infrastruktur, sicherzustellen, dass die Hosting-Umgebung sicher ist, ist grundlegend für die Aufrechterhaltung der Integrität und Verfügbarkeit des Systems.

On-Premise Hosting

Für Unternehmen, die ihre IoT-Infrastruktur lieber vor Ort halten, Hosting Security beinhaltet das physische und Netzwerk Sicherheit des lokalen Rechenzentrums oder Serverraums.

Schlüsselüberlegungen für On-Premise Hosting:
  • Netzwerksegmentierung:Segregation von IoT Netzwerk aus Ihrem Unternehmensnetzwerk mit Virtual LANs (VLANs) oder softwaredefinierten Netzwerken (SDN). Dies minimiert die Chancen eines Angreifers, IoT-Geräte durch das Unternehmen zu erreichen Netzwerk.
  • Firewalls und Intrusion Detection Systems (IDS):Bereitstellung von Firewalls, um unbefugten Verkehr und IDS zu blockieren, um schädlich zu überwachen und zu erkennen Aktivitäten in Echtzeit.
  • Regulärer Patch:Stellen Sie sicher, dass Sie Server, Broker-Software und Betriebssysteme werden regelmäßig mit den neuesten Sicherheits-Patches aktualisiert. Schwachstellen in veralteter Software können leicht von Angreifern ausgenutzt werden.

Cloudbasiertes Hosting

Cloud-basierte Bereitstellungen bieten Skalierbarkeit und Flexibilität, aber die Cloud Umwelt muss sicher konfiguriert werden, um zu vermeiden, dass das IoT-System Bedrohungen ausgesetzt wird.

Schlüsselüberlegungen für Cloud-basierte Hosting:
  • Secure Cloud Provider:Wählen einer Cloud Anbieter, der starke Sicherheitsfunktionen wie Amazon Web Services (AWS), Microsoft bietet Azure, Digital Ocean etc. Diese Anbieter bieten integrierte Firewalls, DDoS-Schutz und Verschlüsselungsdienste.
  • Isolierte virtuelle Maschinen (VMs) oder Container:Isolierte VMs oder befüllte Umgebungen (z.B. Docker), um dieMQTT Broker. Dies isoliert den Broker von anderen Dienstleistungen, um sicherzustellen, dass eine Sicherheitsverletzung in einem Behälter beeinflusst nicht das gesamte System.
  • Verschlüsselung von Daten in der Cloud:Sicherheit alle in der Cloud gespeicherten Daten werden im Ruhezustand über Cloud-native Verschlüsselungsdienste verschlüsselt. Für Beispiel: AWS bietet AWS Key Management Service (KMS) für sichere Schlüsselverwaltung.
  • Netzwerk-Sicherheitsgruppen (NSG) und VPNs:Konfigurieren von NSGs oder Virtual Private Networks (VPNs), um den Zugriff auf den Broker und das IoT einzuschränken Plattform, um sicherzustellen, dass nur vertrauenswürdige Geräte und Dienste verbinden können.
  • Das Leben und das Leben Ausstrahlung:Durchführung regelmäßige Backups von Brokerkonfigurationen und Daten. Im Falle eines Katastrophen- oder Datenbruchs, Sie haben einen Wiederherstellungsplan an Ort und Stelle, um Ausfallzeiten zu minimieren.

Einhaltung der IoT-Sicherheitsstandards

Sowohl On-Premise- als auch Cloud-Umgebungen entsprechen der IoT-Sicherheit Normen wie:

  • DSGVO(Datenschutzgrundverordnung): Gewährleistung der Datenschutz für IoT-Systeme in der EU.

So können Sie ein robustes und sicheres IoT-Ökosystem aufbauen. Beginnen mitMQTT-SicherheitProtokolle sowohl auf Client- als auch auf Serverseiten, gekoppelt mit einer sicheren Datenverarbeitung und Sie können viele der gemeinsamen Sicherheitsrisiken in IoT-Umgebungen mildern.

Mit CrystalMQ Broker als MQTT-Server können Sie hochmoderne IoT-Sicherheitspraktiken implementieren um Daten und Geräte zu schützen und eine sicherere, sicherere IoT-Infrastruktur zu gewährleisten.