Web server desde una red interna usando SSH

Supongamos que tenemos una máquina dentro de una red interna ejecutando un servidor web y queremos que dicho servidor pueda ser accedido desde el exterior. Supongamos también que tenemos una cuenta SSH en el gateway que nos da salida a Internet… aunque, lamentablemente, no somos su administrador.

La idea es abrir un puerto en el gateway (por encima del 1023) y redireccionar todas las conexiones entrantes al puerto 80 de nuestra máquina interna, que es donde está escuchando nuestro servidor web. Para ello crearemos un túnel SSH entre el gateway y nuestra máquina:

ssh  -g -L 10080:localhost:80 usuario@maq_interna -N

Este comando debemos ejecutarlo desde el gateway, ya que estamos usando la opción-L(local).

La opción -g (que equivale a ‘GatewayPorts yes’ en~/.ssh/configo/etc/ssh/ssh_config) es muy importante, ya que sin ella el túnel sólo estaría disponible para conexiones desde localhost y nosotros queremos que cualquier persona en Internet pueda acceder a nuestro servidor web.

Para comprobar esto basta con ejecutar:

netstat -nlpt

Deberíamos ver una línea como la siguiente:

tcp6       0      0 : : :10080           : : : *      LISTEN     12414/ssh

Lo que nos indica que el puerto 10080 está escuchando conexiones provenientes desde cualquier dirección y no sólo desde 127.0.0.1.

Por último, la opción-Nle indica a SSH que luego de crear el túnel no nos devuelva el prompt del shell.

Listo. Sólo basta abrir un navegador e ingresar:

http://ip_gateway:10080

Tags: , ,

Comments are closed.