sábado, 18 de agosto de 2012

Pfsense 2: Squid Proxy y Envio de Parametros Automaticos WPAD.

Una persona que pregunto que si podia remplazar un equipo inhalambrico con pfsense, yo le dije que dependia de si el equipo tenia alguna funcion en especial, el me comento que no, que solo es un acceso para la visita, pero que si deseaba que se tuvieran que autenticar.

Su principal problema era que sentia que sus empleados estaban abusando de ese servicio y ya saben, uno le da clave y este empieza a repartirla a medio mundo, y deseaba saber cuanto tiempo duran, cuanto consumen y donde se la pasan.

Yo le dije que si podria hacerlo, asi que empece mi tarea, tenia yo 6 objetivos:
  1. Que el cambio fuera sencillo y los empleados no notaran mucho el remplazo de equipo.
  2. Usar las mismas credenciales de acceso.
  3. Usar un equipo de bajo consumo de energia, de esos que no hacen ruido o sea sin abanicos y compactos. 
  4. No usar cache de squid.
  5. No bloquear nada.
  6. Que todos pasen por squid y nadie se lo pueda brincar.
Ya con esto en mente, opte por un equipo que tengo tiempo usando de la marca Neoware modelo CA10 le cual tiene las siguientes caracteristicas:
  • CPU 800Mhz.
  • 512RAM DDR400
  • Slot para montar una adaptador de memoria CF y ahi cargar el OS.
  • 1 Slot PCI para poder agregar cualquier tarjeta de PCI(De Red).
  • 4 Puertos USB
  • 1 Puerto Paralelo
  • 2 Puertos Seriales
  • 1 VGA
  • 1 NIC Integrado VIA
  • 1 NIC 3com en la ranura PCI
  • 1 Memoria CF 4GB con pfsense 2.0.1 nano-vga version 4GB.
Aqui esta un imagen del equipo:
Figura 1: Neoware CA10 con Pfsense Nano.
Como observaran, voy a usar la version nano, por cierto estos equipos los estoy ofreciendo en mercadolibre.com.mx si lo buscan como pfsense daran con el.

Ahora regresando a el tema, ya tengo el equipo y pfsense cargado, que necesito configurar?

  • squid
  • sarg
Estos dos paquetes ya hemos visto en el blog como configurarlos ya no voy a tocar estos temas, aclarando que siempre he sido un seguidor de squid modo no-transparente y aqui es lo mismo, nadie se va a brincar el proxy.

Lo que voy agregar es:

  • Usar usuarios locales
  • WPAD para que los navegadores obtengan los parametros del proxy sin intervencion.
Ahora si hago todo desde el GUI, ya no tengo que manipular la configuracion de squid desde la consola, para los usuarios existe una pestaña en los parametros de squid donde hacer esto, ver siguiente imagen:
Figura 2: Creacion de usuarios locales.
Ya tenemos las credenciales de acceso igual como las tiene el sistema que ellos estan manejando, sigue por ahi como configurar WPAD para que los navegadores busquen a el proxy y obtengan los parametros sin la intervencion humana.

Siguiendo el doc: http://doc.pfsense.org/index.php/WPAD_Autoconfigure_for_Squid

Dice que debemos crear 1 archivo llamado: wpad.dat en la raiz del folder root de un servidor web, que en mi caso es la misma caja de pfsense y ahi esta squid mas facil, pero su caso puede ser otro, entoces mi configuración seria:

function FindProxyForURL(url,host)
{
if (isPlainHostName(host)) { return .DIRECT.; }
if (isInNet(host, .192.168.0.0., .255.255.255.0.)) { return .DIRECT.; }
return "PROXY 192.168.50.1:3128";
}

Rapido podremos suponer que squid corre en la maquina con IP 192.168.50.1 y el puerto es el conocido 3128.

Ahi viene como se puede brincar la intranet para que no pase por el Proxy.

Tambien dice que debemos copear ese mismo archivo en otros con los nombres:
  • wpad.da
  • proxy.pac
Les quiero aclarar que yo no he usado esos archivos y mis clientes han logrado obtener la info automatica excepto el navegador opera, leyendo un poco este aun no tiene la funciona de autodescubrir proxies.

De ahi dice el manual que debemos apoyarnos de dns forwarder ya que debemos crear un registro en la seccion "Host Overrides" quedaria asi:
Figura 3: Registro en DNS Forwarder.
Ahora viene la parte del firewall, claro que tambien entra en juego pero estas reglas son sencillas, son 3:

Permitir a la LAN consultar el DNS de pfsense TCP/UDP.
Permitir a la LAN llegar a el puerto 3128 de squid de pfsense TCP.
Permitir a la LAN salir a el puerto FTP si lo llegaran a necesitar TCP.

Es todo, no puedo ser mas abierto por que se supone que la conexion la estan usando para que los clientes puedan accesar a Internet solamente, nada mas, por ello no requiero mas puertos, a lo mejor va a salir algunos en especifico pero hasta el momento no ha pasado nada.

Parece que tenemos todo en su lugar, vamos revisando:
  • Squid configurado y operando.
  • Sarg configurado y operando los scripts de cron.
  • DNS Forwarder configurado.
Prueba de fuego con nuestros navegadores, los configuramos segun el manual:

Windows XP Pro sp3:
Firefox: Si Funciona.
Iexplore: Si Funciona.
Safari: Si Funciona.
Opera: No Funciona, no tiene opcion de busqueda automatica hasta hoy.

Windows 2003:
Firefox: Si Funciona.
Iexplore: Si Funciona.
Safari: Si Funciona.
Opera: No Funciona, no tiene opcion de busqueda automatica hasta hoy.


Windows 7:
Firefox: Si Funciona.
Iexplore: Si Funciona.
Safari: Si Funciona.

Windows Server 2008:
Firefox: Si Funciona.
Iexplore: Si Funciona.
Safari: Si Funciona.


Deseaba probar mi caja Linux pero desgraciadamente fallo el disco, asi que luego pruebo y les informo.

Los updates de Windows sin problemas.


Posibles problemas:


Si estan trabajando sobre esto y cuando prueben y no les aparezca la ventana de autentificacion les recomiendo renovar su IP, este asunto me paso cuando hice los cambios en el DNS forwarder, al renovar mi IP empezo a funcionar sin problemas.

Este equipo entra a trabajar la proxima semana, asi que estaremos monitoreando su funcionamiento, saludos!!!

2012-08-25
Problemas con ciertas tabletas: Pues cabe la sorpresa para enterarme por mi propios ojos que por ejemplo tenemos una tableta de asus con adroid version 4.0.3 y resulta que no tiene soporte para proxy, mucho menos para deteccion automatica, he leido al respecto como muchos equipos y creo que todos tienen este problema, por que google tomo esta decision tan estupida de no agregarle una caracteristica tan basica que es soporte de proxy?

Resumen no puedo usarlo con esta implementacion de pfsense, tengo que buscar el IP crear un alias y agregar una regla que permita la navegacion libre.

Tenemos otro smartphone de motorola con android 2.x, este al menos tiene la opcion de ponerle manualmente el proxy y funciona con el esta implementacion.

Hasto donde he leido la familia de IOS(Apple) desde que salieron tiene este soporte, aun flata probar y ver si es correcto, solo me toco ver uno donde si aparecia la opcion de configuracion.

Si alguien tiene info al respecto espero pueda proporcionarla, saludos!!!

2012-08-27
Si estan trabajando y ya han modificado mucho su pfsense a el punto que ya sus navegadores no pueden obtener los parametros del proxy de manera automatica, les recomiendo que ejecuten el ccleaner en los equipos windows para limpiar todo el cache de sus navegadores.

7 comentarios:

xaviermedina@outlook.com dijo...

hola estoy con pfsense con un proxy no transparente en el cual quiero filtrar algunas cosas que ya lo eh logrado hacer... pero como son usuarios "moviles" (para mi)... quiero hacer esto de wpad pero no tengo idea como se hace, me podrias ayudar? lo que tengo entendido es que se hace el sript en java el cual publicastes y lo entendi bien las cosas que hay que modificarle y que despues hay que guardarlo en un archivo wpad.dat y ta despues no se que hacer... como le paso esa configuracion por dhcp o dns? o nose... no soy un usuario mucho de linux... mi desventaja... apenas se algunos comandos pero de squid apache y alguna otra cosa por linea de comando no tengo casi nada de conocimientos. si me pudes ayudas te lo agradeceria!! xaviermedina@outlook.com

Pedro Moreno dijo...

Hola.

1) Requieres acceso a consola para poder llevar a cabo esto.

2) Si sigues el tutorial, tus clientes cualquier que sea solo debes configurar el navegador para que busque los proxies, pfsense se encarga de enviar los parametros, no requieres configuras el dhcp para esto solo el dns que usa pfsense.

Es todo, debes ensuciarte un poco las manos, hablando de que tienes que aprender minimo como crear, editar y salvar archivos en pfsense/freebsd es todo nada del otro mundo, dudas quedamos a tus ordenes!!!

Edward Parada Ainto dijo...

lo configure y el problema que tengo es que cuando la interfaz de configuracion web utiliza el protocolo https los equipos no logran tener navegacion http y si cambio de protocolo a http funciona,:\

Pedro Moreno dijo...

Hola, este detalle tengo entendido que existe, pero te recomiendo que tus clientes no pongan paginas https por default en sus navegadores, es un detalle que a muchos como que nos incomoda, pero este pequeno detalle para mi lo puedo pasar desapercibido, prefiero aducar a el usuario.
Nada es perfecto y mucho menos gratis, saludos!!!

Anónimo dijo...

gracias me sirvio muchisimo en mi servidor pfsense
para bloquear el acceso a los usuarios que no pasan por el proxy,
tuve que implementar un servidor proxy no tranparente para bloquear el puerto 443 (https) {facebook}

Saludos

Raul Rafael Lopez dijo...

Saludos quisiera que me ayudes a aclarar una duda que es la siguiente:
porque motivo el squid permite el protocolo de https en el puerto 443 pero para el protocolo http en el puerto 80 el o los navegadores se quedan pensando para cargar y te dicen pagina no disponible
Instale el esquid en modo transparente con intención de hacer cacheo todo en su configuración básica claro modificando los valores de tamaño de memoria espacio de disco y esas cosas que regla iría en firewall para dar acceso a este protocolo agradecería mucho si cuelgas un imagen para ver como van las reglas lo prefiero asi porque en linea de comandos soy hyper malo..

Jamil Enríquez dijo...

Hola donde compras los equipos para instalar pfsense.
Los venden en méxico?