Linux: Mosquitto MQTT Broker installieren, einrichten und härten

Hinweis: Wir haben in diesem Artikel möglicherweise Provisions-Links verwendet und sie durch (*) gekennzeichnet. Erfolgt über diese Links eine Bestellung, erhält maffert.net eine Provision. Es entstehen für Sie keine Nachteile beim Kauf oder Preis.

Hier zeige ich euch wie ihr einen MQTT Broker installiert, einrichtet und absichert bzw. härtet.

Was ist ein MQTT Broker überhaupt?

Der MQTT Broker ist ein Server, mit dem die Clients kommunizieren. Der Broker empfängt Daten und stellt diese anderen Clients zu Verfügung.  Die Clients kommunizieren nicht direkt miteinander, sondern immer über den Broker. Die Daten werden über TOPICS bereitgestellt und können dort veröffentlicht (published) und abonniert (subscribed) werden.

Ein paar Basis Informationen:
– Welcher Port wird genutzt? 1883 (TCP)

MQTT Broker installieren:

Pakete installieren:
apt-get install mosquitto
Prüfen ob Mosquitto läuft:
systemctl status mosquitto
In dem Zustand kann der Broker schon genutzt werden. Möchte man schauen ob auch Daten am Broker ankommen, kann man das z.B. wie folgt machen:
apt-get install mosquitto-clients
mosquitto_sub -v -p 1883 -t '#'

Absichern des MQTT Brokers:

Damit der Broker nicht von jedem einfach so genutzt werden kann, kann man wie folgt Benutzer mit Passwörtern erstellen:
Wenn man noch keine Benutzer erstellt hat, dann:
mosquitto_passwd -c /etc/mosquitto/mqttpasswd root

Hat man schon ein Benutzer erstellt, muss das -c (das erstellen einer neuen Datei) entfernt werden, also so:
mosquitto_passwd /etc/mosquitto/mqttpasswd tasmota1
Damit nicht jeder Benutzer alles machen kann, sollte man die Benutzer auch einschränken:
nano /etc/mosquitto/user.acl

# Der Benutzer root darf alles machen
user root
topic read #
topic write #

# Tasmota1 darf nur hier lesen und schreiben
user tasmota1
topic readwrite tele/tasmota1/#

user tasmota2
topic readwrite stat/tasmota_2A3XXX/#
topic readwrite cmnd/tasmota_2A3XXX/#
topic readwrite tele/tasmota_2A3XXX/#

# This affects all clients.
pattern write $SYS/broker/connection/%c/state
MQTT weiter einschränken und absichern:
nano /etc/mosquitto/conf.d/secure.conf

# Dürfen Benutzer ohne Authentifizierung den MQTT Broker nutzen? - true = ja, false = nein
allow_anonymous false

# Der Pfad zur Benutzer und Passwort Datei
password_file /etc/mosquitto/mqttpasswd

# Der Pfad zur Berechtigungsdatei
acl_file /etc/mosquitto/user.acl
Den MQTT Broker neu starten und schauen ob er danach auch noch läuft:
systemctl restart mosquitto
systemctl status mosquitto
Um jetzt zu prüfen, welche Daten auf dem Broker ankommen, muss man sich authentifizieren:
mosquitto_sub -v -p 1883 -t '#' -u "root" -P "dasPasswort"

Sonstiges:

MQTT Benutzer wieder löschen:
mosquitto_passwd -D /etc/mosquitto/mqttpasswd tasmota1

Ein Topic abonnieren:
mosquitto_sub -h localhost -t testtopic

Eine Test Nachricht an den Broker und dem Topic "testtopic" senden:
mosquitto_pub -h localhost -t testtopic -m "Das ist ein Test an den MQTT Broker" -u "root" -P "dasPasswort"

Gute Informationsquelle:
https://de.wikibooks.org/wiki/MQTT-Broker_einrichten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert