Conexión segura en lugares no seguros (2ª Parte)
Nivel de Dificultad: Bajo.
En mi artículo anterior Conexión segura en lugares no seguros viste como podíamos navegar de manera segura, en WiFis públicas o no encriptadas, creando un proxy SOCKS5 mediante un tunel ssh a nuestro servidor. Con este artículo, verás como puedes hacer pasar TODO el tráfico TCP de red de tu ordenador (no sólo los protocolos más comunes), a través del proxy.Te recomiendo también que leas mi artículo Acceso SSH sin poner contraseñas para configurar tu acceso a tu servidor sin necesidad de escribir tu contraseña.
Primero, debes instalar redsocks en tu ordenador. Abre un terminal y e introduce el siguiente comando:
sudo apt-get install redsocks
En Ubuntu, redsocks se instala y no se activa para que arranque de inicio (y eso es precisamente lo que quiero).
Edita el archivo de configuración, que se encuentra en /etc/redsocks.conf. Necesitarás hacerlo con sudo. Ejecuta el siguiente comando en un terminal:
sudo gedit /etc/redsocks.conf
En la sección redsocks, encontrarás las variables local_port y port (en mi archivo de configuración, se encuentran en las líneas 42 y 46), y cambia los valores a:
Crea un archivo redsocks-on.sh en tu directorio bin (o en algún otro de tu PATH) y copia y pega las siguientes líneas:
#!/bin/sh
redsocks -c /etc/redsocks.conf
# Creamos una cadena nueva
sudo iptables -t nat -N REDSOCKS
# Ignora direcciones LAN y reservadas.
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
# Redirigimos el tráfico a Internet por el puerto 9998
sudo iptables -t nat -A REDSOCKS -p tcp -j DNAT --to 127.0.0.1:9998
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
# Establecemos la conexión con nuestro servidor
# y le decimos a iptables que permita la conexión con el mismo
ipserver=`dig +short yo@miservidor`
sudo iptables -t nat -I REDSOCKS -d $ipserver -j RETURN
ssh -p 443 -qND 9999 $ipserver
Recuerda cambiar yo@miservidor por los valores correctos de conexión a tu servidor.
Crea otro archivo y llámalo redsocks-off.sh y ponlo en el mismo directorio. Copia y pega el contenido de las siguientes líneas:
#!/bin/sh
# Reseteamos iptables
sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t nat -Z
# Matamos el proceso redsocks
killall redsocks
sudo apt-get install redsocks
En Ubuntu, redsocks se instala y no se activa para que arranque de inicio (y eso es precisamente lo que quiero).
Edita el archivo de configuración, que se encuentra en /etc/redsocks.conf. Necesitarás hacerlo con sudo. Ejecuta el siguiente comando en un terminal:
sudo gedit /etc/redsocks.conf
En la sección redsocks, encontrarás las variables local_port y port (en mi archivo de configuración, se encuentran en las líneas 42 y 46), y cambia los valores a:
local_port = 9998;
port = 9999;
Crea un archivo redsocks-on.sh en tu directorio bin (o en algún otro de tu PATH) y copia y pega las siguientes líneas:
#!/bin/sh
redsocks -c /etc/redsocks.conf
# Creamos una cadena nueva
sudo iptables -t nat -N REDSOCKS
# Ignora direcciones LAN y reservadas.
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
# Redirigimos el tráfico a Internet por el puerto 9998
sudo iptables -t nat -A REDSOCKS -p tcp -j DNAT --to 127.0.0.1:9998
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
# Establecemos la conexión con nuestro servidor
# y le decimos a iptables que permita la conexión con el mismo
ipserver=`dig +short yo@miservidor`
sudo iptables -t nat -I REDSOCKS -d $ipserver -j RETURN
ssh -p 443 -qND 9999 $ipserver
Recuerda cambiar yo@miservidor por los valores correctos de conexión a tu servidor.
Crea otro archivo y llámalo redsocks-off.sh y ponlo en el mismo directorio. Copia y pega el contenido de las siguientes líneas:
#!/bin/sh
# Reseteamos iptables
sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t nat -Z
# Matamos el proceso redsocks
killall redsocks
Haz los archivos ejecutables con el comando chmod +x redsocks-o*.sh
Para probar que sí nos funciona, con tu navegador entra en http://whatismyip.org y apuntate la IP. Cuando hayas iniciado la conexión con estos scripts, vuelve a probar. La IP debería ser diferente.
Para iniciar tu conexión segura, ejecuta en un terminal el script redsocks-on.sh. El script no se queda en segundo plano. Esto está hecho a propósito así. Ahora ya podrás navegar de manera totalmente segura ya que hemos iniciado redsocks, redirigido todo el tráfico tcp a redsocks, que lo envía al proxy que hemos iniciado con un tunel ssh. Para finalizar haz Ctrl-C sobre el terminal donde está ejecutándose el script. Finalizaremos la conexión ssh. Seguidamente ejecuta redsocks-off.sh para resetear las reglas de iptables y finalizar redsocks.
Como ves, con estos 2 scripts podrás establecer una conexión totalmente segura con tu servidor para navegar en WiFis no seguras.
Comentarios
Publicar un comentario