web-dev-qa-db-fra.com

Tunnel tout type de trafic TCP via HTTP / s

Je suis à la recherche d'un logiciel pour tunneler RDP ou autre binaire TCP trafic via un tunnel HTTPS. Parce que de nombreux clients ont seulement HTTP/S autorisé (seuls les ports 80 et 443 sont ouverts dans le pare-feu).

Mais il est nécessaire de transférer RDP (et d'autres protocoles) depuis les machines de DMZ vers les clients).

Function description7 Voir la grande description de la fonction

Existe-t-il une sorte de logiciel open source ou d'entreprise pour ce problème?

Mauvaises solutions

Des solutions comme F5 big ip a le problème que je dois créer la configuration de connexion avec ce logiciel. S'il était possible de le faire en utilisant une API, ce serait une bonne solution. Mais je préférerais seulement obtenir le composant tunnel sans utiliser un logiciel de passerelle complet. Beacuse j'ai besoin de créer des tunnels (1000ds de) à partir de mon propre logiciel et c'est un besoin de restreindre l'accès aux tunnels à l'utilisateur autorisé (identifié par le cookie de session)

De bonnes solutions

http://http-tunnel.sourceforge.net/

S'il était possible que le client tunnel ne soit pas un serveur dédié mais une applet Java de flash s'exécutant dans le navigateur du client, il correspondrait à 100% à mes besoins.

23
GreenRover

Il existe un grand nombre de projets qui tunnelent TCP sur HTTP (S). Vous devrez faire un peu de travail pour sélectionner celui qui correspond le mieux à vos besoins (et probablement le modifier légèrement) .

  • SuperTunnel (Java). Ça a l'air sympa, ils semblent avoir réfléchi à la façon de gérer les mandataires qui ne se comportent pas bien.

  • JHttpTunnel (Java). Un port de gnu httptunnel, je pense utilise le même protocole réseau.

  • Netty Tunnel HTTP (Java, partie de Netty, une bibliothèque réseau très agréable; exemple de code ). Je pense que cela nécessite à la fois le client et le serveur pour utiliser Netty, mais à part cela, il y a un remplacement direct pour les sockets ordinaires dans Netty.

  • ProxyChains (C, Unix, très populaire)

  • GNU httptunnel (C, pas de support HTTPS, c'est probablement le grand-père de tous les tunnels http)

  • node-http-tunnel (Node.js), Net :: HTTPTunnel (Perl), nRedir (Python), Corkscrew, htunnel,. ..

Je pense que SuperTunnel et JHttpTunnel peuvent tous deux être inclus dans une applet ou une application Java de votre côté côté client, ils n'ont pas besoin de fonctionner en tant que proxys autonomes.

Netty fera également cela, mais (je pense) cela nécessite que votre serveur utilise également Netty: en d'autres termes, il vous permet de remplacer le TCP connect() normal par un serveur en utilisant Netty avec TCP-sur-HTTP connect(), mais sans proxy des connexions arbitraires à d'autres serveurs (sauf si vous écrivez votre propre proxy simple).

27
Alex I

Si vous êtes dans le monde Windows, je vous suggère fortement de jeter un œil au service VPN SSTP Windows 2008/2008R2/2012. Il utilise le port 443 et peut être co-hébergé avec IIS (sur 443). Il fonctionne comme un charme sous Windows Vista/7/8. J'ai entendu parler des solutions mac OSX mais pas là encore.

Cependant, il existe la bonne vieille solution de SSH.

Si sous Linux, installez simplement un serveur openssh. Si sur Windows, obtenez et installez un serveur OpenSSH (par exemple copSSH depuis itefix https://www.itefix.no/ ). Modifiez le port pour utiliser 443 au lieu de 22 par défaut.

Du côté client, vous pouvez ensuite utiliser PuTTY ( http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html ) ou kitty ( http (// kitty.9bis.net/ ) sur Windows ou tout type de client SSH dans n'importe quel système d'exploitation pour se connecter à votre serveur via le port 443 (où votre serveur SSH écoute).

Des instructions sur le tunneling via PuTTY par exemple peuvent être trouvées sur plusieurs sites:

N'oubliez pas que vous devez pointer vers votre hôte local pour ce faire.

Sous Windows, il existe également MyEnTunnel ( http://nemesis2.qx.net/pages/MyEnTunnel ) pour simplifier la procédure de configuration et de maintenance du tunnel.

L'exploitation de ce tunnel sur un navigateur est extrêmement simple: dites simplement à votre navigateur que vous avez un proxy socks sur un port local (par exemple localhost 8080) que vous venez de configurer dans votre client (PuTTY, kitty, myentunnel ou autre).

5
gkakas

J'en ai écrit un appelé sshh. http://sourceforge.net/projects/sshh/

Je suis devenu un peu fou, cela vous permet en fait de vous connecter à l'envers.

2
stu