Überblick zur Protokoll-/ Verbindungswahl zwischen Backend-Server und Gateway ITC-MEETING 30.10.14 07.08.2019 Tobias Hänel
Gliederung Anforderungsstellung Kurzvorstellung Voraussetzungen Vor- und Nachteile Persönliche Meinung ... der Protokolle / Verbindungsmethoden 07.08.2019 Tobias Hänel
Anforderungsstellung Aufgabenstellung (gekürzt & zusammengefasst): Die Kommunikation zwischen Backend-Server und Gateway soll unter der Verwendung eines echtzeitfähigen Protokolls erfolgen. Sie soll so erfolgen, dass keine Anpassungen auf Anwenderseite an bestehenden Firewalls erfolgen müssen. Sicherheitsaspekte in Bezug Authentifizierung des Gateways am Backend-Server sind mit zu betrachten. Sofern Drittbibliotheken Verwendung genutzt werden, müssen diese Open-Source sein. Nach Möglichkeit soll die Installation der Erweiterung direkt auf dem Gateway möglich sein. Alternativ auch auf anderen Plattformen im lokalen Netzwerk. Daraus resultierende Anforderungen: „Echtzeitfähiges“ Protokoll Funktionalität ohne Port-Forwarding Gewährleistung der Authentifizierung von Gateway und Backend-Server Drittbibliotheken müssen Open-Source sein Installation im lokalen Netzwerk, vorzugsweise auf dem Gateway 07.08.2019 Tobias Hänel
Kurzvorstellung http-over-xmpp: Reverse SSH Tunneling: PageKite: Ein Protokoll zum Transport von HTTP-Methoden mithilfe des XMPP-Protokolls. Für den Aufbau einer Verbindung ist zusätzlich ein XMPP-Server/Client erforderlich. Die einzelnen HTTP-Methoden werden über eine XMPP-Verbindung (ähnlich Chat) verschlüsselt und z.B. mit XML kodiert versendet. Reverse SSH Tunneling: Die Verbindung erfolgt über eine SSH-Tunnel die „rückwärts“ erfolgt. Dadurch ist kein Port-Forwarding nötig, da hauptsächlich nur Traffic vom Gerät ausgeht und dieser nicht von der Firewall gefiltert wird. Mit dieser Methode schaltet man einen offenen Port am Gateway auf einen freien Port am Backend-Server. PageKite: Ein Tool, das einen Verbindung über einen Tunnel zum Backend-Server (ähnlich SSH) implementiert. Darüber können HTTP und HTTPS-Server (Andere Protokolle werden auch unterstützt) von einem lokalen Gerät auf einem öffentlichem Server (über eine Subdomain) bereitgestellt werden. Das Tool fungiert gleichzeitig als Backend und Client und übernimmt die Verbindung vollständig. Es muss lediglich ein Port am Backend-Server frei sein. 07.08.2019 Tobias Hänel
http-over-xmpp Voraussetzungen Gateway: Openfire-Server Java http-over-xmpp-Plugin Backend-Server: Lizenzen: Openfire-Server – Open Source Apache Lizenz http-over-xmpp-Protokoll – XMPP Extension Protokoll © XMPP Standards Foundation 07.08.2019 Tobias Hänel
Reverse SSH Tunneling Voraussetzungen Gateway: SSH-Bibliothek z.B.: JSCH für Java Backend-Server: SSH-Server Freier Port pro Gateway Verbindung sollte nicht immer laufen Lizenzen: JSCH – BSD-ähnliche Lizenz 07.08.2019 Tobias Hänel
PageKite Voraussetzungen Gateway: Pagekite.py (Backendmodus) Python Backend-Server: Pagekite.py (Frontendmodus) Python DNS-Konfiguration für PageKite anpassen Lizenzen: PageKite – GNU Affero General Public Lizenz 07.08.2019 Tobias Hänel
http-over-xmpp Vor- und Nachteile Vorteile NACHTEILE Keine Gateway-Anzahllimitierung Openfire-Server (Zusätzliche Ressourcen) Beschränkt sich auf HTTP-Verkehr HTTP-Unterstützung muss noch komplett selbst erstellt werden 07.08.2019 Tobias Hänel
Reverse SSH Tunneling Vor- und Nachteile Vorteile NACHTEILE Öffentlicher Schlüssel zur Identifizierung nutzbar Verbindung wird komplett selbstständig erstellt Anzahl gleichzeitig verbundener Gateway limitiert auf freie Ports Wrapper der Verbindung bei Bedarf erstellt, muss programmiert werden Limitierung bezieht sich nur auf Gateways mit gleichzeitiger Nutzung Zusätzliche Ports müssen freigeschaltet werden Durchgeschaltete Webserver sind ohne Authentifizierung für jeden erreichbar 07.08.2019 Tobias Hänel
PageKite Vor- und Nachteile Vorteile NACHTEILE Keine Gateway-Anzahllimitierung Verbindung wird komplett selbstständig erstellt Gateways ohne HTTPS-Support können zusätzlich verschlüsselt werden Passwortschutz der Gateways möglich Nur ein freier Port nötig HTTPS-Routing funktioniert nicht 100% verlässlich unter sehr alten Browsern/Betriebssystemen (unter anderem Windows XP) 07.08.2019 Tobias Hänel
Persönliche Meinung http-over-xmpp und Reverse SSH Tunneling stellen zwar eine Möglichkeit dar die Verbindung herzustellen, aber bringen beide einige markante Nachteile mit sich. PageKite hat aufgrund der Spezialisierung auf dieses Themengebiete den Großteil dieser Nachteile behoben und funktioniert dementsprechend besser. Außerdem ist der zusätzliche Arbeitsaufwand mit PageKite am geringsten, was mehr Zeit für andere Problemgebiete/Ideenrealisierung schafft. Falls es keine anderen Gründe gegen PageKite gibt, würde ich diese Verbindungsmethode bevorzugen. 07.08.2019 Tobias Hänel
Quellen http-over-xmpp: Reverse SSH Tunneling: PageKite: http://xmpp.org/extensions/xep-0332.html - Stand 28.10.14 Reverse SSH Tunneling: http://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work - Stand 28.10.14 PageKite: https://github.com/pagekite/PyPagekite/blob/main/doc/README.md - Stand 28.10.14 https://pagekite.net/wiki/OpenSource/ - Stand 26.10.14 07.08.2019 Tobias Hänel