MQTT2_SERVER absichern/härten

Begonnen von spi3845, 21 Juni 2022, 16:31:52

Vorheriges Thema - Nächstes Thema

spi3845

Hallo zusammen,

bisher betreibe ich einige MQTT-Geräte am fhem MQTT2_SERVER, die alle selbst gebaut wurden und gemeinsam mit fhem in einem separierten, abgesicherten Netz stehen. Authentifizierung und TLS-Transportverschlüsselung nutze ich daher aus Verfügbarkeitsgründen nicht, sehr wohl aber, wenn es um Zugriffe auf andere meiner Systeme aus anderen Netzen geht.

Hier geht es mir um Überlegungen darum, wie ich den MQTT2-Server und damit fhem vor Manipulationen schützen kann durch Geräte, die ich entweder nicht genau kenne oder die in teilweise öffentlichen  Bereichen stehen. Authentifizierung und Transportverschlüsselung, vielleicht gar Client-Zertifikat-Authentisierung helfen in dem einen oder anderen Fall, sie helfen aber erst einmal nicht, wenn sich jemand Zugang zu einem MQTT-Device verschaffen und dann mit dem MQTT2-Server sprechen kann. Hier wäre es hilfreich, den MQTT2-Server selbst abzusichern, z. B. per allowed.

Was mir hier vorschwebt ist, dass ich für bestimmte MQTT-Devices im MQTT2-Server bestimmte Regeln vorgeben kann, z. B. welche topics das entsprechende Gerät posten oder abonnieren kann. Die Unterscheidung nach Geräten kann dann über Username, CID oder IP-Adresse etc. erfolgen, je nachdem, welches Kriterium in dem entsprechenden Fall geeignet ist.

Ich habe verstanden, dass ich allowed für die MQTT2-Server Instanz anlegen kann - das nutze ich bereits für FHEMWEB, um Zugang für bestimmte Geräte einzuschränken, z. B. dass sie nur ihren eigenen Kontext ändern (allowedDevicesRegexp) oder nur bestimmte Aktionen durchführen können (allowedCommands).

Im Falle von MQTT will ich aber nicht eine separate MQTT2-Server-Instanz aufsetzen, sondern mit einer Instanz serverseitig arbeiten und je MQTT-Device filtern bzw. vorgeben, was dieses Gerät darf (Autorisierung). Vielleicht ließe sich allowed an die Client-Instanzen (mqtt_broker_IP_port) binden, aber diese werden dynamisch erzeugt und eignen sich wohl nicht. Man könnte es auch an die MQTT2-Server-Instanz binden, aber dann bräuchte man irgendeine Art der Zuordnung zu dem jeweiligen Gerät, z. B. (device_IP|device_Name):allow(device-123/.*/command.(on|off)).

Ist so etwas bereits jetzt mit fhem möglich und ich habe es bisher einfach nur nicht gefunden?

Viele Grüße,
spi

spi3845

sorry, aus Versehen doppelt gepostet. Ich schließe diesen Post, der andere ist hier: https://forum.fhem.de/index.php/topic,128124.msg1225638.html#msg1225638