Saltar al contenido

Cómo acceder a servidores restringidos y explorarlos de forma segura mediante la tunelización SSH

El cliente SSH se conecta al servidor Secure Shell. Esto le permite ejecutar comandos de terminal como si estuviera sentado frente a otra computadora. Sin embargo, también puede utilizar un cliente SSH para «tunelizar» los puertos entre su sistema local y un servidor SSH remoto.

Hay tres tipos diferentes de tunelización SSH, todos los cuales 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 una conexión SSH encriptada y no se puede monitorear ni modificar en tránsito.

Puedes hacerlo ssh Comandos incluidos en Linux, macOS y otros sistemas operativos similares a UNIX.Se recomiendan herramientas gratuitas para Windows, que no incluyen el comando ssh integrado masilla Conéctese al servidor SSH. También es compatible con la tunelización SSH.

Reenvío de puerto local: permite que los sistemas locales accedan a recursos remotos

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, suponga que accede al servidor de la base de datos de su oficina desde su casa. Por razones de seguridad, el servidor de la base de datos está configurado para aceptar conexiones solo desde la red de la oficina local. Sin embargo, si tiene acceso al servidor SSH de su oficina y ese servidor SSH permite conexiones desde fuera de la red de su oficina, puede conectarse a ese servidor SSH desde su casa y acceder al servidor de la base de datos como si estuviera en la oficina. Esto es común porque es más fácil proteger un solo servidor SSH de ataques que proteger una variedad de recursos de red diferentes.

Para hacer esto, indique al cliente que establezca una conexión SSH con el servidor SSH y reenvíe el tráfico desde un puerto específico en la PC local (como el puerto 1234) a la dirección del servidor de la base de datos y un puerto en la red de la oficina. Por lo tanto, si intenta acceder al servidor de la base de datos en el puerto 1234 de su PC actual «localhost», el tráfico se «tunelizará» automáticamente a través de una conexión SSH y se enviará al servidor de la base de datos. El servidor SSH tiene una ubicación central y reenvía el 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 el reenvío local, conéctese al servidor SSH como de costumbre, pero -L argumento. La sintaxis es la siguiente:

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

Por ejemplo, suponga que el servidor de base de datos de su oficina está en la red de la oficina en 192.168.1.111. Puede acceder al servidor SSH de su oficina en: ssh.youroffice.com , Cuenta de usuario del servidor SSH bob .. En ese caso, el comando sería:

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

La ejecución de ese comando le permitirá acceder al servidor de la base de datos en el puerto localhost 8888. Por lo tanto, si su servidor de base de datos proporciona acceso web, puede acceder conectando http: // localhost: 8888 a su navegador web. Si tiene una herramienta de línea de comandos que requiere la dirección de red de su base de datos, especifique localhost: 8888. Todo el tráfico enviado al puerto 8888 de la PC se canaliza a 192.168.1.111:1234 en la red de la oficina.

Es un poco más confuso cuando se conecta a una aplicación de servidor que se ejecuta en el mismo sistema que el servidor SSH. Por ejemplo, suponga que está ejecutando un servidor SSH en el puerto 22 de su computadora de oficina, pero está ejecutando un servidor de base de datos en el puerto 1234 de la misma dirección en el mismo sistema. Quiero acceder al servidor de la base de datos desde casa, pero el sistema solo acepta conexiones SSH en el puerto 22 y su firewall no permite otras conexiones externas.

En este caso, puede ejecutar un comando similar al siguiente:

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

Cuando intenta acceder al servidor de la base de datos en el puerto 8888 de su PC actual, el tráfico se envía a través de una conexión SSH. Al llegar al sistema que ejecuta el servidor SSH, el servidor SSH envía al puerto 1234 en «localhost». Esta es la misma PC que ejecuta el servidor SSH. Por lo tanto, «localhost» en el comando anterior significa «localhost» desde la perspectiva del servidor remoto.

Para hacer esto con una aplicación de Windows PuTTY,[接続]>[SSH]>[トンネル]Escoger. Seleccione la opción Local. En Puerto de origen, ingrese el puerto local. En Destino, ingrese la dirección y el puerto de destino con el formato dirección_remota: puerto_remoto.

Por ejemplo, para configurar el mismo túnel SSH que el anterior, ingrese: 8888 Como puerto de origen localhost:1234 Como destino. Luego haga clic en Agregar y luego en Abrir para abrir la conexión SSH. Por supuesto, antes de que pueda conectarse, debe ingresar la dirección y el puerto del servidor SSH en la pantalla principal de Sesión.

Reenvío de puerto remoto: permite que los sistemas remotos accedan a los recursos locales.

El «reenvío de puerto remoto» es lo opuesto al reenvío local y no se usa con mucha frecuencia. Esto permite que los recursos de su PC local estén disponibles para el servidor SSH. Por ejemplo, suponga que está ejecutando un servidor web en una PC local frente a usted. Sin embargo, la PC está detrás de un firewall que no permite el tráfico entrante al software del servidor.

Suponiendo que tenga acceso a un servidor SSH remoto, puede conectarse a ese servidor SSH y usar el reenvío de puerto remoto. El cliente SSH le dice al servidor que reenvíe un puerto específico en el servidor SSH (por ejemplo, el puerto 1234) a una dirección y puerto específicos en su PC actual o red local. Cuando alguien accede al puerto 1234 en un servidor SSH, ese tráfico se «tuneliza» automáticamente a través de una conexión SSH. Cualquiera que tenga acceso al servidor SSH puede acceder al servidor web que se ejecuta en su PC. Esta es efectivamente una forma de tunelizar su firewall.

Para utilizar la transferencia remota ssh Comando con -R argumento. La sintaxis es similar a la del reenvío 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 de un servidor SSH remoto. La dirección del servidor SSH es ssh.youroffice.com Nombre de usuario del servidor SSH Beto.. Ejecute el siguiente comando:

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

Luego, cuando alguien se conecta al servidor SSH en el puerto 8888, la conexión se canaliza a la aplicación del servidor que se ejecuta en el puerto 1234 en la PC local que estableció la conexión.

Para hacer esto con PuTTY en Windows,[接続]>[SSH]>[トンネル]Escoger. Seleccione la opción Remoto. Para Puerto de origen, ingrese el puerto remoto. En Destino, ingrese la dirección y el puerto de destino en el formato dirección_local: puerto_local.

Por ejemplo, para establecer el ejemplo anterior, ingrese: 8888 Como puerto de origen localhost:1234 Como destino. Luego haga clic en Agregar y luego en Abrir para abrir la conexión SSH. Por supuesto, antes de que pueda conectarse, debe ingresar la dirección y el puerto del servidor SSH en la pantalla principal de Sesión.

Luego, las personas pueden conectarse al puerto 8888 en el servidor SSH y el tráfico se canaliza al puerto 1234 en el sistema local.

De forma predeterminada, el servidor SSH remoto solo escucha las conexiones del mismo host. Es decir, solo los usuarios del mismo sistema que el servidor SSH pueden conectarse. Esto es por razones de seguridad.La opción «Puertos de puerta de enlace» debe estar habilitada en sshd_config Si desea anular este comportamiento, use un servidor SSH remoto.

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

Relación: ¿Cuál es la diferencia entre una VPN y un proxy?

También existe un «reenvío dinámico de puertos» que funciona como un proxy o una VPN. El cliente SSH crea un proxy SOCKS que le permite configurar su aplicación. Todo el tráfico enviado a través del proxy se envía a través del servidor SSH. Esto es similar a una transferencia local. Captura el tráfico local enviado a un puerto específico de su PC y lo envía a una ubicación remota a través de una conexión SSH.

Relación: Por qué es peligroso usar una red Wi-Fi pública, incluso al acceder a sitios web encriptados

Por ejemplo, suponga que está utilizando una red Wi-Fi pública. Quiero navegar de forma segura sin que me espíen. Si puede acceder al servidor SSH en casa, puede conectarse al servidor SSH y utilizar el reenvío de puertos dinámico. El cliente SSH crea un proxy SOCKS en su PC. Todo el tráfico enviado a ese proxy se envía a través de una conexión de servidor SSH. Las personas que monitorean las redes públicas de Wi-Fi no pueden monitorear la navegación ni censurar sitios web accesibles. Desde el sitio web que visita, parece que está sentado frente a la PC de su hogar. Esto también significa que puede usar este truco para acceder a sitios web exclusivos de EE. UU. Cuando se encuentre fuera de los Estados Unidos. Por supuesto, suponga que puede acceder a un servidor SSH en los Estados Unidos.

Como otro ejemplo, es posible que desee acceder a una aplicación de servidor de medios en su red doméstica. Por razones de seguridad, solo el servidor SSH puede estar expuesto a Internet. No permita conexiones entrantes de Internet a aplicaciones de servidor de medios. Ha configurado el reenvío de puerto dinámico, configurado su navegador web para usar un proxy SOCKS y luego se está ejecutando en su red doméstica a través de su navegador web como si estuviera sentado frente a su sistema SSH doméstico. Puede acceder al servidor. Por ejemplo, si su servidor de medios está en el puerto 192.168.1.123 en su red doméstica, puede conectarse a la dirección. 192.168.1.123 Acceder a cualquier aplicación que utilice un proxy SOCKS le permite acceder al servidor de medios como si estuviera en su red doméstica.

Para usar el reenvío dinámico, ejecute el comando ssh con el siguiente comando: -D Argumentos, así:

ssh -D local_port username@server.com

Por ejemplo, suponga que puede acceder al servidor SSH en la siguiente ubicación: ssh.yourhome.com Nombre de usuario del servidor SSH bob .. Utilice el reenvío dinámico para abrir un proxy SOCKS en el puerto 8888 de su PC actual. Ejecute el siguiente comando:

ssh -D 8888 bob@ssh.yourhome.com

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

Para hacer esto con PuTTY en Windows,[接続]>[SSH]>[トンネル]Escoger. Seleccione la opción Dinámica. En Puerto de origen, ingrese el puerto local.

Por ejemplo, para crear un proxy SOCKS en el puerto 8888, ingrese: 8888 Como puerto de origen. Luego haga clic en Agregar y luego en Abrir para abrir la conexión SSH. Por supuesto, antes de que pueda conectarse, debe ingresar la dirección y el puerto del servidor SSH en la pantalla principal de Sesión.

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

Relación: Cómo configurar un servidor proxy en Firefox

Por ejemplo, puede configurar Firefox para usar un proxy SOCKS. Esto es especialmente útil porque Firefox puede tener su propia configuración de proxy y no es necesario utilizar la configuración de proxy de todo el sistema. Firefox envía tráfico a través de un túnel SSH, pero otras aplicaciones utilizan una conexión a Internet como de costumbre.

Si desea hacer esto en Firefox, seleccione Configuración manual de proxy, escriba 127.0.0.1 en el cuadro de host SOCKS y escriba el puerto dinámico en el cuadro Puerto.[HTTPプロキシ],[SSLプロキシ],y[FTPプロキシ]Deje la caja vacía.

El túnel permanece activo y abierto mientras la conexión de sesión SSH esté abierta. Cuando finaliza la sesión SSH y se desconecta del servidor, el túnel también se cierra. Puede volver a abrir el túnel simplemente reconectándose con el comando apropiado (o la opción apropiada en PuTTY).