Veröffentlicht am: 28. Juli 2023
Letzte Aktualisierung: 11. Oktober 2023

Sichere Verbindungen zu IoT-Geräten - ohne VPN!

Dieser Artikel ist Teil der Serie:

Secure Tunnels

Sie finden das alles sehr kompliziert? Wir auch! Dennoch: Melden Sie sich einfach, wir helfen gerne.

Weitere Artikel folgen in Kürze. Schauen Sie doch in den nächsten Tagen nochmal vorbei!

Aus verschiedenen Gründen kann es notwendig sein, sich mit Geräten innerhalb einer Anlage zu verbinden. Häufig hat man aber keinen direkten Zugriff auf die Netzwerkinfrastruktur und kann somit kein VPN einrichten. Eine sichere Verbindung ist dennoch möglich, mithilfe von sogenannten Secure Tunnels.

A circuit bread board showing with a display showing the current weather conditions on blue background

Over-the-Air-Updates sind heute ein Must-Have-Feature für IoT-Geräte

Unser Anwendungsfall - Roboterprogramme updaten

Im Rahmen unseres Projekts MyAppCafé stehen wir vor mehreren technischen Herausforderungen. Hierbei übernimmt ein spezialisierter Industrieroboter das Handling, indem er die Kaffeebecher zu den verschiedenen Stationen wie Kaffeemaschine, Eismaschine, Lebensmitteldrucker und Getränkeausgabe bringt. Als verantwortliches Team sind wir sowohl für die Roboterprogramme als auch für die Entwicklung der umfassenden Software und Cloud-Infrastruktur zuständig.

Im Rahmen der kontinuierlichen Produktverbesserung haben wir festgestellt, dass wir die Roboterprogramme an verschiedenen Stellen optimieren können. Insbesondere das Programm zum Öffnen und Schließen des Greifers konnte verbessert werden. Wir erreichen damit nicht nur eine verringerte Bearbeitungszeit, sondern vor allem auch eine erhöhte Zuverlässigkeit, da wir fehlerhafte Signale effizienter abfangen.

Für ein Update des (Kawasaki)-Roboters sind aber zwei Dinge notwendig:

  1. Eine stabile Ethernet-Verbindung
  2. Die Kawasaki-eigene Entwicklungsumgebung KIDE, lauffähig nur unter Windows.

Mit einem Windows-Laptop vor Ort wäre das also überhaupt kein Problem. Eine zweite Option ist das Aufbauen einer VPN-Verbindung.

Fehlender Zugriff auf die Netzwerkinfrastruktur

Leider ist beides für uns unmöglich, denn inzwischen werden die Kaffeebars auch von der Firma Robojo in den USA an mehreren Standorten vertrieben. Da die Roboterzelle auch oft in bestehende Netzwerke (bspw. das Campus-Netzwerk einer Uni) eingebunden wird, haben wir auch keinen Zugriff auf Router und Firewall und können somit kein VPN erstellen.

Secure Tunnels

Diese technischen Herausforderungen haben uns dazu veranlasst, nach einer alternativen Lösung zu suchen.

Da wir bereits AWS für verschiedene Teillösungen wie den Video-Kamerastream, die Backend-API, das Logging und das Flottenmanagement nutzen, lag es nahe, bei AWS nach einer geeigneten Lösung zu suchen und glücklicherweise sind wir mit AWS IoT Secure Tunnels auch fündig geworden.

Funktionsweise

Der Prozess beginnt damit, dass das IoT-Gerät eine WebSocket-Verbindung zur AWS IoT-Plattform herstellt und sich für den Secure Tunneling-Dienst authentifiziert. Sobald die Verbindung hergestellt und die Identität des Geräts überprüft wurde, kann das Gerät den sicheren Tunnel öffnen.

