HTTP-Tunnel - HTTP tunnel

HTTP-Tunneling wird verwendet, um eine Netzwerkverbindung zwischen zwei Computern unter Bedingungen eingeschränkter Netzwerkkonnektivität herzustellen, einschließlich Firewalls , NATs und ACLs , neben anderen Einschränkungen. Der Tunnel wird von einem Vermittler erstellt, der als Proxy-Server bezeichnet wird und sich normalerweise in einer DMZ befindet .

Tunneling kann auch eine Kommunikation mit einem Protokoll ermöglichen , das normalerweise im eingeschränkten Netzwerk nicht unterstützt wird.

HTTP CONNECT-Methode

Die gebräuchlichste Form des HTTP-Tunnelings ist das standardisierte HTTP-CONNECT- Verfahren. Bei diesem Mechanismus fordert der Client einen HTTP-Proxy-Server auf, die TCP- Verbindung an das gewünschte Ziel weiterzuleiten . Der Server fährt dann damit fort, die Verbindung im Auftrag des Clients herzustellen. Nachdem die Verbindung vom Server hergestellt wurde, fährt der Proxy-Server fort, den TCP-Stream zum und vom Client zu übertragen. Nur die anfängliche Verbindungsanfrage ist HTTP - danach stellt der Server einfach die hergestellte TCP-Verbindung als Proxy her.

Durch diesen Mechanismus kann ein Client hinter einem HTTP-Proxy auf Websites zugreifen, die SSL oder TLS (dh HTTPS) verwenden. Proxyserver können auch Verbindungen einschränken, indem sie nur Verbindungen zum Standard-HTTPS-Port 443 zulassen, Hosts auf die Whitelist setzen oder Datenverkehr blockieren, der nicht SSL zu sein scheint.

Verhandlungsbeispiel

Der Client verbindet sich mit dem Proxy-Server und fordert Tunneling an, indem er den Port und den Host-Computer angibt, zu dem er eine Verbindung herstellen möchte. Der Port wird verwendet, um das angeforderte Protokoll anzugeben.

CONNECT streamline.t-mobile.com:22 HTTP/1.1
Proxy-Authorization: Basic encoded-credentials

Wenn die Verbindung zugelassen wurde und sich der Proxy mit dem angegebenen Host verbunden hat, gibt der Proxy eine 2XX-Erfolgsantwort zurück.

HTTP/1.1 200 OK

Der Client wird jetzt an den Remote-Host weitergeleitet. Alle an den Proxy-Server gesendeten Daten werden nun unverändert an den Remote-Host weitergeleitet und der Client kann mit jedem vom Remote-Host akzeptierten Protokoll kommunizieren. Im folgenden Beispiel startet der Client die SSH-Kommunikation, wie durch die Portnummer in der anfänglichen CONNECT-Anfrage angedeutet.

SSH-2.0-OpenSSH_4.3\r\n
...

HTTP-Tunneling ohne CONNECT

Ein HTTP-Tunnel kann auch nur mit den üblichen HTTP-Methoden POST, GET, PUT und DELETE realisiert werden. Dies ist ähnlich dem Ansatz, der bei bidirektionalen Strömen über synchrones HTTP ( BOSH ) verwendet wird.

In diesem Proof-of-Concept-Programm läuft ein spezieller HTTP-Server außerhalb des geschützten Netzwerks und ein Client-Programm wird auf einem Computer innerhalb des geschützten Netzwerks ausgeführt. Immer wenn Netzwerkverkehr vom Client weitergeleitet wird, verpackt der Client die Verkehrsdaten als HTTP-Anfrage neu und leitet die Daten an den externen Server weiter, der die ursprüngliche Netzwerkanforderung für den Client extrahiert und ausführt. Die an den Server gesendete Antwort auf die Anfrage wird dann als HTTP-Antwort neu verpackt und an den Client zurückgesendet. Da der gesamte Datenverkehr in normalen GET- und POST-Anfragen und -Antworten gekapselt ist, funktioniert dieser Ansatz durch die meisten Proxys und Firewalls.

Siehe auch

Verweise