“Poor Man’s VPN” sobre tunel SSH

Partamos de uno de estos supuestos:

  1. Estás conectado a una red de cuya seguridad no te fías, pero tienes un servidor seguro en algún sitio al que podrías conectarte.
  2. Estás en una red con conectividad limitada, pero puedes conectarte a un servidor con salida a internet

¿Tienes una opción para conectarte de forma segura? Sí. Puedes hacer una llamada “poor man’s VPN” sobre un tunel SSH ¿Cómo hacemos esto? Bueno, lo primero es que el servidor contra el que vamos a conectarnos tenga habilitados tanto la posibilidad de hacerse root de forma remota como la posibilidad de tunneling y la redirección de puertos. Todo esto lo podéis poner a funcionar en el archivo /etc/ssh/sshd_config, poniendo PermitRootLogin yes y PermitTunnel yes y luego reiniciando el servicio sshd (suponiendo que trabajéis con un servidor Linux, claro). Por seguridad podéis (deberíais) configurar unas claves SSH

Una vez esté todo eso habilitado toca empezar a configurar el cliente (vamos de nuevo con Linux) desde el que queremos conectarnos. Necesitamos saber la IP del servidor al que nos conectamos, en el ejemplo vamos a poner una ficticia que sería 83.112.23.4X. La máscara de red también tiene que ser la pertinente para vuestra configuración de conexión:

#abrimos un tunel ssh al servidor (vosotros poned la IP de vuestro server)
sudo ssh -f -w any 83.112.23.4X true

#asignamos una ip al tunel (ip local típica, en vuestro caso la que corresponda asegún la configuración)

sudo ifconfig tun0 192.168.0.2 192.168.0.1 netmask 255.255.255.0

Tras esto es necesario tener configurado el tunel en el servidor

# la misma asignación que en el server, pero invirtiendo las ip's de los dos puntos del tunel
sudo ifconfig tun0 192.168.0.1 192.168.0.2 netmask 255.255.255.0

# habilitamos el reenvío de paquetes
echo 1 > /proc/sys/net/ipv4/ip_forward

# habilitamos el enmascaramiento
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

Finalmente toca acabar de configurar el enrutamiento en el cliente, en este ejemplo la puerta de enlace será 10.1.1.1, para vuestra configuración usad la que toque. La cosa es borrar la ruta previa a la puerta de enlace para usar la del tunel:

sudo ip route add 10.0.0.0/8 via 10.1.1.1
sudo ip route del default via 10.1.1.1 dev eth0
sudo ip route add default via 192.168.0.2

Ya sólo te queda comprobar si la conexión está funcionando bien.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s