20 agosto 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

14 comments :

Sergio dijo...

Muy interesante :)

jkdfjkdsf dijo...

Me pregunto cómo de seguro será. Ojalá pase a ser un "estándar" tipo paquete stunnel en todas las distros, sea eficiente y yo pueda vivir feliz en el país de la gominola.


Como experimento está bien, ojalá llegue a más.

castrelo02 dijo...

Me parece una idea muy interesante pero... la conexión entre cliente-servidor es cifrada? Si abro una conexión SSH hacia el puerto 80 y no va cifrada de nada me vale

Mariano dijo...

Seeeeeeeeeeeeeeee

alex dijo...

Lo usé hace tiempo y creo recordar que tenía un problemilla, y es que en los logs del apache y del ssh las conexiones aparecen como localhost, consecuencia de las redirecciones que hace.

ravasquezgt dijo...

Que maravilla, ya con esto te ahorras apertura de puertos de cara a tu wan y te reduce el factor de riesgo en cuanto a enumeracion de servicios. Yo tengo como meta para el proximo año dejar solo el puerto de vpn abierto pero ya saben que es dificil en entornos privados y publicos de gran tamaño.


Saludos desdes Guatemala

María García dijo...

"todas las conexiones desde el exterior irán contra el puerto 443". ¿No será "todas las conexiones HACIA el exterior irán contra el puerto 443"? O si no, es que me he perdido en algo.

Yago Jesus dijo...

Depende de la perspectiva que lo estés mirando, en la mía lo veo como el servidor que ejecuta sslh, por eso van hacia el

pipo65 dijo...

es muy bueno

María García dijo...

Ah, vale, gracias. Es que yo estaba pensando en el cliente que se quiere escapar del proxy

Ismael Vazquez Ensastiga dijo...

wow wow como te explico que el cifrado no se da por el puerto, se da por el servicio. el canal lo establece el ssh y va cifrada no importa que este por el puerto 80. si tienes mas dudas avisame y te explico.

Ahiezer Alvarez dijo...

me parece un programa muy util

alot dijo...

es lo primero que he pensado. habrá que probar el sistema de log de ese bicho...

alot dijo...

A mi realmente me parece una frikada. Algo innecesario, y en realidad, más engorroso. Al menos desde la perspectiva de servidor... Otra cosa es como invento casero para saltarse como decis algunos, el proxy del trabajo. Pero para eso no necesitas esto.