GNU/Linux >> Tutoriales Linux >  >> Linux

Tunelización y proxy SSH

Introducción:

SSH, también conocido como Secure Shell o Secure Socket Shell, es un protocolo de red que brinda a los usuarios, en particular a los administradores de sistemas, una forma segura de acceder a una computadora a través de una red no segura.

Secure Shell proporciona una fuerte autenticación de contraseña y autenticación de clave pública, así como comunicaciones de datos encriptados entre dos computadoras que se conectan a través de una red abierta, como Internet.

La tunelización SSH es un método para transportar datos de red arbitrarios a través de una conexión SSH cifrada. Se puede usar por numerosas razones, principalmente para agregar cifrado a aplicaciones heredadas, para usarse como red privada virtual y acceder a servicios de intranet a través de firewalls. También proporciona una forma de proteger el tráfico de datos de cualquier aplicación determinada mediante el reenvío de puertos, básicamente haciendo un túnel en cualquier puerto TCP/IP a través de SSH. Esto significa que el tráfico de datos de la aplicación se dirige para que fluya dentro de una conexión SSH cifrada para que no pueda ser espiado o interceptado mientras está en tránsito.

Requisitos previos:

  1. Servidor SSH escuchando conexiones SSH, (X11Forwarding debe estar habilitado, puede verificarlo en el archivo de configuración sshd)
  2. Cliente SSH para reenviar tráfico desde un puerto de escucha local, a través del servidor SSH, al servidor de aplicaciones
  3. Servidor de destino ofreciendo servicios (http, vnc, etc.)

El servidor SSH y el servidor de destino pueden estar en la misma máquina o en diferentes máquinas accesibles a través de la red. El siguiente diagrama muestra el servidor SSH y los servidores de aplicaciones están en una máquina diferente y están conectados a la red y la máquina cliente accede al servidor SSH a través de Internet.

Vamos a crear una configuración en la que el cliente quiera conectarse a un servicio que no use cifrado de forma nativa, pero que no quiera que el tráfico se envíe sin cifrar a través de Internet. El entorno para este escenario es el siguiente.

Servidor SSH:SSH está escuchando en el puerto 22 en la dirección IP 192.168.1.1

Servidor de destino:el servicio VNC está escuchando en el puerto 5900 en la dirección IP 192.168.1.2

Máquina cliente:clientes SSH y VNC instalados

Creación de túneles con PuTTY :

  1. Abra la interfaz de usuario del cliente PuTTY
  2. En la ventana Sesión, en "Opciones básicas para su sesión de PuTTY", ingrese la dirección IP y el puerto de escucha para el servidor SSH como se puede ver en la siguiente imagen:

3. En el panel izquierdo, seleccione Conexión->SSH->Túnel

4. En "Opciones que controlan el reenvío de puertos SSH", ingrese la siguiente configuración.

5. Puerto de origen:elija un puerto arbitrario que no esté en uso en su cliente; el ejemplo usa 1590.

6. Destino:dirección IP y puerto de escucha del servidor de destino, 192.168.1.2:5900.

7. Deje los botones de opción "Local" y "Auto" seleccionados.

8. Haga clic en "Agregar" para guardar esta configuración.

9. Haga clic en "Abrir" para crear el túnel SSH. Introduzca su nombre de usuario y contraseña para el servidor SSH cuando se le solicite.

Crear un túnel SSH usando OPENSSH:

El túnel SSH se puede crear usando el siguiente comando usando el cliente OPENSSH.

ssh -L 1590:192.168.1.2:5900 192.168.1.1

Aquí -L 1590 indica el puerto local

192.168.1.2:5900 indica la IP y el puerto del servidor de destino

192.168.1.1 Indica la dirección IP del servidor SSH

Después de ingresar el comando, inicie sesión con sus credenciales en el servidor SSH.

Conectar el servicio VNC usando SSH Tunnel :

Después de iniciar sesión con éxito en el servidor SSH, configure su cliente VNC para iniciar sesión en el servidor de destino mediante el puerto local.

Use la dirección local Loopback 127.0.0.1 y el puerto 1590

El ejemplo mostró la tunelización para el puerto VNC, se puede usar la misma configuración para acceder a cualquier servicio cambiando los puertos y las IP.

Tunelización inversa SSH :

La tunelización inversa es más o menos lo mismo, pero en este caso el servidor de destino puede usar el túnel para acceder a los servicios alojados en la red de origen o en la propia máquina.

Consideremos un ejemplo,

Suponga que tiene un servidor en una red remota detrás de un firewall y solo SSH (puerto 22) está abierto desde la red remota a su red, pero desea acceder a un servicio http que se ejecuta en el puerto 80 alojado en su caja de Linux.

Para escenarios como este, la tunelización inversa es útil, veamos a continuación cómo hacerlo de forma segura y sencilla.

Use el siguiente comando en su Linux Box donde está alojado su servicio http...

ssh -R 180:localhost:80 [email protected]

Donde -R 180:localhost es el puerto remoto y la IP/nombre de host (será utilizado por el servidor remoto para acceder al servicio http)

Y [email protected] es la IP y el nombre de usuario del servidor remoto desde donde querrás acceder a tu servicio web

Después de ingresar el comando de inicio de sesión con las credenciales,

Ahora puede acceder a su servidor web desde el servidor remoto.

Puede haber muchos escenarios en los que SSH Tunneling y Reverse Tunneling también se pueden usar para acceder a lo inaccesible 🙂 con la facilidad y seguridad de ssh detrás.


Linux
  1. Cómo descargar y cargar archivos a través de SSH

  2. Cómo instalar y configurar el servidor sftp en Ubuntu 20.04

  3. ¿Cómo enviar Ssh a un servidor usando otro servidor?

  4. Solucionar problemas de SSH

  5. vncserver -localhost y tunelización ssh

ScanSSH:servidor SSH rápido y escáner proxy abierto

Servidor SSH

Cómo instalar y habilitar el servidor SSH en Debian 10

Cómo generar y usar una clave SSH usando PuTTY

Cómo SSH al servidor a través de Linux

Problemas comunes del servidor y soluciones