Navegar a través de un servidor como proxy utilizando un puente SSH y un cliente GNU/Linux

Introducción.

SSH es uno de los protocolos mas interesantes, con él se pueden hacer múltiples cosas muy útiles y flexibles.  En este caso voy a describir el proceso de creación de un túnel SSH para acceder a Internet a través de un servidor que actúe como proxy.

Esto es muy útil cuando se pertenece a una red LAN que tiene un acceso limitado o nulo a la red WAN pero es posible acceder a servidores sin restricciones.  En este caso se crea un túnel entre el cliente (LAN) y el servidor (LAN/WAN) y se le indica al cliente que enrrute su tráfico WAN a través de esta conexión.

Requerimientos.

  • Un equipo en la red LAN con GNU/Linux.  Igual se puede implementar con Putty para Windows.
  • Un servidor con acceso a la red WAN que puede ser visto desde la red LAN y que cuenta con el servicio de SSH (versión 2).
  • Una cuenta de usuario para el acceso al servidor a través de SSH.

Procedimiento.

Establecer el túnel.

En el cliente, es decir el equipo en la red LAN que desea acceder a la WAN, crear un túnel hacia el servidor a través de un puerto local (en este caso, el 4711).

$ ssh -ND 4711 usuario@servidor

Por obvias razones, para establecer el túnel es necesario contar con la contraseña asociada al usuario@servidor.

La descripción de los parámetros utilizados por ssh para crear el túnel son los siguientes.

-D [bind_address:]port
Specifies a local “dynamic” application-level port forwarding.
This works by allocating a socket to listen to port on the local
side, optionally bound to the specified bind_address.  Whenever a
connection is made to this port, the connection is forwarded over
the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine.  Currently
the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
as a SOCKS server.
Only root can forward privileged ports.
Dynamic port forwardings can also be specified in the configura‐
tion file.

-N Do not execute a remote command.  This is useful for just for‐
warding ports
(protocol version 2 only).

Configurar el navegador para utilizar al túnel para acceder al proxy.

Acceder a la configuración de Firefox a través de los menúes Edit > Preferences.

Elegir la sección Advanced (parte superior), la pestaña Network y presione el botón Settings.

Configuración de red de Firefox

Seleccione la opción de Manual proxy configuration y especifique la información para el SOCKS Host.  Para este caso el host será localhost (el equipo local donde se creó el puente) y el puerto será el 4711 (el mismo utilizado durante la creación del túnel).

Después de aceptados los cambios deberá ser posible navegar a través de la red WAN utilizando Firefox y utilizando al servidor como proxy.  Para verificar esto, acceda a un sitio como http://whatismyipaddress.com/ y verifique la dirección IP reportada, deberá ser la misma del servidor.

Esta configuración sólo aplica para Firefox así que no afecta la navegación de las demás aplicaciones ni del sistema operativo.

Configurar a GNOME para utilizar al túnel para acceder al proxy.

Configurar el proxy desde la administración del sistema de ventanas tiene un alcance mas profundo, incluyendo a las aplicaciones que utilizan sus valores como predeterminados e incluyendo al sistema operativo.

Para hacer esto es necesario acceder a las Network Proxy Preferences de la siguiente manera.

$ /usr/bin/gnome-network-properties

Seleccione la opción Manual proxy configuration y especifique los valores utilizados anteriormente: el Socks host es localhost y el Port es 4711.

Configuración de Proxy de GNOME.

Si desea que estos cambios sean permanentes y afecten a todos los usuarios del equipo, presione el botón Apply System-Wide (requiere acceso de root).

Configurar a GNOME para utilizar al túnel para acceder al proxy (línea de comando).

Es posible realizar la configuración anterior desde la línea de comando, lo cual es útil para la implementación de scripts.  Para obtener los mismos efectos es necesario ejecutar las siguientes instrucciones.

$ gconftool -s /system/proxy/socks_host -t string 127.0.0.1

$ gconftool -s /system/proxy/socks_port -t int 4711

$ gconftool -s /system/proxy/mode -t string manual

Enlaces.

One thought on “Navegar a través de un servidor como proxy utilizando un puente SSH y un cliente GNU/Linux”

Leave a Reply

Your email address will not be published. Required fields are marked *