SSH es un protocolo seguro que se puede utilizar para hacer túneles a través de cortafuegos. Al usar SSH , podemos conectarnos a un servidor remoto y canalizar nuestro tráfico a través de la conexión SSH. Los cortafuegos están diseñados para proteger las redes del acceso no autorizado, pero un cortafuegos también puede bloquear el tráfico legítimo si no se configura correctamente. Esto puede ser un problema cuando necesitamos permitir el acceso a una aplicación o servicio específico. Una forma de solucionar este problema es eludir el firewall mediante ssh.
Hay algunas formas de eludir los cortafuegos mediante SSH:
- Túneles SSH : esta es la forma más común de eludir los cortafuegos. Los túneles SSH crean una conexión segura entre dos hosts a través de una red insegura. Esta conexión se puede utilizar para canalizar el tráfico a través del cortafuegos.
- Reenvío de puertos SSH : esta es una forma menos común de eludir los firewalls, pero puede ser útil en algunos casos. El reenvío de puertos SSH permite que el tráfico se reenvíe desde un puerto en el servidor a otro puerto en el cliente. Esto se puede usar para eludir los cortafuegos que bloquean el tráfico en un puerto específico.
- SSH SOCKS Proxy : esta es otra forma menos común de eludir los firewalls. El proxy SSH SOCKS permite reenviar el tráfico a través de la conexión SSH. Esto se puede usar para eludir los cortafuegos que bloquean el tráfico en un puerto específico.
Paso para realizar túneles SSH:
Para eludir un cortafuegos usando túneles SSH, necesitaremos configurar un servidor SSH en una máquina que esté fuera del cortafuegos. Luego necesitaremos conectarnos a este servidor usando un cliente SSH y reenviar el tráfico desde la máquina cliente a la máquina servidor. Por ejemplo, digamos que queremos eludir un firewall que bloquea todo el tráfico al puerto 80. Podríamos configurar un servidor SSH en una máquina que tiene el puerto 80 abierto y luego conectarnos a este servidor usando un cliente SSH. Una vez que estemos conectados, podríamos reenviar el tráfico desde la máquina local al puerto 80 en la máquina del servidor. Esto nos permitiría eludir el firewall y acceder a sitios web que normalmente están bloqueados.
Ahora vemos la configuración de un servidor SSH en una máquina que está fuera del firewall.
Paso 1: Instale el software del servidor SSH en la máquina.
- En Windows 11:
- Vaya a Configuración > Aplicaciones > Funciones opcionales y haga clic en Ver funciones
- Localice la función «Servidor OpenSSH», selecciónela > marque la casilla de verificación, haga clic en Siguiente y luego haga clic en Instalar.
- En Windows 10:
- Vaya a Configuración > Aplicaciones > Aplicaciones y funciones > Funciones opcionales y haga clic en Agregar una función
- Localice la función «Servidor OpenSSH», expanda la función> marque la casilla de verificación y seleccione Instalación.
Paso 2: Configure el servidor SSH para escuchar en el puerto 80 y permitir el tráfico al puerto 80 a través del firewall.
En Windows:
- Vaya a Panel de control > Sistema y seguridad > Firewall1 de Windows Defender > Configuración avanzada > Reglas de entrada y agregue una nueva regla para el puerto 80.
- O ejecute el siguiente comando de PowerShell como administrador
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 80 -Program "C:\Windows\System32\OpenSSH\sshd.exe"
Paso 3: Inicie el servidor SSH
- En Windows: vaya a Panel de control > Sistema y seguridad > Herramientas administrativas y abra Servicios. Localice el servicio OpenSSH SSH Server y haga clic en Iniciar el servicio.
- Una vez que el servidor SSH está en funcionamiento y accesible de forma remota, el siguiente paso es descargar un cliente SSH en la máquina de destino.
Paso para conectar el servidor SSH y reenviar tráfico:
Paso 1: Instale el software del cliente SSH en la máquina de destino: el cliente OpenSSH se incluye en las distribuciones de Ubuntu Linux de forma predeterminada. Hay algunos clientes SSH gratuitos disponibles para la plataforma Windows. El mejor es Putty, que está disponible en línea en su sitio.
Paso 2: Conéctese al servidor SSH y reenvíe el tráfico desde la máquina de destino al puerto 80 en la máquina del servidor. Después de iniciar Putty, complete los siguientes detalles de configuración:
In the “Host Name” field, type the publicly accessible IP of the SSH server Navigate to Connection > SSH > Tunnels Add a new forwarded port: Source Port = Target Port for Reverse Tunnelling Destination = 127.0.0.1:[Target Port] Direction = Remote Click Add Click Open to Start the SSH session
En este punto, el puerto de destino se asignará al servidor SSH remoto de destino. Esto significa que los clientes de la red remota podrán acceder a la PC de destino como si estuviera en la red remota. Básicamente, esto crea un túnel privado entre dos puntos finales remotos, lo que permite la administración remota de una máquina con firewall.
Realice el reenvío de puertos SSH:
Suponiendo que tenemos acceso SSH a un servidor remoto, podemos usar el reenvío de puertos SSH para evitar los firewalls. Por ejemplo, supongamos que queremos acceder a un sitio web que está bloqueado por un firewall. Podemos usar el reenvío de puertos SSH para canalizar el tráfico desde la máquina local al servidor remoto, y luego desde el servidor remoto al sitio web.
Para hacer esto, primero usaríamos SSH en el servidor remoto. Luego, usaríamos el siguiente comando para reenviar el tráfico desde la máquina local (puerto, 8080) al servidor remoto (puerto 80):
ssh -L 8080:localhost:80 user@remote.server.com
Ahora, podemos acceder al sitio web yendo a http://localhost:8080 en el navegador web. El tráfico se canalizará a través de la conexión SSH y el servidor remoto actuará como un proxy.
También podemos usar el reenvío de puertos SSH para canalizar el tráfico desde el servidor remoto a la máquina local. Por ejemplo, supongamos que queremos acceder a una base de datos a la que solo se puede acceder desde el servidor remoto. Podemos usar el reenvío de puertos SSH para canalizar el tráfico desde el servidor remoto a la máquina local (puerto 3306) y luego conectarnos a la base de datos usando la máquina local.
Para hacer esto, primero usaríamos SSH en el servidor remoto. Luego, usaríamos el siguiente comando para reenviar el tráfico desde el servidor remoto (puerto 3306) a la máquina local (puerto 3306):
ssh -R 3306:localhost:3306 user@remote.server.com
Ahora, podemos conectarnos a la base de datos usando la máquina local. El tráfico se canalizará a través de la conexión SSH y la máquina local actuará como un proxy.
Realice el proxy SSH SOCKS:
Suponiendo que tenemos un servidor SSH ejecutándose en una máquina remota a la que podemos acceder:
Paso 1 : en la máquina local, abra una terminal y ejecute el siguiente comando:
ssh -D 9999 -f -C -q -N username@remotemachine
Paso 2: Esto establecerá un proxy SOCKS en el puerto 9999 de la máquina local.
Paso 3 : Para usar el proxy, configure el navegador u otra aplicación para usar un proxy SOCKS en localhost:9999.
Paso 4: navegue por la web, todo el tráfico se canalizará a través de la conexión SSH.