SSH y HTTPS en puerto 443

En el artículo anterior explique como navegar a través de un servidor socks creado con ssh. Eso va a funcionar siempre y cuando no tengamos bloqueado el puerto en el que estamos corriendo ssh en nuestro servidor (por defecto el 22). Es muy probable que el puerto 22 este bloqueado, pero muy poco probable que el 443 sea bloqueando.

Una solución simple podría ser ejecutar SSH en el puerto 443, pero lo más probable es que necesitemos correr alguna aplicación HTTPS en ese puerto. La solución a este problema se llama SSLH. Sus autores lo llaman un multiplexor SSH/HTTPS.

Básicamente lo que hace este servicio es redirigir las peticiones de SSH a localhost:22 y las de HTTPS a localhost:443. Para que todo funcione bien debemos deberíamos configurar nuestro servidor web para que escuche en: 127.0.0.1:433 en lugar de *:443.

Manos a la Obra

Nota: Si se va hacer esto en un servidor remoto podría perder la conexión al mismo. Trabaje con atención y mantenga una conexión de ssh abierta por si las moscas.

Lo primero que tenemos que hacer es instalar SSLH. En las distribuciones basadas en Debian (ej. Ubuntu) bastará instalarlo desde repositorios. En otras distros supongo que el procedimiento debe ser muy similar.

aptitude install sslh

Una vez instalado, lo primero que debemos hacer es configurar nuestro servidor web para que el puerto 443 sea solo escuchado en localhost y no en el ip público.  En mi caso personal uso Cherokee y para esto en el Cherokee admin debemos ir a: General-> puertos. Una vez ahí añadimos la dirección ip junto a la directiva de 443.  En el caso de Apache o cualquier otro servidor web se aplica el mismo concepto.

El servicio ssh si queremos lo podemos configurar para que escuche solo en 127.0.0.1:22 ya que ahora podríamos acceder desde el 443. No recomiendo hacer esto hasta que todo este funcionando.

Una vez que tenemos configurado el servidor web, tenemos que configurar el sslh. Para esto editamos el archivo /etc/default/sslh. Básicamente se debe añadir la lista RUN=yes y configurar el ip pública de nuestro servidor. Deberíamos tener algo similar a esto:

DAEMON_OPTS="-u sslh -p 200.200.200.200:443 -s 127.0.0.1:22 -l 127.0.0.1:443 -P /var/run/sslh.pid"
RUN=yes

Nota: Son solo 2 líneas la primera define la variable DAEMON_OPTS y la segunda la variable RUN.

Ahora solo queda arrancar el servicio

/etc/init.d/sslh start

Listo ahora podemos ingresar a nuestro servidor utilizando el puerto 443

ssh -p 443 usuario@servidorremoto.com

Ahora si quisieramos navegar utilizando un proxy socks básicamente deberíamos hacer algo así:

ssh -p 443 -ND 8080 usuario@servidorremoto.com

Ahora ya estamos preparados para redes hostiles donde les gusta bloquear lo que más pueden.

Les recomiendo leer el siguiente artículo de Linux Magazine donde Charlie nos cuenta sobre sslh. Si no hubiera sido por Charlie, no supiera como hacer esto y no hubiera escrito este artículo. Sin lugar a dudas mi columna favorita de Linux Magazine.

Artículos relacionados

  • No existen artículos relacionados

5 pensamientos en “SSH y HTTPS en puerto 443

  1. Pingback: Tweets that mention Rafael Bonifaz » Blog Archive » SSH y HTTPS en puerto 443 -- Topsy.com

  2. Interesante el artículo, pero aún no cubre mis necesidades. Estoy dentro de una red que sobrepasa lo hostil, me conecto mediante un verdadero campo de concentración. Mi ISP no me deja hacer ping a ninguna IP, y todo tiene que ser mediante DNS. En este caso ¿Cómo puedo hacer?

    Digamos que tengo un webhosting al que tengo acceso por DNS pero no por SSH. ¿Tengo alguna forma de sacar la conexión por mi ISP por el 443 y que el webhosting lo reciba por el puerto que tiene configurado?

    No sé si me explico bien..

    Saludos

  3. hola soy miguel y me gustaria saber si hay alguna receta para entrar a paginas bloqueadas por https usando el programa hotspot shiel free ? saludos

  4. Hola tambien tengo una duda, en mi red tengo bloqueado el puerto 443 por mi ISP lo cual no me permite abrir paginas https solo tengo liberado el puerto 80 pero tampoco me deja ver videos en el navegador solo formato mp4 y 3gp, intente conectar vpn por el puerto 80 pero no, al parecer no se puede ni con header ni proxys, tambien intente conectarle cuentas ssh por el puerto 80,22 y 443 y nada, no se puede ni con injectores http. Mi pregunta es si hay alguna forma de redirigir el trafico 443 por el puerto 80 (parecido a las cuentas ssh) para lograr conectar ssl y asi poder abrir paginas https con ayuda del puerto 80, con vpn se puede, pero mi pregunta es si hay algo que pueda injectar todo esto cuando el puerto 443 esta cerrado???

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You can encrypt your comment so that only Rafael Bonifaz can read it.