Welche einfachen Sicherheitstests kann ich in meinem MQTT-Netzwerk durchführen?

13

Ich bin dabei, ein MQTT-Netzwerk zu Hause einzurichten. Ich möchte durch praktische Übungen etwas Wissen aufbauen. Es wäre ein kleines Netzwerk mit dem Broker auf meinem Laptop (Windows 7) und einem Raspberry Pi-Client. Außerdem denke ich darüber nach, einen Client auf meinem Telefon (Android) zu erstellen.

Mein Ziel ist ein einfaches Netzwerk, in dem ich experimentieren kann, und ich möchte zunächst einige Sicherheitstests durchführen und experimentieren.

Ich habe eine MQTT Server Test Suite gefunden, die als böswilliger MQTT-Client fungieren soll. Am Anfang ist es ziemlich vielversprechend.

Allgemeine Funktionen des Testtools

  • Vollautomatische Black-Box-Negativprüfung
  • Fertige Testfälle
  • Geschrieben in Java (tm)
  • GUI, Kommandozeile, Remote Interface Modi
  • Instrumentierungsfähigkeit (Health-Check)
  • Support und Wartung
  • Umfassende Benutzerdokumentation
  • Ergebnisberichterstattung und -analyse

Ich interessiere mich aber auch für einige einfachere Methoden, mit denen ich MQTT-Sicherheitsfunktionen überprüfen kann. Was sind die einfachsten Möglichkeiten für Anfänger, grundlegende Sicherheitsüberprüfungen in einem MQTT-Netzwerk durchzuführen?

Bence Kaulics
quelle

Antworten:

12

Einige Ideen - Ich habe nicht alle Kombinationen mit / ohne Benutzername / TLS behandelt, hoffentlich können Sie sehen, wo sie fehlen.

Kann sich ein Client anonym verbinden, kein TLS?

mosquitto_sub -t test/topic -h <broker address>

Kann ein Client eine Verbindung herstellen, wenn er einen Benutzernamen, aber kein Kennwort und kein TLS bereitstellt?

mosquitto_sub -t test/topic -u <username> -h <broker address>

Kann ein Client eine Verbindung herstellen, wenn er einen Benutzernamen und ein Passwort (korrekt oder nicht), kein TLS bereitstellt?

mosquitto_sub -t test/topic -u <username> -P <password> -h <broker address>

Kann ein Kunde das $SYSThema abonnieren und Informationen über den Broker anzeigen?

mosquitto_sub -t '$SYS/#' -v -h <broker address>

Kann ein Client über TLS eine Verbindung herstellen?

mosquitto_sub -t test/topic -h <broker address> -p 8883 --capath /etc/ssl/certs

Kann ein Kunde alle Themen abonnieren? Was sieht es?

mosquitto_sub -t '#' -v

Wiederholen Sie diese Schritte auch beim Veröffentlichen.

ralight
quelle
5

Vielleicht das Offensichtliche, aber ich denke, es ist wichtig zu betonen, dass ein Anfänger nicht damit rechnen kann, ein sicheres Netzwerk aufzubauen. Nichts falsch mit dem Lernen.

Es sieht so aus, als ob die primäre Sicherheit in MQTT auf der Transportebene implementiert ist, sodass Sie sich auf echte Sicherheit konzentrieren sollten.

Es würde mich überraschen, wenn eine automatisierte Testsuite die Fähigkeit eines Experten reproduzieren könnte, Lücken in Ihrer Protokollimplementierung zu finden.

Sean Houlihane
quelle
4
Ich erwarte kein vollständig sicheres Netzwerk. Ich möchte nur Hygienekontrollen durchführen, also sehr grundlegende Tests, um festzustellen, dass ich etwas anfangen kann.
Bence Kaulics