Bloquear Ultrasurf

domingo, 27 de noviembre de 2011

Hola!!

Tras varios meses sin dar señales de vida, vuelvo a publicar algo en mi blog, esta vez es un artículo sobre como pararle los pies a Ultrasurf, una aplicación que da más de un quebradero de cabeza los Administradores de red, ya que se salta la configuración del proxy y cortafuegos de la red, mediante el uso de túneles SSL y proxys anónimos. Ultrasurf funciona sobre Windows, y su instalación es muy sencilla, solo hay que hacer doble clic sobre el programa y ya podrás navegar anónimamente y saltando las restricciones impuestas en la red de tu trabajo (puedes visitar las páginas que están bloqueadas por el proxy).

En mi caso, el servidor proxy que he usado para las pruebas es Squid, sobre Linux. También he instalado DansGuardian para facilitar la labor de filtrado de páginas web.

La solución que he encontrado es muy sencilla, solo hay que obligar que todo el tráfico de red que lleve a Internet pasé por el proxy, y el cortafuegos iptables se encarga de que todas las peticiones de acceder a una red exterior (como Internet) sin pasar por el proxy, sean rechazadas, forzando a que si quieres navegar sea a través del proxy.

La configuración que tengo es un ordenador con dos tarjetas de red:
* wlan0 => por esta me conecto a Internet => 192.168.1.131/24
* eth1 => red local => 10.42.43.1/8

Tendrás que adaptarla a la red que tu tengas claro está ;-)

El fichero /etc/rc.local tendrá las siguientes líneas, está sobre Ubuntu:

# Activar enrutamiento
echo 1 >/proc/sys/net/ipv4/ip_forward

# Limpiar las reglas de filtrado y NAT del cortafuegos iptables
iptables --flush
iptables -t nat --flush

# Activamos el NAT con enmascaramiento
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o wlan0 -j MASQUERADE

# Todas las peticiones de enmascaramiento que vengan desde eth1
# y que tengan como puerto destino el 3128 (SQUID) sean redirigidas al
# puerto 8080 (dansguardian).
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3128 -j REDIRECT --to-port 8080

# Solo acepto los paquetes que van dirigidos al servidor proxy 10.42.43.1
iptables -A FORWARD -i eth1 -d 10.42.43.1 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -i eth1 -d 10.42.43.1 -j ACCEPT

# Todos los paquetes de la red local que se dirigen a la red de internet
# que no hayan sido aceptados por el servidor proxy son rechazados
iptables -A FORWARD -i eth1 -s 0.0.0.0/0 -j DROP
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -j DROP
iptables -I FORWARD -i eth1 -s 0.0.0.0/0 -j DROP


Este fichero /etc/rc.local se ejecuta cada vez que inicia la máquina, si quieres forzar su ejecución sin reiniciar, escribe este comando: sudo /etc/rc.local

La ventaja de este método, es que los clientes que usen el proxy podrán navegar tanto por las páginas no seguras (http), como por las seguras (https). Muchas de las soluciones que había encontrado eran bloqueando las webs seguras desde el cortafuegos y luego abriendo desde el DansGuardian las que quisieras que visitaran, pero eso es mucho más engorroso.

He realizado todo tipo de pruebas desde Máquinas virtuales y reales con Windows XP y Windows 7, con Ultrasurf instalado y no pudo superar la barrera del cortafuegos.

Bueno, espero que os funcione.

Un saludo ;^)