LinuxParty
¿Qué es un Túnel SSH?
Un túnel SSH permite redirigir el tráfico de red a través de una conexión SSH encriptada. Esto aumenta la seguridad y privacidad entre el cliente y el servidor. Los túneles SSH son útiles para acceder a servicios de red de forma segura, evitar restricciones de red y conectarse a redes privadas.
Tipos de Túneles SSH
- Túnel Local: Redirige el tráfico de un puerto local al servidor SSH.
- Túnel Remoto: Redirige el tráfico desde un puerto en el servidor SSH hacia el cliente.
- Túnel Dinámico (SOCKS Proxy): Actúa como un proxy que permite redirigir tráfico de múltiples aplicaciones.
1. Túnel SSH Local
Un túnel SSH local redirige el tráfico desde el puerto local del equipo cliente a un servidor remoto, pasando por el servidor SSH. Esto es ideal si, por ejemplo, quieres acceder a un servicio en un servidor que solo es accesible desde la red interna a la que se conecta el servidor SSH.
ssh -L <mi_puerto_local>:<host_destino>:<puerto_remoto> usuario@servidor_SSH
ssh -L NUESTRO_PUERTO:IP_MAQUINA_DESTINO:PUERTO_REMOTO-A-capturar USUARIO@PASARELA -N"
Ejemplo1
Conectar a una base de datos MySQL en un servidor remoto:
Imaginemos que tienes una base de datos MySQL en un servidor 192.168.1.34 (puerto 3306) y solo es accesible desde "mi_servidor.com". Con este túnel, puedes acceder a MySQL desde tu máquina local como si estuvieras en la red de "mi_servidor.com".
ssh -L 3307:192.168.1.34:3306 usuario@mi_servidor.com
Luego, puedes conectarte a localhost:3307 en tu máquina local, para acceder a la base de datos de forma segura.
Ejemplo2
+----------+ |Tu máquina| |localhost |----+ +----------+ | | +----------+ |GATEWAY / | |FIREWALL |----+ +----------+ | | +----------+ |MÁQUINA DE| | DESTINO |192.168.125.35 +----------+
+-------
Si tu accedes desde tu LOCALHOST a la máquina remota 192.168.125.35 (por ejemplo, a través de un gateway / firewall) y desde esa máquina (gateway / firewall) tienes que acceder a otra, el tunel sería.. El parámetro "-N", convertirá la conexión en una conexión permanente, no se te olvide ponerla.
sudo ssh -L 443:192.168.125.35:443 user-remoto@gateway-firewall -N
Te preguntará el password de user-remoto@gateway-firewal, y después accedes a la máquina de destino, suponiendo que por ejemplo sea una máquina se se administra desde un navegador web, a través por puerto seguro 443, sería, como arriba se indica y accedes desde tu navegador con https://localhost
En este momento, podemos usar nuestro navegador (local) en "https://localhost" para acceder a la máquina remota.
Ejemplo3
Capturamos el puerto 22, en nuestro puerto local 1111 y mandamos un archivo a través de maquina-remota a la máquina 192.168.187.24:
sudo ssh -L 1111:192.168.187.24:22 usuario-remoto@maquina-remota -N
(En éste momento te preguntará la clave del usuario-remoto@maquina-remota)
Hay que recordar, que la máquina 192.168.187.24, está detrás de: maquina-remota
scp -P 1111 archivo.txt usuario-192.168.187.24@localhost:/var/backups/temporal
(En éste momento, te preguntará la clave de usuario-192.168.187.24@192.168.187.24)
Y así mandaremos el archivo.txt directamente."
2. Túnel SSH Remoto
Un túnel SSH remoto permite redirigir el tráfico de un puerto en el servidor SSH al cliente SSH. Esto es útil si deseas exponer un servicio local hacia el servidor SSH y cualquier usuario en su red.
ssh -R <mi_puerto_remoto>:<host_destino>:<puerto_remoto> usuario@servidor_SSH
Ejemplo
Exponer un servidor web desde la máquina local al servidor SSH:
Supón que tienes un servidor web en tu máquina local (localhost:8080) y deseas que "mi_servidor.com" lo redireccione al puerto 9090 para que otros usuarios puedan acceder.
ssh -R 9090:localhost:8080 usuario@mi_servidor.com
Cualquier persona en "mi_servidor.com" puede acceder al servicio de tu máquina en localhost:9090.
sudo ssh -L 443:192.168.125.35:443 user-remoto@remota-machine -N
En este momento, podemos usar nuestro navegador (local) en "https://192.168.1.125.35" para acceder a la máquina remota.
3. Túnel Dinámico (SOCKS Proxy)
Permite utilizar un puerto en el cliente como proxy SOCKS para redirigir tráfico de múltiples aplicaciones.
ssh -D <puerto_proxy> usuario@servidor_SSH
Ejemplo
Redirigir el tráfico de navegación a través de un servidor SSH:
ssh -D 1080 usuario@mi_servidor.com
Opciones Avanzadas de SSH para Túneles
Ejecutar SSH en segundo plano con -f y mantener la conexión activa:
ssh -f -L 3307:10.0.0.10:3306 usuario@mi_servidor.com -N
Configurar el archivo SSH para mantener la conexión activa
Editar el archivo
sudo vi /etc/ssh/sshd_config
Añadir y editar las siguientes opciones
GatewayPorts yes
Ejemplo Práctico: Acceso a un Servidor de Base de Datos con Túneles Combinados
Crea un túnel SSH local para conectar una aplicación de base de datos local a un servidor remoto.
Conclusión
Configurar túneles SSH en Linux es esencial para un acceso seguro a servicios remotos y protección de datos, con múltiples aplicaciones prácticas para redes privadas.
Otros artículos que te pueden interesar.:
1. Tunelización SSH con Autossh
-
Artículos
- Cómo crear un túnel SSH en Linux
- Cómo configurar el firewall UFW en Ubuntu en 5 minutos
- Linux Lite acaba de incorporar una útil función de inteligencia artificial para el escritorio, y es más sutil de lo que cree
- Cómo instalar Linux en una unidad USB y ejecutarlo en cualquier PC
- Phoca Desktop System Plugin 4.0.5 publicado
- Herramientas de IA para Traducciones Precisas y Naturales: Cómo Optimizar el Proceso
- 6 características que desearía que MacOS copiara de Linux
- Malware en Android: VPN y Apps Peligrosas en Play Store
- Probar el micrófono en Linux usando terminal o shell
- ¿Qué es peor que atrasar el reloj una hora? El horario de verano permanente
- Nueva definición de IA de código abierto criticada por no abrir datos de entrenamiento
- Cómo monitorizar MySQL / MariaDB con Netdata
- Disponible ONLYOFFICE Docs 8.2 con edición colaborativa de PDF, interfaz renovada, rendimiento optimizado y más
- Por qué Microsoft Excel no morirá
- El futuro de Halo se está construyendo con Unreal Engine 5