Cómo utilizar el túnel SSH para acceder a servidores restringidos y navegar de forma segura

Cómo utilizar el túnel SSH para acceder a servidores restringidos y navegar de forma segura

Un cliente SSH se conecta a un servidor Secure Shell, lo que le permite ejecutar comandos de terminal como si estuviera sentado frente a otra computadora. Pero un cliente SSH también le permite «tunelizar» un puerto entre su sistema local y un servidor SSH remoto.

Hay tres tipos diferentes de tunelización SSH y todos se utilizan para diferentes propósitos. Cada uno implica el uso de un servidor SSH para redirigir el tráfico de un puerto de red a otro. El tráfico se envía a través de la conexión SSH encriptada, por lo que no se puede monitorear ni modificar en tránsito.

Puedes hacer esto con el ssh comando incluido en Linux, macOS y otros sistemas operativos similares a UNIX, y puede crear un archivo de configuración ssh para guardar su configuración. En Windows, que no incluye un comando ssh integrado, recomendamos la herramienta gratuita Masilla para conectarse a servidores SSH. También es compatible con la tunelización SSH.

Reenvío de puerto local: haga que los recursos remotos sean accesibles en su sistema local

El «reenvío de puerto local» le permite acceder a los recursos de la red local que no están expuestos a Internet. Por ejemplo, supongamos que desea acceder a un servidor de base de datos en su oficina desde su hogar. Por razones de seguridad, este servidor de base de datos solo está configurado para aceptar conexiones desde la red de la oficina local. Pero si tiene acceso a un servidor SSH en la oficina y este servidor SSH permite conexiones desde fuera de la red de la oficina, puede conectarse a este servidor SSH desde su casa y acceder al servidor de la base de datos como si estuviera en la oficina. Este suele ser el caso, porque es más fácil proteger un solo servidor SSH contra ataques que proteger una variedad de recursos de red diferentes.

Para hacer esto, establece una conexión SSH con el servidor SSH y le dice al cliente que reenvíe el tráfico desde un puerto específico en su PC local, por ejemplo, el puerto 1234, a la dirección del servidor de la base de datos y su puerto en la red de la oficina. Entonces, cuando intenta acceder al servidor de la base de datos en el puerto 1234 de su PC actual, «localhost», este tráfico se «tuneliza» automáticamente a través de la conexión SSH y se envía al servidor de la base de datos. El servidor SSH se encuentra en el medio, transfiriendo tráfico de un lado a otro. Puede utilizar cualquier línea de comandos o herramienta gráfica para acceder al servidor de la base de datos como si se estuviera ejecutando en su PC local.

Para utilizar la transferencia local, conéctese al servidor SSH normalmente, pero también proporcione -L argumento. La sintaxis es:

ssh -L local_port:remote_address:remote_port username@server.com

Por ejemplo, supongamos que el servidor de la base de datos de su oficina se encuentra en 192.168.1.111 en la red de la oficina. Tiene acceso al servidor SSH de la oficina en ssh.youroffice.com , y su cuenta de usuario en el servidor SSH es bob . En este caso, su pedido se verá así:

ssh -L 8888:192.168.1.111:1234 bob@ssh.youroffice.com

Después de ejecutar este comando, podrá acceder al servidor de la base de datos en el puerto 8888 en localhost. Entonces, si el servidor de la base de datos proporcionó acceso web, puede conectar https: // localhost: 8888 en su navegador web para acceder a él. Si tenía una herramienta de línea de comandos que necesitaba la dirección de red de una base de datos, apunte a localhost: 8888. Todo el tráfico enviado al puerto 8888 de su PC se enrutará a 192.168.1.111:1234 en la red de su oficina.

Es un poco más confuso si desea conectarse a una aplicación de servidor que se ejecuta en el mismo sistema que el servidor SSH. Por ejemplo, suponga que tiene un servidor SSH ejecutándose en el puerto 22 de su computadora de escritorio, pero también tiene un servidor de base de datos ejecutándose en el puerto 1234 en el mismo sistema en la misma dirección. Desea acceder al servidor de la base de datos desde su hogar, pero el sistema solo acepta conexiones SSH en el puerto 22 y su firewall no permite ninguna otra conexión externa.

En este caso, puede ejecutar un comando como el siguiente:

