Cómo utilizar el túnel SSH inverso para permitir conexiones externas a su PC

Si tiene la suerte de que su proveedor de servicios de Internet (ISP) le proporcione una dirección IP dedicada, puede configurar un servidor doméstico y ponerlo a disposición de Internet agregando algunas reglas de reenvío de puertos a su enrutador. Pero si su ISP le obliga a compartir esa IP con sus vecinos, el reenvío de puertos no ayudará. Otros proveedores simplemente bloquean las conexiones entrantes mediante reglas de firewall.

Puede evitar todas estas restricciones con la ayuda de un servidor privado virtual. Todo funcionará, incluso si tiene menos de 512 MB de RAM, ya que todo lo que tiene que hacer es redirigir el tráfico de red. Esto es muy ligero en CPU y RAM. El servidor recibirá conexiones entrantes y las redirigirá a su computadora a través de lo que se denomina un “túnel SSH inverso”. De esta manera, puede configurar cualquier tipo de servidor doméstico, con costos mensuales muy pequeños.

Imagínese que crea un servidor NextCloud para cargar / sincronizar sus archivos. Obtiene la privacidad de tener esos archivos en su servidor doméstico, y luego puede comprar un disco duro de 6TB para obtener todo el espacio que necesita. Solo tienes que pagar una factura de luz mensual y menos de $ 5 / mes por un servidor privado virtual. Eso es mucho más barato que la factura mensual de un servidor con 6 TB de espacio.

Nota: Esto solo funciona para redirigir el tráfico de red TCP. TCP es utilizado por cosas como servidores web (puerto 80 / tcp). Algunos (no todos) servidores de juegos utilizan UDP, por ejemplo Counter Strike (puerto 27015 / UDP). La tunelización UDP es posible, pero con algunos “trucos”, que pueden ser el tema de un tutorial futuro.

Windows 10 ahora tiene un cliente SSH incorporado

Ya no es necesario usar PuTTY para iniciar conexiones SSH. De hecho, para este tutorial, utilizará este cliente integrado para configurar el túnel. Lea el tutorial sobre el cliente OpenSSH de Windows 10 si aún no está familiarizado con él.

Prepare el servidor privado virtual para las conexiones del túnel

Cree un servidor privado virtual con su proveedor favorito, como DigitalOcean, Linode, Vultr o lo que prefiera. Lo más importante es elegir una ubicación del servidor que esté lo más cerca posible de usted para minimizar la latencia de la red. Intente configurar el servidor de tal manera que pueda iniciar sesión en la cuenta raíz directamente, preferiblemente con una clave SSH, ya que es más seguro. Esto es necesario si desea que el servidor escuche las conexiones provenientes de puertos por debajo de 1024, los llamados puertos privilegiados.

Abra el símbolo del sistema (o una terminal si está en Linux) e inicie sesión en el servidor a través de SSH.

Edite la configuración del servidor OpenSSH:

Si no inició sesión como root pero como usuario normal, deberá usar este comando; de lo contrario, no podrá guardar el archivo:

Desplácese hacia abajo hasta encontrar una variable llamada “GatewayPorts”. La línea puede verse así: #GatewayPorts no. Elimine el “#” anterior (para descomentar) y cambie la línea a GatewayPorts yes.

ssh-reverse-gateway-ports-enable

Si no puede encontrar la línea, desplácese hacia abajo hasta el final y agregue la línea usted mismo:

prensa Ctrl + X, entonces presione yy finalmente Enter para guardar el archivo.

Vuelva a cargar el demonio SSH para que recupere la nueva configuración.

Salga de la sesión SSH.

Cómo configurar un túnel SSH inverso

Los parámetros del comando son los mismos en los sistemas operativos Linux, Windows e incluso BSD. La sintaxis general es:

  • remote_port le dice al servidor que redirija las conexiones que llegan a él en ese puerto.
  • host le dice al servidor a qué dirección IP se debe redirigir la conexión. 127.0.0.1 se utilizará aquí para redirigir a su propia computadora.
  • localport indica a qué puerto se deben redirigir los paquetes de datos. Aquí, debe poner el número de puerto en el que escucha su aplicación, instalada en su computadora local.

Por ejemplo, para reenviar todas las conexiones que vienen en el puerto 80 (al servidor) y enviarlas al puerto 8080 en su computadora local, el comando sería:

Esto supone que tiene un servidor web, como Apache o Nginx, que escucha en el puerto 8080 de su máquina local. Pero si Apache / Nginx está escuchando en el puerto predeterminado 80, entonces no hay problema para usar el mismo puerto dos veces en el comando anterior (ya que se refieren al puerto 80 en un servidor diferente).

En este punto, si alguien ingresa la dirección IP de su servidor privado virtual en la barra de direcciones de un navegador, su conexión será redirigida y servida por su computadora local.

túnel de prueba inversa ssh

En la imagen de arriba, un servidor web simple para Chrome se utilizó que escucha en el puerto 8887 de forma predeterminada. Puede probar esta configuración usted mismo instalando la aplicación y luego usando el comando, como en la imagen.

Vale la pena mencionar que para mantener el túnel activo, su sesión SSH debe permanecer activa. Para cerrar el túnel, escriba exit en la ventana de terminal / símbolo del sistema.

Conclusión

Como puede ver, no es difícil crear un túnel SSH inverso, pero proteger un sitio web sí lo es. Entonces, si elige implementar una idea como un servidor NextCloud local, aíslela en una máquina virtual al menos. De esta forma, si su sitio web se ve comprometido, al menos el resto de su sistema operativo saldrá ileso.

Y, ya sabes … ¡siempre haz una copia de seguridad de lo que no quieras arriesgarte a perder!

¿Es útil este artículo?

¡Ayúdanos a correr la voz!

Deja una respuesta

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