Por lo general, cada protocolo de Internet utiliza un puerto determinado a través del cual podemos acceder a determinados servicios. Sin embargo, por motivos de configuración o seguridad (por ejemplo, si habilitamos una DMZ), es posible que ciertos puertos deban permanecer cerrados para evitar posibles ataques informáticos, aunque, si necesitamos hacer uso de ellos, es posible utilizarlos gracias a la multiplexación con herramientas como sshttp.
sshttp es una aplicación de código abierto que nos permite, precisamente, multiplexar dos protocolos en un solo puerto de manera que podamos conectarnos a dos protocolos diferentes (por ejemplo, HTTP y SSH) a través de un único puerto. Esto, además de comodidad en las configuraciones de seguridad más estrictas, nos va a permitir mejorar nuestra seguridad ya que, mientras que un protocolo determinado, como el SSH, sigue abierto, este está totalmente oculto, por lo que los demás usuarios no sabrán que, tras un determinado puerto (como el 80, en el caso de HTTP) se oculta, además de un servidor web, un servidor SSH que nos permite conectarnos de forma remota al equipo.
Esta herramienta nos permite multiplexar las siguientes parejas de protocolos:
- SSH/HTTP
- SSH/HTTPS
- SSH/SMTP
- HTTPS SNI
- SSH/HTTPS con multiplexación SNI
Cómo funciona sshttp
sshttp trabaja en la capa de sesión, o 5, del modelo OSI y, a grandes rasgos, se puede resumir su funcionamiento como un demonio que se ejecuta en un puerto determinado, como el 80, y analiza todo el tráfico que se recibe a través de este. Según el tipo de tráfico que sea, este demonio lo reenvía a su correspondiente puerto interno. Si el tráfico es de origen HTTP, lo reenviará al puerto 8080 y si es del tipo SSH lo hará al 22 (todas estas opciones totalmente personalizables).
Como hemos dicho, esta herramienta es de código abierto y todo lo relacionado con ella podemos encontrarlo en el siguiente enlace. Para poder utilizarla, lo primero que necesitamos es compilarla y, para ello, simplemente debemos asegurarnos de tener instalada la última versión del Kernel Linux en nuestro servidor con los paquetes nf-conntrack, libcap y libcap-devel y, con ello, ejecutar los siguientes comandos:
- git clone https://github.com/stealth/sshttp.git
- cd sshttp
- make
Una vez compilada la herramienta, antes de ejecutar el demonio, debemos configurarlo. Para ello, debemos editar el fichero de configuración nf-setup para elegir la tarjeta de red sobre la que trabajará y los puertos que va a multiplexar. Una vez listo, ejecutaremos el demonio «sshttpd» con permisos de superusuario para que todo empiece a funcionar.
Además de su función principal, esta herramienta cuenta con un gran número de funciones adicionales que podemos aprender a utilizar gracias a su completa documentación, como, por ejemplo, la posibilidad de funcionar como un proxy para la red LAN o utilizar una multiplexación basada en SNI. Como podemos ver, una aplicación tan complicada y compleja como útil para poder administrar servidores de forma remota sin exponer determinados puertos.
¿Qué te parece sshttp? ¿Conoces otras herramientas similares?
Os recomendamos leer nuestro tutorial sobre protocolo TCP vs UDP diferencias y cuáles son sus principales características.