11 septiembre 2013

HTTPS, SSH y OpenVPN en un mismo puerto, ¿magia?

De vez en cuando uno encuentra una de esas herramientas que resuelve un problema de una forma tan brillante que realmente dan ganas de aplaudir.
Este es el caso de sslh, una herramienta que permite cumplir el sueño de todo aquel que ha tenido que lidiar en un entorno cuya salida estaba gestionada por un proxy.
Sslh permite multiplexar un único puerto y convertirlo en varios servicios a la vez. Lo que hace es recibir la conexión en el puerto indicado, analizar que tipo de conexión es (ssl, openvpn, ssh, xmpp) y en función de ese análisis, enviar la conexión al puerto indicado.
Por simple el concepto es brillante. Muchos nos hemos encontrado en un entorno donde un proxy solo facilita el método 'CONNECT' hacia el puerto 443. Si queríamos hacer uso de varios servicios era necesario usar túneles SSH que a la postre eran bastante engorrosos.
Además, el creador de la herramienta indica un método para lidiar con proxys 'inteligentes' que no solo restringen conexiones a puertos sino que también analizan que las conexiones sean efectivamente SSL.
Para instalarlo en Linux (para windows se proveen ejecutables) hay que hacer lo siguiente:
Descargamos el paquete:
wget https://github.com/yrutschle/sslh/archive/v1.15.tar.gz
Lo descomprimimos
tar -xvzf v1.15.tar.gz
Compilamos e instalamos
make install
Una vez hecho eso, tenemos que configurar sslh para indicarle como queremos que mueva las conexiones.
lo más fácil es usar el puerto 443 de la interface de red exterior para sslh y poner los otros servicios en localhost. De esa forma solo exponemos un puerto abierto al exterior y el resto de servicios están ocultos a miradas ajenas.
Un ejemplo de uso de sslh para escuchar en el puerto 443 de la interface de red y enviar el tráfico SSH al puerto localhost 22
sslh -p 172.16.183.139:443 --ssh 127.0.0.1:22
Si queremos mover tráfico openvpn, tan solo tenemos que añadir el flag --openvpn 127.0.0.1:1194
De esa forma estaremos moviendo tráfico SSH al puerto 22 y tráfico OpenVPN al puerto 1194 pero todas las conexiones desde el exterior irán contra el puerto 443

Tomado de: www.securitybydefault.com/2013/08/https-ssh-y-openvpn-en-un-mismo-puerto.html

No hay comentarios: