domingo, 24 de febrero de 2013

Creación de un Virtual Appliance para control de Internet con VMware (parte 3)

<< Artículo anterior

Una vez que tenemos nuestro sistema operativo base, el FreeBSD, montado y actuando como router y firewall básico es el momento de seguir con el siguiente paso: la instalación del proxy-caché, el afamado SQUID. Estamos ante uno de esos productos que, además de ser open-source y gratuitos, son la mejor opción del mercado para realizar sus funciones, por lo que una vez más se demuestra que los productos gratuitos no tienen por qué ser necesariamente inferiores a sus competidores comerciales.

Aunque en el momento de escribir este tutorial, la versión estable en producción es la 3.3, me he basado en la versión 2.7.9, no por nada en especial, simplemente porque es el paquete que venía en la ISO de FreeBSD que teníamos por aquí a mano y que hemos usado de base para el proyecto.


La instalación es muy fácil vía sysinstall. Ejecutamos dicha herramienta y seleccionamos los siguientes menús hasta llegar al paquete del Squid:
Configure → Packages → FTP o CD → Net → squid-2.7.9

Para la puesta en marcha, primero haremos unas pequeñas modificaciones de configuración.
Editamos el archivo /usr/local/etc/squid/squid.conf y modificamos la siguiente línea así:
http_port 3128 transparent
Editamos el archivo /etc/rc.conf y agregamos la siguiente línea:
squid_enable=”YES”

Ahora es necesario inicializar el Squid, para crear los subdirectorios de caché, logs, etc. Para ello, con privilegios de root, ejecutamos el siguiente comando:
/usr/local/sbin/squid -z
Y con esto ya podemos arrancar el servicio Squid:
/usr/local/etc/rc.d/squid start
Para probarlo, podemos configurar nuestro navegador de Internet favorito para que conecte a través del proxy (la IP 192.168.3.254, según nuestro ejemplo, y el puerto por defecto, el 3128).

Proxy transparente


Hasta ahora hemos conseguido que nuestro appliance virtual funcione como un eficiente router y como un simple proxy que por defecto nos ahorrará algo de tráfico (por su función de caché) y nos permitirá registrar las visitas de aquellos equipos que lo tengan configurado.

Sin embargo, y aunque hay diversos métodos para forzar a un cliente de la red a que use nuestro proxy, siempre puede quedarnos la posibilidad de que algún usuario avanzado tenga conocimiento y acceso a la configuración de proxy lo que le permitiría borrar esa configuración y salir a Internet directamente por la puerta de enlace, impidiendo así que sus visitas queden registradas.

¿Hay solución a este problema? Por supuesto: se llama "proxy transparente". Es un truco muy habitual en los ISP para ahorrar tráfico de datos y muchas veces nuestras conexiones a la WEB pasan por este tipo de proxies sin darnos cuenta. Consiste en implementar funciones de proxy a la misma puerta de enlace, de tal modo que simplemente por enrutar tráfico hacia dicha puerta de enlace, los paquetes son capturados y redirigidos a un proxy de manera invisible para el usuario. Nuestro Squid, como no podía ser menos, permite el funcionamiento en modo "transparente" (por ello pusimos ese parámetro en el squid.conf).

Para que la puerta de enlace redirija los paquetes de la WEB (por defecto, el puerto 80) hacia el proxy (que hemos puesto en el puerto TCP 3128), utilizaremos el firewall del sistema siguiendo estos pasos:
  • Creamos el archivo /etc/ipnat.rules con el siguiente contenido:

rdr em0 0/0 port 80 -> 127.0.0.1 port 3128 tcp
  • Editamos el archivo /etc/rc.conf y le agregamos las siguientes líneas:
ipnat_enable=”YES”
ipnat_rules=”/etc/ipnat.rules”

Con esta configuración, nuestro flamante appliance funciona como proxy transparente y por tanto cualquier equipo que navegue por la WEB usándolo como puerta de enlace ya pasará por el Squid de manera forzada, incluso aunque el navegador esté configurado para navegar en modo directo.

Podemos en cualquier momento comprobar que las visitas a la WEB se van quedando registradas consultando el log de acceso, el cuál se encuentra en la siguiente ubicación:

/var/squid/logs/access.log

En el siguiente capítulo vamos a integrar Squid con Samba para así poder usar autenticación integrada en las estaciones de trabajo de Windows y poder configurar los accesos a Internet (así como restricciones a diferentes páginas web, etc.) en función de la pertenencia a grupos de Active Directory. Y sí, sigue siendo gratis.

Continuará...