Xiaomi Aqara Gateway V3 das Nachhausetelefonieren verbieten
Wer Smart Home Gadgets aus Fernost (z.B. Xiaomi Aqara) einsetzt, die lediglich für eine Verwendung im beispielsweise chinesischen Ausland bestimmt sind, kennt sicher das ungute Gefühl: die Geräte senden (möglicherweise) Daten in ihre Heimat. Daten über dein zu Hause! Mit einfachen Firewall-Einstellung lässt sich diese unerwünschte Kommunikation ganz schnell unterbinden.
Überblick
Wer sein eigenes Smart Home selbst hostet, der ist gut beraten, sich über eine ordentliche Absicherung des lokalen Netzwerks Gedanken zu machen. Sicherlich reicht dem Otto-Normalverbraucher im ersten Moment die Standardeinstellung der FRITZ!Box*, wer jedoch etwas tiefer in die Materie einsteigen will, kommt um Lösungen wie pfSense oder IPfire kaum herum.
Ich benutzte als IPS (Intrusion Prevention System) / Firewall eine Watchguard XTM5 Appliance mit pfSense OS. Damit ist so ziemlich alles möglich, was man sich als Privatanwender wünschen kann. In einem anderen Artikel werde ich noch einmal genauer auf mein aktuelles Setup eingehen.
Die folgende Anleitung gilt in ihren Grundzügen aber genau so für andere Router von anderen Herstellern. Lediglich eine Firewall-Funktion (oft nicht ganz korrekt unter dem Themenpunkt Port Forwarding zu finden) muss verfügbar sein.
An dieser Stelle soll es darum gehen, wie wir dem Xiaomi Aqara Smart Home Gateway* das ständige Versenden von Daten an den chinesischen Mutterserver verbieten können.
Das Gateway baut diese Verbindung auf, um die aktuellen Sensordaten an die Aqara IoT Cloud übertragen zu können, sodass der Anwender über die Xiaomi Mi Home App darauf zugreifen kann. Das ist prinzipiell auch nicht verkehrt, denn die Aqara Lösung sieht vor, dass die Sensoren und andere Xiaomi Smart Home Produkte über die App miteinander in Verbindung gebracht und ausgelesen werden (nicht jeder hat ein Smart Home Hub zu Hause gehostet).
Da unser Ziel jedoch ein lokales Sensornetzwerk ist, d.h. bis auf unser Home Assistant Hub kein weiterer Dienst Sensordaten aus unserem Smart Home ins Internet versenden soll, muss diese Verbindung gekappt werden. Die Xiaomi Aqara Komponenten funktionieren im Übrigen auch ohne Internetverbindung und kommunizieren dann ausschließlich lokal mit dem Home Assistant Server.
Hinweis: Das Aqara Hub fängt periodisch an zu blau Blinken, wenn ihm die Internetverbindung fehlt. Das dauert aber meist nur wenige Sekunden und scheint auch nur ab und an vorzukommen. Eine andere „Einschränkung“ habe ich noch nicht beobachten könnten.
Schritt für Schritt zum lokalen Aqara Smart Home Gateway
Schritt 1: Eine fixe IP zuordnen
Zunächst ordnen wir dem Gateway eine fixe IP-Adresse zu. Da ich keine Möglichkeit gefunden habe, dieses über die App bzw. das Gateway an sich zu tun, habe ich dem Gerät in pfSense einen statischen ARP-Eintrag zugewiesen. Da meine IPS mit pfSense auch als DHCP-Server fungiert, wird dem Gateway so immer eine identische IP zugewiesen.
Das ist im Übrigen der schönere Weg, da so alle statischen IP-Einstellungen an einer zentralen Stelle verwaltet werden können und ihr nicht jedes Gerät separat konfigurieren müsst. Zusätzlich hat es den riesigen Vorteil, dass man ein betroffenes Endgerät dank aktiviertem DHCP schnell mal in ein Testnetzwerk einbinden kann, ohne dass zuerst ggf. die statische IP-Konfiguration aufwändig verändert werden muss. Das hat mir schon viel Zeit gespart.
Das statische Mapping lässt sich ganz einfach einrichten. Navigiert dazu in der pfSense auf Status -> DHCP Leases -> identifiziert das Gateway (Hostname lumi-gateway-v3_miioXXXXX) und klickt ganz rechts auf das helle Plus-Symbol.
Im darauffolgenden Dialog muss der Eintrag entsprechend angelegt werden. Hier teilt ihr dem DHCP-Server mit, dass die MAC-Adresse des Aqara Smart Home Gateway V3 immer einer bestimmten IP zugeordnet werden soll. Die MAC-Adresse übernimmt pfSense selbständig aus der Geräteübersicht.
Ihr müsst hier nur Folgendes ausfüllen:
- Client Identifiert: Name des Gerätes
- IP-Adresse: Die gewünschte IP, die in Zukunft zugeordnet wird -> Darauf achten, dass die IP außerhalb des Bereiches des DHCP-Servers liegt
- Hostname: Wird übernommen
- Description: Wer will, kann hier eine Beschreibung hinterlegen.
Hinweis: Nicht alle Router, die für den Heimgebrauch bestimmt sind erlauben das Anlegen statischer ARP-Einträge. Sollte euer Gerät dieses nicht können, könnt ihr euch entweder entscheiden mit dem dynamischen DHCP-Setup zu leben oder ihr konfiguriert das Gerät separat. Im Fall des Aqara Hubs habe ich eine solche Einstellung aber nicht gefunden.
Schritt 2: Firewallregel erstellen
Im zweiten Schritt erstellen wir die entsprechende Firewallregel, die den ausgehenden Verkehr des Aqara Gateways* blockiert. Dazu wechseln wir in pfSense zu Firewall -> Rules -> LAN. Mit einem Klick auf „Add“ legen wir eine neue Regel am Ende der Liste an.
Die folgenden Parameter werden in diesem Dialog gesetzt:
- Action: Block oder Reject (wir wollen ja den ausgehenden Verkehr blockieren, siehe unten)
- Interface: LAN (Euer lokales Interface kann anders benannt sein!)
- Address Family: IPV4
- Protocol: Any
- Source: Single host or alias -> IP-Adresse des Aqara Gateway V3*
- Destination: any
- Description: XIAOMI Block (oder was immer ihr möchtet)
Anschließend speichern und pfSense die Regeln neu laden lassen. Fertig.
Schritt 3: Wirksamkeit der Firewallregel prüfen
Im letzten Schritt sollte die Wirksamkeit der Regel geprüft werden. Dazu am besten eine Stunde warten und danach noch einmal unter Firewall -> Rules -> LAN nachsehen.
Hier ist nun auch unsere „XIAOMI* Block“ Regel zu sehen. Innerhalb einer Stunde sollte das Gateway bereits einige Male versucht haben, nach Hause zu telefonieren. In der Spalte „States“ ist zu erkennen, dass die Regel ausgehende Pakete blockiert hat, die den gesetzten Spezifikationen entsprechen. Technisch etwas schicker kann es sein, die Regel statt als „Block“ lieber als „Reject“ anzulegen.
Der Unterschied lässt sich folgendermaßen beschreiben: Bei einer Block-Regel verwirft die Firewall die betroffenen Pakete einfach ohne das Quellgerät (Aqara Gateway*) darüber zu informieren. Das Gateway hört dann einfach nie wieder etwas von seiner Anfrage. Bei einer Reject-Regel wird das Endgerät hingegen von der Firewall über das Abweisen der Pakete informiert. Bei einigen Geräten funktioniert Reject besser, weil es mit einem harten Block Probleme geben kann. Beim Aqara Gateway habe ich aber mit der Block-Regel nie ein Problem festgestellt.
Dies bedeutet, dass das Aqara Gateway ab sofort nur noch Pakete im lokalen Netzwerk versenden kann. Unser Ziel ist damit erreicht! 🙂
Aqara Gateway aktualisieren
Dann und wann kommt aus dem Hause Xiaomi auch immer mal wieder ein Software-Update für das Gateway heraus. Das bekommt ihr natürlich im Normalfall gar nicht mit, weil das Gateway durch die fehlenden Internetverbindung keine Verbindung zur App aufbauen kann und sich somit auch keine Prüfung auf eine neue Version durchführen lässt.
Wollt ihr das Gateway also über die App auf den neusten Stand aktualisieren (der einzig mir bekannte Weg), müsst ihr daran denken, die Firewallregel für einen Augenblick zu deaktivieren. Ansonsten kann das Aqara Gateway* logischerweise keine Firmware herunterladen (bzw. die Anfrage dazu versenden).
Nach dem Update kann die Regel dann direkt wieder aktiviert werden. Alle Einstellungen und Verbindungen zu den Sensoren bleiben meiner Erfahrung nach erhalten. Ihr müsst euch nur bewusst darüber sein, dass für den Zeitraum der Aktualisierung wieder nach Hause telefoniert wird. Das betrifft natürlich für einen kleinen zeitlichen Ausschnitt auch die Sensordaten aus eurem zu Hause.
Noch mehr Abschottung mit VLANs
In diesem Moment haben wir bereits erreicht, dass keine Verbindung mehr zwischen Gateway und der Außenwelt besteht. Trotzdem sind alle IoT-Geräte in der Regel in dasselbe Netzwerk eingebunden, wie andere Computer, Konsole, Smartphones und Co. Potenziell kann das Aqara Gateway* also sämtlichen unverschlüsselten Traffic im lokalen Netzwerk auslesen und ist somit bei einer Sicherheitslücke ein potenzielles Einfallstor.
Es hat sich daher als generell gute Praxis erwiesen, alle Smart Home Geräte in ein eigenes VLAN auszulagern. VLAN steht für Virtual Local Area Network und kann dazu genutzt werden, zwei vollständig getrennte Netzwerke aufzubauen, auch wenn physikalisch nur ein Netzwerkkabel zur Verfügung steht.
Das ganze funktioniert so, dass jedem Paket ein sogenannter VLAN-Tag angehangen wird und die Pakete von VLAN-fähigen Switches nur an die Endgerät (Ports) geroutet werden, die Teilnehmer eines VLANs sind.
Naturgemäßg besteht zwischen verschiedenen VLANs somit keine Verbindung. Das ist natürlich potenziell schlecht, denn irgendwie soll ja letztendlich doch eine Verbindung zwischen Smart Home im einen und dem Smartphone im anderen VLAN zustande kommen.
Um das zu ermöglichen kommt ein Router zum Einsatz. Ich habe meine VLAN-Setup im Büro ebenfalls mit pfSense gelöst. Gleichzeitig stellt pfSense auch die DHCP-Server für jedes VLAN bereit. In jedem VLAN gibt es nämlich einen eigenen IP-Adressenkreis.
In der aktuellen Konfiguration sind alle Smart Home Geräte inklusive Media-Receiver in einem eignen VLAN zusammengefasst. Für WLAN-Gerät, wie das Aqara Gateway, habe ich dafür eine eigene SSID erstellt, die nur Zugriff auf das IoT-VLAN hat. Das geht mit dem Ubiquiti AP AC Pro Access Point* ganz einfach und mit Bordmitteln.
Warum erzähle ich das alles in Bezug auf das Aqara Gateway? Während meiner diversen Versuche habe ich herausgefunden, dass für eine schlanke Konfiguration, Home Assistant und Aquara Gateway im gleichen VLAN hängen sollten. Das ganze liegt an dem Protokoll (oder besser gesagt Protokollen), die Xiaomi beim Gateway zur Aktualisierung der Sensorinformationen einsetzt.
Während der reine Zugriff auf das Gateway von Home Assistant aus via Unicast möglich ist, wird bei der Änderung eines Sensorstatus (z.B. Türsensor von „offen“ zu „geschlossen“) kein Unicast Push an Home Assistant gesendet. Stattdessen schickt das Gateway Pakete per Multicast in alle Richtungen. Diesen Multicast-Traffic vernünftig zu Routen ist ohne genaueres Wissen über die exakten Ports etc. nicht zuverlässig möglich. Daher habe ich mich schlussendlich entschieden, Gateway und Home Assistant einfach beide in dasselbe VLAN zu hängen. Das Aqara Gateway hat weiterhin nur Zugriff auf das lokale Netz, Home Assistant darf auf bestimmten Ports natürlich mit den anderen lokalen VLANs und dem Internet kommunizieren.
Schlusswort
Dem Aqara Gateway den ständigen Datenaustausch mit dem chinesischen Heimtserver zu verbieten ist in meinen Augen aus Datenschutzsicht sinnvoll. Ich hoffe, der Artikel hat gezeigt, dass sich dieses Ziel mit nur wenigen Einstellungen erreichen lässt. Mit andern Routern mögen gar nicht weniger Klicks nötig sein.
Fragen oder Anmerkungen? Gerne einen Kommentar hinterlassen!
Danke für die sehr hilfreichen Tipps!
Alternativ können die Einstellungen auch in der Fritz-Box vorgenommen werden:
Feste IP kann eingestellt werden
Ausserdem kann einem Gerät die IP Kommunikation entzogen werden. Das ist tatsächlich nicht ganz eindeutig – bedeutet hier aber nur den Verkehr in die weite Welt (nach China).
In der Xiaomi App ist dann das Gateway auch nicht mehr auffindbar. Man muss also, wenn man neue Devices zum Gateway hinzufügen will, das Tor wieder öffnen…
Die Verbindung zu Apple HOME funktioniert dann aber lokal nach wie vor.
Also – alles gut!!
Hallo Matthias,
danke für deine Ergänzung. In der Fritz!Box funktioniert das natürlich auch, so wie von dir beschrieben. Das hilft sicher dem einen oder anderen Nutzer weiter!
Genau, für Updates des Gateways muss dann die Firewall Regel temporär deaktiviert werden. Da das Gateway aber keine Daten der Sensoren lokal zu puffern scheint, werden in dieser Zeit nur die Daten an den Xiaomi-Server übertragen, die während der Update-Periode gemessen werden.
Viele Grüße,
Nils
Mh, ich habe den Gateway in mein Gastnetzwerk verbannt. Bei diesem sind keine Internet Verbinungen erlaubt (leere Whitelist). Über die home app ist aber das abrufen der Sensordaten nicht möglich. Was muss ich ändern?
Hallo Axel,
ich weiß nicht ganz genau, was du mit Gastnetzwerk meinst, kann dir aber sagen, was das Problem ist. Ich bin selbst darauf gestoßen, als ich das Gateway in ein eigenes VLAN mit beschränktem Netzwerkzugriff gesteckt habe. Das Gateway benötigt nämlich sowohl eine Unicast-Verbindung zum Home Assistant (HASS) für die Befehle von HASS an das Gateway.
Die Updates der Sensoren von dem Gateway an HASS werden jedoch periodisch per Multicast Broadcast in das Netzwerk geschickt. Und genau hier liegt der Knackpunkt: Denn Multicast Broadcasts werden natürlich nur innerhalb desselben Netzwerks publiziert und arbeiten nicht netzwerk-/VLAN-übergreifend. Dazu müsste dein Router diese Anfragen (mDNS) gezielt zwischen beiden Netzwerken vermitteln.
Leider findet man im Netz wenig bis gar keine Infos, welche Ports das Gateway wirklich benötigt.
Mir war die genaue Analyse letztendlich zu aufwendig und ich habe einfach die VM mit Home Assistant in dasselbe VLAN gesteckt, wie das Gateway. Ich hoffe, das hilft dir um zu verstehen, wo dein Problem liegt.
Viele Grüße,
Nils
Hi Nils,
dank für deinen Kommentar. Ich glaube ich muss es etwas ausführlicher erläutern:
Ich habe ein seperates Netzwerk, nur für die Xiaomi Mijia Geräte. In diesem Netzwerk dürfen die Komponenten miteinander kommunizieren, aber sie kommen alle nicht in das Internet.
Solange das so ist, kann ich nicht auf die gemessenen Daten der Sensoren oder auf den Gateway selbst zugreifen.
Erst wenn ich den Internetzugriff zulasse kann ich ohne Probleme auf alle DAten und Informtionen sowie Steuerungsmöglichkeiten zugreifen.
Das gefällt mir so nicht, denn wer öffnet schon gerne den Wasserfall, wenn er nur einen Schluck Wasser möchte….sprich wenn ich wüsste welche Webseite oder welchen Port ich zulassen müsste, damit alles funktioniert, wäre das super.
Über Wireshark habe ich nur einen IP Adresse gefunden, auf die der Gateway ständig zugreift. Allerdings gelingt es mit mit der Fritzbox nicht, diese freizugeben (z.B. Whitelist: 50.70.60.24).
Somit suche ich gerade noch nach eine adäquaten Lösung.
vg Axel
Hallo Axel,
jetzt verstehe ich etwas genauer, was du meinst. Du hast also gar kein Home Assistant laufen, sondern nur mehrere Xiaomi-Geräte, verstanden. Was nutzt du denn zur Steuerung der Geräte? Etwa die Mi Home App? Dann brauchst du zwingend Internet-Zugang für das Gateway. Denn die Mi Home App kommuniziert nur mit einem Xiaomi Server, der wiederum die Daten vom Gateway abfragt. Eine direkte Verbindung zwischen App und Gateway gibt es nicht. Leider.
Eine konkrete IP-Adresse freizugeben wird wenig Sinn machen. Diese kann theoretisch auch dynamisch vergeben sein (auf Seite des Xiaomi-Servers) und schon würdest du mit einer einfache Whitelist bei IP-Wechsel des Xiaomi-Servers dein Gateway nicht mehr ansprechen können. Interessant ist hier aus meiner Sicht vor allem die Einschränkung der Ports, die das Gateway zur Kommunikation nach außen benutzt. Internet wird aber ohnehin sein müssen. Da die Verbindung von einem Gerät aus deinem Netzwerk in das Internet initiiert wird, ist die Beschränkung auf bestimmte ausgehende Ports dann auch fast schon egal.
Mir ging es in meinem Artikel darum, dem Gateway das Nach-Hause-Telefonieren vollständig zu verbieten. Ich fürchte das wird in einem Setup aber nicht funktionieren, wenn ich dich richtig verstanden habe.
Viele Grüße,
Nils
Hallo Nils,
Du hast die Situation richtig erfasst 🙂 Daher ist dein Ergebnis gleich mein Problem, aber vermutlich absolut korrekt.
Womit könnte ich die Steuerung des Gateways und der Sensoren denn ansonsten druchführen? Am besten auf einem Synology NAS, sodass ich keinen extra Raspery brauche? Hast du da einen Tipp?
vg und vielen Dank
Axel
Hallo Axel,
das geht sehr gut mit Home Assistant. Das läuft in einem Docker Container auch auf einem Synology NAS (je nach Modell und Arbeitsspeicher).
Lies dich dazu mal hier ein:
Allgemein: https://www.home-assistant.io
Docker auf Synology: https://www.home-assistant.io/docs/installation/docker/#synology-nas
Aquara Gateway: https://www.home-assistant.io/integrations/xiaomi_aqara/
Home Assistant ist extrem mächtig, man muss sich aber ein wenig damit beschäftigen wollen, damit etwas Gutes dabei herauskommt. 🙂
Viele Grüße und viel Erfolg,
Nils
Danke Nils, bei Gelegenheit probiere ich es mal aus.
Hallo Nils,
vielen Dank für den tollen Artikel. Ich habe ein ähnliches Setup und sehe in den pfSense Firewall-Logs, dass die Filterregel greift. Mich wundert aber das ich mit meiner Xiaomi Home App immer noch meinen Roborock steuern kann. Hast du eine Idee wieso das sein kann?
Viele Grüße,
Martin
Hallo Martin,
vielen Dank für dein Feedback! 🙂
Zu deiner Frage: Das liegt daran, dass der Roborock nichts direkt mit dem Gateway zu tun hat. Der Roboter baut selbst eine Verbindung zu den Xiaomi-Servern auf und ist daher so lange erreichbar, wie du ihm nicht explizit den Zugriff separat um Internet wegnimmst. Ich habe selbst einen S6 und diesen ebenfalls in Home Assistant integriert. Wirklich sinnvoll lässt sich das Gerät aber nur mit der Xiaomi App nutzen. Daher habe ich den Roboter in einem eigenen IoT-VLAN isoliert und lasse es weiterhin nach China sprechen. Nur so sind alle Funktionen, wie die Fernsteuerung und Raumauswahl verfügbar. Leider.
Viele Grüße und schöne Feiertage,
Nils