GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar túneles SSH

Si se está conectando con un dispositivo Linux diferente en una red diferente, entonces tendría que exponerlo a la Internet pública y eso puede poner en riesgo su sistema y sus archivos. Por lo tanto, SSH Tunneling se usa para transmitir datos de manera rápida y segura desde la fuente a la máquina del cliente y viceversa.

SSH Tunneling es una práctica de crear una conexión SSH segura y encriptada entre una máquina servidor y una máquina cliente a través de la cual se pueden transferir datos y retransmitir el servicio. En nuestro artículo de hoy, veremos cómo configurar SSH Tunneling y enrutar su tráfico de forma segura a través de túneles SSH.

¿Qué es la tunelización SSH?

SSH Tunneling es la forma de transmitir tráfico o datos sin cifrar a través de un canal cifrado. Simplemente, se puede decir que es un túnel para transferir datos de un lugar a otro de forma segura. Además de la transmisión de archivos, SSH Tunneling también se puede utilizar para acceder a servicios de intranet a través de cortafuegos y para implementar VPN.

SSH Tunneling también se conoce como SSH Forwarding y es una forma fácil y efectiva de transportar datos que usan un protocolo encriptado (FTP), eludiendo firewalls y accediendo a contenido geográficamente restringido.

El reenvío de puertos SSH son de tres tipos:

  1. Reenvío de puerto local
  2. Reenvío de puertos remotos
  3. Reenvío de puertos dinámicos

Reenvío local

El reenvío local es la práctica de reenviar un puerto desde la máquina cliente (Cliente SSH local) a la máquina remota (Servidor SSH) y luego la conexión se reenvía a otro puerto de la máquina de destino.

El cliente SSH verifica la conexión en un puerto específico y cuando recibe una solicitud de conexión, canaliza la conexión a un puerto específico en un servidor SSH remoto. Y luego el servidor se conecta a una máquina de destino diferente en el puerto configurado.

Se utiliza principalmente para conectarse a un servicio remoto en una red interna desde el exterior como una base de datos. También se utiliza para compartir archivos de forma remota a través de Internet y a través de servidores de salto.

¿Cómo configurar el reenvío de puerto local?

Tomemos un ejemplo de que está restringido por un firewall para acceder a una aplicación que se ejecuta en un servidor remoto en el puerto 3000. Ahora, reenviaremos un puerto local (es decir, 8080) para acceder a la aplicación localmente.

El -L se utiliza para configurar el reenvío de puertos locales

ssh [email protected] -L 8080:server1.example.com:3000 

O

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [[email protected]]SSH_SERVER
  • [LOCAL_IP:]LOCAL_PORT – El número de puerto y la dirección IP de la máquina local. Se puede utilizar cualquier número de puerto superior a 1024.
  • DESTINO:DESTINATION_PORT – El puerto y la dirección IP o el nombre de host de la máquina de destino.
  • [[correo electrónico protegido]]SERVER_IP – El nombre de usuario y la dirección IP del servidor del usuario ssh remoto.

El -f le indicará a ssh que se ejecute en segundo plano.

ssh -f -N [email protected] -L 8080:server1.example.com:3000

Y el -N le indicará que no ejecute un comando remoto. [no obtendrá un caparazón en este caso.]

ssh -N [email protected] -L 8080:server1.example.com:3000

Ahora, abra un navegador en su máquina local y simplemente puede usar localhost:8080 para acceder a la aplicación remota en lugar de acceder usando la dirección server.example.com:3000.

Reenvío remoto

El reenvío de puertos remotos es lo opuesto al reenvío de puertos locales y le permite conectarse a la computadora local desde su máquina remota. SSH no admite el reenvío de puertos remotos de forma predeterminada. Por lo tanto, debe habilitarlo en su archivo de configuración ssh.

Abra el archivo de configuración ssh en modo de edición

sudo vim /etc/ssh/sshd_config 

Busque GatewayPorts y configúrelo como sí.

GatewayPorts yes

Guarde los cambios, salga del modo de edición y reinicie su servidor.

sudo systemctl restart sshd

Ahora que ha habilitado el reenvío de puertos remotos. En SSH abierto, usamos el comando -R para configurar el reenvío de puertos remotos.

ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT [[email protected]]SSH_SERVER
  • [REMOTO:]REMOTE_PORT – La dirección IP y el número de puerto del servidor SSH remoto.
  • DESTINO:DESTINATION_PORT – El nombre de host y la dirección IP de la máquina de destino.
  • [[correo electrónico protegido]]SERVER_IP – El nombre de usuario SSH remoto y la dirección IP.

Por ejemplo:

ssh -R 8080:127.0.0.1:3000 -N -f [email protected]ote.host 

El servidor SSH escuchará en el puerto 8080 y canalizará todo el tráfico del 8080 al puerto 3000 en su máquina local

O bien, puede usar el siguiente comando para reenviar el puerto 5000 en la máquina remota al puerto 3000 en la máquina local.

ssh -f -N [email protected] -R 5000:localhost:3000 

El reenvío de puertos remotos se utiliza principalmente para dar acceso a alguien externo a un servicio interno.

Reenvío dinámico de puertos

El tercer y último tipo de reenvío de puertos es el reenvío de puertos dinámico. El reenvío de puertos locales y remotos le permite hacer túneles y comunicarse con un solo puerto, pero en el reenvío de puertos dinámicos puede ejecutar y comunicarse con una variedad de puertos.

Crea un socket en la máquina local que funciona como un servidor proxy SOCKS o puede decir Configura su máquina local como un servidor proxy SOCKS y, de forma predeterminada, escucha en el puerto 1080. Cuando un servidor se conecta a este puerto, es reenviado a la máquina remota, luego se reenvía a la máquina dinámica en un puerto dinámico.

¿Qué son los CALCETINES?

Es un protocolo de Internet que define cómo una máquina cliente puede conectarse a un servidor a través de un proxy.

Podemos habilitar el reenvío de puertos dinámicos con la opción -D. Entendamos el reenvío de puertos con un ejemplo:

ssh -D [LOCAL_IP:]LOCAL_PORT [[email protected]]SSH_SERVER
  • [LOCAL_IP:]LOCAL_PORT – La dirección IP y el número de puerto de la máquina local.
  • [[correo electrónico protegido]]SERVER_IP – La dirección IP y el nombre de usuario del servidor remoto.

O este comando iniciará un proxy SOCKS y le permitirá conectarse al host remoto.

ssh -f -N -D 1080 [email protected] 

Conclusión

SSH Tunneling es una forma útil de transferir datos sin cifrar a través de un túnel cifrado. Hay tres opciones disponibles y puede elegir según sus necesidades.


Linux
  1. SSH a un puerto distinto del 22:cómo hacerlo (con ejemplos)

  2. Cómo cambiar el puerto SSH en Linux

  3. Cómo configurar claves SSH

  4. Cómo cambiar el puerto SSH en CentOS

  5. Cómo configurar claves SSH en Ubuntu 18.04

Cómo configurar el reenvío de puertos dinámicos SSH en Linux

Cómo cambiar el puerto SSH en Ubuntu

Cómo configurar SSH en CentOS y RHEL

Cómo cambiar el puerto SSH en CentOS

¿Cómo cambiar el puerto SSH en Centos 7.x?

¿Cómo cambiar el puerto SSH en Ubuntu?