Der sichere Tunnel ist eine verschlüsselte Verbindung, die es dem IoT-Gerät ermöglicht, sicher mit AWS-Diensten in der Cloud zu kommunizieren, ohne dass diese direkt dem öffentlichen Internet ausgesetzt sind. Dies bietet eine zusätzliche Sicherheitsebene für die IoT-Geräte, da sie nicht direkt angreifbar sind und ihre Kommunikation vor unbefugtem Zugriff geschützt ist.

Sobald der sichere Tunnel geöffnet ist, können die Daten zwischen dem IoT-Gerät und der Cloud sicher übertragen werden. Die Kommunikation erfolgt über die WebSocket-Verbindung und wird mithilfe von TLS (Transport Layer Security) verschlüsselt, um die Vertraulichkeit und Integrität der übertragenen Daten zu gewährleisten.

Die Verwendung von WebSockets ermöglicht eine bidirektionale Kommunikation zwischen dem IoT-Gerät und der Cloud, was für viele IoT-Anwendungen von entscheidender Bedeutung ist. Es ermöglicht auch eine effiziente Datenübertragung, da die Verbindung nicht bei jeder einzelnen Nachricht neu aufgebaut werden muss.

Verbindung zu Zielgeräten

Nachdem der Secure Tunnel erfolgreich aufgebaut wurde, übernimmt der lokale Proxy eine entscheidende Rolle. Er sorgt dafür, dass lokaler Traffic über den Tunnel vom Client (die sogenannte "Source") über den Tunnel auf den Server (die "Destination") weitergeleitet wird. Er muss somit sowohl auf dem Client als auch dem Server installiert werden. Der Client kann den local proxy auch innerhalb eines Docker-Containers betreiben, da man aber wahrscheinlich Zugriff auf das Host-System haben möchte, ist das auf dem Server in der Regel keine Option.

Zunächst hat man damit aber nur eine Verbindung vom Client zum Server hergestellt.

Um die Verbindung zu den Zielgeräten, wie beispielsweise den Robotern in unserem Fall, herzustellen, ist ein weiteres Proxy-Programm notwendig. Der Einfachheit halber setzen wir hier nginx ein. Nginx nutzt dabei spezielle Konfigurationen, um den Datenverkehr entsprechend zu verteilen und sicherzustellen, dass die Informationen an die richtigen Zielgeräte gelangen.

In unserer Konfiguration wird der Verkehr also folgendermaßen weitergeleitet:

  1. (Client/Source) - Ausgangsprogramm, beispielsweise die Roboterprogrammierumgebung oder ein SSH-Client
  2. (Client/Source) - Docker-Container: Die Weiterleitung von Ports in Docker erfolgt durch das sogenannte Port Mapping. Dabei werden Ports auf dem Host-System auf die Ports eines Containers gemappt. Zum Beispiel kann Port 80 auf dem Host auf Port 8080 in einem Container gemappt werden. Dies ermöglicht es, den Datenverkehr, der an den Host-Port gesendet wird, an den Container-Port weiterzuleiten, wodurch die Anwendungen innerhalb des Containers über den Host-Port erreichbar sind.
  3. Weiterleitung durch den Tunnel
  4. Local-Proxy-zu-Serverhostsystem: Der local proxy leitet den Traffic aus dem Tunnel auf Ports auf dem Server-Hostsystem um.
  5. Server-zu-Zielgerät: Von diesem Punkt aus übernimmt Nginx die Verantwortung, indem es den Datenverkehr vom Server zu den gewünschten Zielgeräten, wie den Robotern, weiterleitet.

Durch diese intelligente Vermittlung des Datenverkehrs ermöglicht dieses komplexe System eine sichere und zuverlässige Kommunikation zwischen dem Client und den Zielgeräten, selbst wenn sich diese in unterschiedlichen Netzwerken oder geografischen Standorten befinden. So wird sichergestellt, dass Updates und Befehle präzise an die Roboter und andere Zielgeräte übertragen werden können.

K7 company logo, a combination of the letter K and the number 7
K7-Konzept Karlsruhe GmbH
Roonstr. 23a • 76137 Karlsruhe
© 2022-2023