Cómo crear túneles SSH o reenvío de puertos en Linux

Cómo crear túneles SSH o reenvío de puertos en Linux

Túnel ssh (también conocido como reenvío de puertos SSH) simplemente está enrutando el tráfico de red local a través de SSH a hosts remotos. Esto implica que todas sus conexiones están aseguradas utilizando el cifrado. Proporciona una manera fácil de configurar un VPN (Red privada virtual), útil para conectarse a redes privadas a través de redes públicas no seguras como Internet.

También se puede utilizar para exponer a los servidores locales detrás de NATS y firewalls a Internet por túneles seguros, como se implementa en NGROK.

[También puede que le guste: cómo asegurar y endurecer el servidor OpenSsh]

Ssh Las sesiones permiten conexiones de red de túneles de forma predeterminada y hay tres tipos de reenvío de puertos SSH: local, remoto y dinámica reenvío de puertos.

En este artículo, demostraremos cómo configurar rápida y fácilmente el túnel SSH o los diferentes tipos de reenvío de puertos en Linux.

Entorno de prueba:

Para el propósito de este artículo, estamos utilizando la siguiente configuración:

  1. Anfitrión local: 192.168.43.31
  2. Servidor remoto: Linode Centos 7 VPS con nombre de host servidor 1.ejemplo.comunicarse.

Por lo general, puede conectarse de forma segura a un servidor remoto utilizando SSH de la siguiente manera. En este ejemplo, he configurado el inicio de sesión SSH sin contraseña entre mis hosts locales y remotos, por lo que no ha pedido la contraseña del administrador del usuario.

$ ssh [correo electrónico protegido] 
Conecte SSH remoto sin contraseña

Reenvío de puertos SSH local

Este tipo de reenvío de puertos le permite conectarse desde su computadora local a un servidor remoto. Suponiendo que esté detrás de un firewall restrictivo o bloqueado por un firewall saliente para acceder a una aplicación que se ejecuta en el puerto 3000 En su servidor remoto.

Puede reenviar un puerto local (E.gramo 8080) que luego puede usar para acceder a la aplicación localmente de la siguiente manera. El -L La bandera define el puerto reenviado al host remoto y al puerto remoto.

$ ssh [correo electrónico protegido] -l 8080: servidor1.ejemplo.com: 3000 

Agregando el -norte bandera significa que no ejecute un comando remoto, no obtendrá un shell en este caso.

$ ssh -n [correo electrónico protegido] -l 8080: servidor1.ejemplo.com: 3000 

El -F Switch instruye a SSH que se ejecute en segundo plano.

$ ssh -f -n [correo electrónico protegido] -l 8080: servidor1.ejemplo.com: 3000 

Ahora, en su máquina local, abra un navegador, en lugar de acceder a la aplicación remota utilizando la dirección servidor 1.ejemplo.com: 3000, simplemente puedes usar Localhost: 8080 o 192.168.43.31: 8080, Como se muestra en la captura de pantalla a continuación.

Acceda a una aplicación remota a través del reenvío de puertos SSH local

Reenvío de puertos SSH remoto

El reenvío remoto de puertos le permite conectarse desde su máquina remota a la computadora local. Por defecto, SSH no permite el reenvío de puertos remotos. Puedes habilitar esto usando el Puerto de gateway Directiva en su archivo de configuración principal de SSHD /etc/ssh/sshd_config en el host remoto.

Abra el archivo para editar usando su editor de línea de comandos favorito.

$ sudo vim/etc/ssh/sshd_config 

Busque la directiva requerida, descomnéla y establezca su valor en , Como se muestra en la captura de pantalla.

Gatewayports Sí 
Habilitar el reenvío de puertos SSH remoto

Guardar los cambios y salir. A continuación, debe reiniciar SSHD para aplicar el cambio reciente que realizó.

$ sudo systemctl reiniciar sshd o $ sudo servicio sshd reiniciar 

A continuación, ejecute el siguiente comando para reenviar puerto 5000 en la máquina remota al puerto 3000 en la máquina local.

$ ssh -f -n [correo electrónico protegido] -r 5000: localhost: 3000 

Una vez que comprenda este método de túnel, puede exponer de manera fácil y segura un servidor de desarrollo local, especialmente detrás de NATS y firewalls a Internet a través de túneles seguros. Túneles como ngrok, pagekite, túnel local, y muchos otros trabajan de manera similar.

Reenvío de puertos SSH dinámico

Este es el tercer tipo de reenvío de puertos. A diferencia de local y remoto Reenvío de puertos que permite la comunicación con un solo puerto, hace posible una gama completa de comunicaciones TCP en una gama de puertos. El reenvío de puertos dinámico configura su máquina como Servidor proxy de calcetines que escucha en el puerto 1080, por defecto.

Para principiantes, MEDIAS es un protocolo de Internet que define cómo un cliente puede conectarse a un servidor a través de un servidor proxy (SSH en este caso). Puede habilitar el reenvío de puertos dinámicos utilizando el -D opción.

El siguiente comando iniciará un proxy de calcetines en el puerto 1080 permitiéndole conectarse al host remoto.

$ ssh -f -n -d 1080 [correo electrónico protegido] 

De ahora en adelante, puede hacer que las aplicaciones en su máquina usen este servidor proxy SSH editando su configuración y configurándolas para usarla, para conectarse a su servidor remoto. Tenga en cuenta que el MEDIAS Proxy dejará de funcionar después de cerrar su sesión SSH.

Leer también: 5 formas de mantener las sesiones remotas de SSH en funcionamiento después de cerrar SSH

Resumen

En este artículo, explicamos los diversos tipos de reenvío de puertos de una máquina a otra, para túneles de tráfico a través de la conexión SSH segura. Este es uno de los muchos usos de SSH. Puede agregar su voz a esta guía a través del formulario de comentarios a continuación.

Atención: El reenvío de puertos SSH tiene algunas desventajas considerables, se puede abusar: se puede usar para evitar los programas de monitoreo de red y filtrado de tráfico (o firewalls). Los atacantes pueden usarlo para actividades maliciosas. En nuestro próximo artículo, mostraremos cómo deshabilitar el reenvío de puertos locales SSH. Mantente conectado!