Présentation des 2 outils Corkscrew et Proxytunnel:

Ils permettent donc de créer des tunnels TCP à travers un proxy HTTP (via la méthode CONNECT)…

On sera donc par exemple en mesure de monter une connexion SSH… Cette connexion SSH pourra être ensuite elle-même un tunnel chiffré dans lequel faire passer d’autres connexions… Je ne vous fait pas un dessin (option -D d’openSSH, tsocks…etc..

  • Présentation

corkscrew is a simple tool to tunnel TCP connections through an HTTP proxy supporting the CONNECT method. It reads stdin and writes to std‐out during the connection, just like netcat. It can be used for instance to connect to an SSH server running on a remote 443 port through a strict HTTPS proxy.

proxytunnel is a program that open a tunnel through a HTTPS proxy.

  • Fichier ~/.ssh/config

$ man ssh_config
ProxyCommand
Specifies the command to use to connect to the server.[…]

  • Pour Corkscrew
Host mon.serveur.ssh  
Port 443  
ProxyCommand corkscrew mon.proxy.intra 8080 %h %p loginpassfile  
  • Pour Proxytunnel
Host mon.serveur.ssh  
Port 443  
ProxyCommand proxytunnel -p mon.proxy.intra:8080 -F loginpassfile -d %h:%p   

On peut constater que le principe est le même.. et que la syntaxe est très proche.

  • Syntaxe du fichier loginpass
  • Pour Corkscrew
superLogin:superPass
  • Pour Proxytunnel
proxy_user = superLogin  
proxy_passwd = superPass
  • Création de connexion SSH à travers le proxy avec par exemple:
$ ssh -p 443 mon.serveur.ssh

ou

$ ssh -D 1111 -p 443 mon.serveur.ssh  
  • Différences

Je n’ai pas trouvé beaucoup de différence entre les 2…pour mon utilisation:

  • Proxytunnel affiche une petite ligne lors de la connexion SSH
Via mon.proxy.intra:8080 -> mon.serveur.ssh:443
  • La dernière version de Corscrew semble dater de 2001.. et la dernière de Proxytunnel de 2008.

  • Proxytunnel semble avoir une option pour chaîner 2 proxys (non testé).

  • Proxytunnel semble avoir une option pour chiffrer la connexion entre le client et le proxy. (Non testé.. le proxy à dispo ne le supporte pas).

  • Corkscrew à un logo plus sympa ;)

  • Proxytunnel semble avoir une option pour faire du NTLM (non testé).

  • Divers
  • PuTTY a une option pour faire passer la connexion dans un Proxy…

  • On peut ajouter la ligne suivante dans le ~/.ssh/config pour maintenir le tunnel si besoin

ProtocolKeepAlives 30
  • On peut aussi faire du SCP de la même manière (dans les 2 sens)
$ scp -P 443 file mon.serveur.ssh:/tmp  
Via mon.proxy.intra:8080 -> mon.serveur.ssh:443  
file 100% 171 0.2KB/s 00:00   
$ scp -P 443 mon.serveur.ssh:/tmp/file .  
Via mon.proxy.intra:8080 -> mon.serveur.ssh:443  
file 100% 171 0.2KB/s 00:00  

N’oublions pas que ce n’est pas parcequ’on arrive à se connecter en SSH, que l’admin est forcément bigleux…
Il lui est tout à fait possible de voir qu’il s’agit d’un tunnel SSH et non d’une banale connexion HTTPS…