ssh -L 8888:localhost:1234 bob@ssh.youroffice.com

Cuando intente acceder al servidor de la base de datos en el puerto 8888 de su PC actual, el tráfico se enviará a través de la conexión SSH. Cuando llega al sistema que ejecuta el servidor SSH, el servidor SSH lo enviará al puerto 1234 en «localhost», que es la misma PC que ejecuta el servidor SSH. Entonces, «localhost» en el comando anterior significa «localhost» desde la perspectiva del servidor remoto.

Para hacer esto en la aplicación PuTTY en Windows, seleccione Conexión> SSH> Túneles. Seleccione la opción «Local». Para «Puerto de origen», ingrese el puerto local. Para «Destino», ingrese la dirección de destino y el puerto con el formato dirección_remota: puerto_remoto.

Por ejemplo, si desea configurar el mismo túnel SSH que el anterior, debe ingresar 8888 como puerto de origen y localhost:1234 como destino. Luego haga clic en «Agregar» y luego en «Abrir» para abrir la conexión SSH. También deberá ingresar la dirección y el puerto del servidor SSH en la pantalla principal de «Sesión» antes de conectarse, por supuesto.

Reenvío de puerto remoto: haga que los recursos locales sean accesibles en un sistema remoto

El reenvío de puerto remoto es lo opuesto al reenvío local y no se usa con tanta frecuencia. Le permite hacer que un recurso esté disponible en su PC local en el servidor SSH. Por ejemplo, supongamos que está ejecutando un servidor web en la PC local frente a la que está sentado. Pero su PC está detrás de un firewall que no permite el tráfico entrante al software del servidor.

Suponiendo que puede acceder a un servidor SSH remoto, puede conectarse a ese servidor SSH y usar el reenvío de puerto remoto. Su cliente SSH le pedirá al servidor que reenvíe un puerto específico, por ejemplo, el puerto 1234, en el servidor SSH a una dirección y puerto específicos en su PC o LAN actual. Cuando alguien accede al puerto 1234 en el servidor SSH, ese tráfico se «canalizará» automáticamente a través de la conexión SSH. Cualquiera que tenga acceso al servidor SSH podrá acceder al servidor web que se ejecuta en su PC. Efectivamente, es un medio de hacer un túnel a través de cortafuegos.

Para utilizar el reenvío remoto, utilice el ssh orden con el -R argumento. La sintaxis es básicamente la misma que con la transferencia local:

ssh -R remote_port:local_address:local_port username@server.com

Suponga que desea que una aplicación de servidor que escuche en el puerto 1234 de su PC local esté disponible en el puerto 8888 del servidor SSH remoto. La dirección del servidor SSH es ssh.youroffice.com y su nombre de usuario en el servidor SSH es bob. Ejecutaría el siguiente comando:

ssh -R 8888:localhost:1234 bob@ssh.youroffice.com

Entonces, alguien podría conectarse al servidor SSH en el puerto 8888 y esa conexión se canalizaría a la aplicación del servidor que se ejecuta en el puerto 1234 en la PC local desde la que realizó la conexión.

Para hacer esto en PuTTY en Windows, seleccione Conexión> SSH> Túneles. Seleccione la opción «Remoto». Para «Puerto de origen», ingrese el puerto remoto. Para «Destino», ingrese la dirección de destino y el puerto con el formato dirección_local: puerto_local.

Por ejemplo, si desea configurar el ejemplo anterior, debe ingresar 8888 como puerto de origen y localhost:1234 como destino. Luego haga clic en «Agregar» y luego en «Abrir» para abrir la conexión SSH. También deberá ingresar la dirección y el puerto del servidor SSH en la pantalla principal de «Sesión» antes de conectarse, por supuesto.

Luego, los usuarios podrían conectarse al puerto 8888 en el servidor SSH y su tráfico se canalizaría al puerto 1234 en su sistema local.

De forma predeterminada, el servidor SSH remoto solo escucha las conexiones del mismo host. En otras palabras, solo las personas del mismo sistema que el servidor SSH podrán conectarse. Esto es por razones de seguridad. Deberá activar la opción «GatewayPorts» en sshd_config en el servidor SSH remoto si desea anular este comportamiento.

Reenvío dinámico de puertos: utilice su servidor SSH como proxy

También hay un «reenvío de puerto dinámico», que funciona de la misma manera que un proxy o una VPN. El cliente SSH creará un proxy SOCKS que puede configurar qué aplicaciones usar. Todo el tráfico enviado a través del proxy se enviaría a través del servidor SSH. Esto es similar al reenvío local: toma el tráfico local enviado a un puerto específico en su PC y lo envía a través de la conexión SSH a una ubicación remota.

Por ejemplo, supongamos que está utilizando una red Wi-Fi pública. Quieres navegar de forma segura sin que te espíen. Si tiene acceso a un servidor SSH en casa, puede conectarse a él y usar el reenvío dinámico de puertos. El cliente SSH creará un proxy SOCKS en su PC. Todo el tráfico enviado a este proxy se enviará a través de la conexión al servidor SSH. Nadie que supervise la red Wi-Fi pública podrá supervisar su navegación o censurar los sitios web a los que pueda acceder. Desde la perspectiva de todos los sitios web que visita, será como sentarse frente a su PC en casa. También significa que puede usar este truco para acceder a sitios web exclusivos de EE. UU. Fuera de los EE. UU., Por supuesto, suponiendo que tenga acceso a un servidor SSH en los EE. UU.

Como otro ejemplo, es posible que desee acceder a una aplicación de servidor de medios que tenga en su red doméstica. Por razones de seguridad, solo puede tener un servidor SSH expuesto a Internet. No permite conexiones entrantes desde Internet a su aplicación de servidor de medios. Puede configurar el reenvío de puertos dinámico, configurar un navegador web para usar el proxy SOCKS y luego acceder a los servidores que se ejecutan en su red doméstica a través del navegador web como si estuviera sentado frente a su sistema SSH doméstico. Por ejemplo, si su servidor de medios está ubicado en el puerto 192.168.1.123 de su red doméstica, puede ingresar la dirección 192.168.1.123 en cualquier aplicación que utilice el proxy SOCKS y accedería al servidor de medios como si estuviera en su red doméstica.

Para usar la transferencia dinámica, ejecute el comando ssh con el -D argumento, como este:

ssh -D local_port username@server.com

Por ejemplo, supongamos que tiene acceso a un servidor SSH en ssh.yourhome.com y su nombre de usuario en el servidor SSH es bob . Desea utilizar el reenvío dinámico para abrir un proxy SOCKS en el puerto 8888 en la PC actual. Ejecutaría el siguiente comando:

ssh -D 8888 bob@ssh.yourhome.com

Luego, puede configurar un navegador web u otra aplicación para usar su dirección IP local (127.0.01) y el puerto 8888. Todo el tráfico de esa aplicación se redirigirá a través del túnel.

Para hacer esto en PuTTY en Windows, seleccione Conexión> SSH> Túneles. Seleccione la opción «Dinámico». Para «Puerto de origen», ingrese el puerto local.

Por ejemplo, si desea crear un proxy SOCKS en el puerto 8888, debe ingresar 8888 como puerto de origen. Luego haga clic en «Agregar» y luego en «Abrir» para abrir la conexión SSH. También deberá ingresar la dirección y el puerto del servidor SSH en la pantalla principal de «Sesión» antes de conectarse, por supuesto.

Luego, puede configurar una aplicación para acceder al proxy SOCKS en su PC local (es decir, la dirección IP 127.0.0.1, que apunta a su PC local) y especificar el puerto correcto.

Por ejemplo, puede configurar Firefox para usar el proxy SOCKS. Esto es especialmente útil porque Firefox puede tener su propia configuración de proxy y no necesita utilizar la configuración de proxy de todo el sistema. Firefox enviará su tráfico a través del túnel SSH, mientras que otras aplicaciones normalmente usarán su conexión a Internet.

Cuando hagas esto en Firefox, selecciona «Configuración manual de proxy», ingresa «127.0.0.1» en el cuadro de host SOCKS e ingresa el puerto dinámico en el cuadro «Puerto». Deje los cuadros Proxy HTTP, Proxy SSL y Proxy FTP en blanco.

El túnel permanecerá activo y abierto mientras la conexión de sesión SSH esté abierta. Cuando finalice su sesión SSH y se desconecte de un servidor, el túnel también se cerrará. Simplemente vuelva a conectarse con el comando apropiado (o las opciones apropiadas en PuTTY) para reabrir el túnel.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas