HTTP-tunnel - HTTP tunnel
HTTP-tunneling wordt gebruikt om een netwerkverbinding tussen twee computers tot stand te brengen in omstandigheden van beperkte netwerkconnectiviteit, waaronder firewalls , NAT's en ACL's , naast andere beperkingen. De tunnel wordt gemaakt door een tussenpersoon die een proxyserver wordt genoemd en die zich meestal in een DMZ bevindt .
Tunneling kan ook communicatie mogelijk maken met behulp van een protocol dat normaal niet wordt ondersteund op het beperkte netwerk.
HTTP CONNECT-methode
De meest voorkomende vorm van HTTP-tunneling is de gestandaardiseerde HTTP CONNECT- methode. In dit mechanisme vraagt de client een HTTP-proxyserver om de TCP- verbinding door te sturen naar de gewenste bestemming. De server gaat dan verder met het maken van de verbinding namens de client. Zodra de verbinding tot stand is gebracht door de server, gaat de proxyserver door met het proxyen van de TCP-stroom van en naar de client. Alleen het eerste verbindingsverzoek is HTTP - daarna proxeert de server gewoon de tot stand gebrachte TCP-verbinding.
Dit mechanisme is hoe een client achter een HTTP-proxy toegang kan krijgen tot websites met SSL of TLS (dwz HTTPS). Proxyservers kunnen ook verbindingen beperken door alleen verbindingen met de standaard HTTPS-poort 443 toe te staan, hosts op de witte lijst te zetten of verkeer te blokkeren dat geen SSL lijkt te zijn.
Voorbeeld onderhandeling
De client maakt verbinding met de proxyserver en vraagt om tunneling door de poort en de hostcomputer op te geven waarmee hij verbinding wil maken. De poort wordt gebruikt om het gevraagde protocol aan te geven.
CONNECT streamline.t-mobile.com:22 HTTP/1.1
Proxy-Authorization: Basic encoded-credentials
Als de verbinding was toegestaan en de proxy heeft verbinding gemaakt met de opgegeven host, dan zal de proxy een 2XX succesreactie retourneren.
HTTP/1.1 200 OK
De client wordt nu via een proxy naar de externe host gestuurd. Alle gegevens die naar de proxyserver worden verzonden, worden nu ongewijzigd doorgestuurd naar de externe host en de client kan communiceren met elk protocol dat door de externe host wordt geaccepteerd. In het onderstaande voorbeeld start de client SSH-communicatie, zoals aangegeven door het poortnummer in het initiële CONNECT-verzoek.
SSH-2.0-OpenSSH_4.3\r\n ...
HTTP-tunneling zonder CONNECT
Een HTTP-tunnel kan ook worden geïmplementeerd met alleen de gebruikelijke HTTP-methoden zoals POST, GET, PUT en DELETE. Dit is vergelijkbaar met de benadering die wordt gebruikt in bidirectionele streams via synchrone HTTP ( BOSH ).
In dit proof-of-concept-programma draait een speciale HTTP-server buiten het beveiligde netwerk en een clientprogramma op een computer binnen het beveiligde netwerk. Telkens wanneer er netwerkverkeer van de client wordt doorgegeven, verpakt de client de verkeersgegevens opnieuw als een HTTP-verzoek en stuurt de gegevens door naar de externe server, die het oorspronkelijke netwerkverzoek voor de client extraheert en uitvoert. Het antwoord op het verzoek, dat naar de server wordt verzonden, wordt vervolgens opnieuw verpakt als een HTTP-antwoord en teruggestuurd naar de client. Aangezien al het verkeer is ingekapseld in normale GET- en POST-verzoeken en antwoorden, werkt deze aanpak via de meeste proxy's en firewalls.
Zie ook
- ICMP-tunnel
- Pseudo-draad
- Tunnelmakelaar
- Virtueel particulier netwerk (VPN)
- Virtueel uitbreidbaar LAN
- Netwerkvirtualisatie met behulp van generieke routeringsinkapseling