Bloquear Ultrasurf en proxy transparente

Programa UltrasurfEs verdad que la libertad a la información debe ser un derecho de todos, sin embargo tambien cumplir el trabajo encargado en el área donde uno labora es un deber. Sabemos que hay derechos y deberes, a pesar de esto hay personas que ignoran esta realidad y durante el espacio para hacer su "trabajo" se dedican a utilizar recursos para "perder el tiempo".
Muchos de nosotros hemos utilizado el Proxy Squid en el sistema operativo GNU/Linux y sabemos que se puede bloquear el acceso a diferentes sitios web a través de la creación de ACLs y dar privilegios a unos usuarios mas que a otros, sin embargo no podemos analizar las conexiones seguras debido a su naturaleza.
Cabe indicar que está publicación esta basada en la distribución Linux Debian Squeeze y Squid 2.6.

Problema

Hoy en día existen programas como el Ultrasurf que le permite a un usuario pasar por alto los controles establecidos desde una ACL en el PROXY, esto lo realiza este programa utilizando la conexión del puerto 443 (HTTPS) lo que se refiere a las conexiones seguras, con esto este programa garantiza que no se analizará el tráfico que circula por el proxy y se podrá conectar a servidores proxy anónimos en Internet y navegar con toda libertad, muchos pensarán que seria mejor bloquear las direcciones de esos servidores anónimos pero creanme es muy larga la lista.
Lo podemos observar de la siguiente manera:
tcpdump -i eth0 host 192.168.1.10 and port 443
Antes de proseguir es necesario especificar que debemos instalar el paquete tcpdump. La interface eth0 se refiere a la conexion de intranet que da el servicio de Internet a nuestros usuarios.

Solución

Quiza para algunos la solución que voy a sugerir no es una de las mejores sin embargo funciona a la perfección, la solución pasa por deshabilitar el puerto 443 a traves de IPTABLES con el siguiente comando
iptables -A FORWARD -p tcp --dport 443 -j DROP

Con la regla antes mencionada evitamos que se realice cualquier conexión segura, sin embargo existen sitios en donde si queremos que se pueda accesar, sitios de instituciones de gobierno y bancos.
para esto podemos habilitar antes de la regla antes mencionada los IPs que tendrán acceso al cualquier sitio seguro, esto lo podemos hacer con la siguiente regla:
iptables -A FORWARD -s 192.168.1.10 -p tcp --dport 443 -j ACCEPT

Pero talvez se nos presenta otro problema el tener que ingresar muchas direcciones para que tengan acceso a sitios seguros, entonces para esto habilitamos los sitios que necesitan los usuarios en general y que son de competencia de su trabajo, esto lo hacemos de la siguiente manera:
iptables -A FORWARD -s www.iess.gob.ec -p tcp --dport 443 -j ACCEPT

Muchos diran que quieren habilitar servicios para los correos electrónicos como gmail, hotmail y yahoo y que estos disponen de muchas direcciones y es tedioso tener que ingresar todas, para esto podemos habilitar un rango de direcciones utilizando lo siguiente:
iptables -A FORWARD -p tcp -m iprange --dst-range 74.17.204.1-74.17.204.200 --dport 443 -j ACCEPT

Es decir identificamos las IPs que utiliza el gmail y habilitamos su rango con esto garantizamos el acceso al servicio y en una sola linea.

Identificando IPs a habilitar

La forma en como podemos identificar las IPs que esta accesando el usuario y son necesarias se lo puede hacer de la siguiente manera:
tcpdump -i eth0 host 192.168.1.10 and port 443

y obtendremos algo como lo siguiente:

09:01:44.090970 IP 192.168.1.123.47708 > by132oim.mail.services.live.com.https: S 2047155850:2047155850(0) win 5840 09:01:50.091610 IP 192.168.1.123.47708 > by132oim.mail.services.live.com.https: S 2047155850:2047155850(0) win 5840 09:02:02.094537 IP 192.168.1.123.47710 > by132oim.mail.services.live.com.https: S 2369713159:2369713159(0) win 5840 09:02:05.093104 IP 192.168.1.123.47710 > by132oim.mail.services.live.com.https: S 2369713159:2369713159(0) win 5840 09:02:11.093700 IP 192.168.1.123.47710 > by132oim.mail.services.live.com.https: S 2369713159:2369713159(0) win 5840 09:02:23.096878 IP 192.168.1.123.47711 > by132oim.mail.services.live.com.https: S 2698426699:2698426699(0) win 5840 09:02:26.095191 IP 192.168.1.123.47711 > by132oim.mail.services.live.com.https: S 2698426699:2698426699(0) win 5840

Luego que nos obtenemos el dominio como en algunos casos el gmail procedemos a copiar esa linea y hacemos lo siguiente:
host by132oim.mail.services.live.com

Espero esta publicación sirva para aliviar el dolor de cabeza de mas de un administrador, cualquier sugerencia o comentario es bienvenida.

PD: Al final voy a adjuntar un archivo con reglas de iptables para habilitar gmail, hotmail, yahoo.

Secciones: 
Última modificación: 
Miércoles, Mayo 25, 2011 - 09:50

Comentarios

Excelente aporte, voy a probarlo y te comento los resultados. Muchas gracias

Hola ... he visto tu post y me parece excelente. Solo que me surgen dudas... a continuación te las describo:

1.- Puede ser cualquier versión de linux ( Ubuntu, Fedora, etc ) =?

2.- Debe llevar activado el squid =? ... y ahi se aplican las reglas ??

3.- O solo las iptables y en el navegador en la sección de proxy se pone la IP del server del linux y ya con eso ??

Muchas gracias por tu post, espero que me puedas orientar.

Gracias por tu comentario - Si efectivamente lo puedes hacer con cualquier distribución, ya que las reglas se las implementa bajo iptables. - Las reglas no se aplican en el squid Ok, suerte con tu implementación. Saludos.

He intentado en diferentes ocasiones pero no puedo descargar el archivo, me lo podrias mandar a mi correo?

armando_afmx@yahoo.com.mx

Por favor intenta nuevamente, tuvimos un ligero problema con la ubicación de los archivos al realizar la migración de nuestro sitio.

 

Saludos

buen aporte, el problema es que en organizaciones grandes la lista de sitios seguros (https) se te hace interminable, entonces el trabajo es muy tedioso! una solucion definitiva es la implementacion de layer 7 en tu kernel y listo!

Probaremos la solución que mencionas y luego comentaremos al respecto para beneficio de todos nuestros lectores.

Excelente , solo tengo un ligero problema. . . he cerrado satisfactoriametne el puerto 443 abriendo despues el acceso solo a algunos sitios seguros, me permite conectarme si coloco la IP pero, si pongo URL no se conecta ¡sabes a que pueda deberse esto?

Espero puedas orientarme, muchas gracias!!!!

Aqui también está explicado con mucho detalle usando una ACL
http://www.maravento.com/2013/03/firewall.html

Contenido Relacionado