Configuración de Filtros de Contenido Para el Squid

   Autor: NaTaSaB (jmmerlos @ merlos . org)
   Web:  http://www.merlos.org
   Fecha: Septiembre 2003

Introducción

En este texto se explicará cómo filtrar contenidos web utilizando el proxy Squid y un pequeño plug-in, el SquidGuard gracias al cual podremos crear distintas reglas para filtrar el contenido. Aunque he de aclarar que squidGuard es mas bien un filtro de IP o URL, ya que en realidad no analiza el contenido de la dirección destino sino su URL/IP. Cuando un cliente solicita acceder a una determinada dirección squidGuard la compara con la lista de su base de datos y si no está permitido su acceso entonces realiza tareas como redireccionar a una página de error, no hacer nada, etc.

Por supuesto, el ordenador en el que se instalarán estará ejecutando GNU/Linux,en mi caso, distribución Debian. Las rutas a los ficheros que se indiquen en este texto pueden cambiar en función de la distribución linux utilizada, aquí se indican las rutas en Debian.

La instalación y configuración del Squid está explicado en otro tutorial de esta misma página, por tanto, si no lo tiene instalado échele un vistazo a este tutorial.

Una vez hecho esto debemos instalar el SquidGuard. En Debian:


           # apt-get install squidguard

Los siguientes pasos que daremos serán:

  1. Indicarle al squid que todas las peticiones han de pasar por el filtro de contenido squidGuard. Para ello modificaremos la configuración del Squid
  2. Configurar el filtro de contenido para filtrar lo que deseemos

Modificación de la Configuración del Squid

Ahora, le indicaremos al proxy Squid que para cada petición que realice un cliente llame a squidguard para que compruebe en su lista de reglas si se puede cursar o no esa petición, redireccionarla, etc. Para ello añadiremos las siguientes líneas al fichero de configuración squid.conf:


# (Texto explicativo de las directivas del squid.conf)
#
#  TAG: redirect_program
#       Specify the location of the executable for the URL redirector.
#       Since they can perform almost any function there isn't one included.
#       See the Release-Notes for information on how to write one.
#       By default, a redirector is not used.
#
#Default:
# none

#  TAG: redirect_children
#       The number of redirector processes to spawn. If you start
#       too few Squid will have to wait for them to process a backlog of
#       URLs, slowing it down. If you start too many they will use RAM
#       and other system resources.
#
# ######### Añadido para el  SquidGuard ########################
redirect_program /usr/bin/squidGuard
redirect_children 2

Donde como se puede leer en la documentación incluida en el fichero de configuración del Squid como argumento de redirect_program se indica la ruta en el que se encuentra el ejecutable squidGuard y en redirect_children se indica el número de procesos squidGuard que se ejecutan simultáneamente. En mi caso, puesto que se trata de una pequeña red casera, he puesto 2.

Una vez modificado, guardaremos y reiniciaremos el squid:


   # /etc/init.d/squid restart
   Restarting proxy server: squid.

Si vemos los procesos que están ejecutándose en nuestra máquina veremos que han aparecido los dos correspondientes al squidGuard


   # ps -ax | grep squid 
   9451 ?        S      0:00 /usr/sbin/squid -D -sYC
   9454 ?        S      0:00 (squid) -D -sYC
   9455 ?        S      0:00 (squidGuard)
   9456 ?        S      0:00 (squidGuard)
   9463 pts/5    S      0:00 grep squid
   # 

Configuración de squidGuard

A continuación, crearemos nuestras propias reglas. Para tal fin editaremos el fichero /etc/squid/squidGuard.conf

La documentación oficial sobre la sintaxis de fichero se puede encontrar en la página del squidGuard o también en la documentación que se incluye en el paquete de instalación y que se almacenará en /usr/share/doc/squidguard/.Hay que reseñar que la documentación oficial está muy bien y en ella se incluyen numerosos ejemplos, por lo que al lector no le costará entenderla. Aquí me limitaré a exponer mi caso particular ;-)

Listas Negras (Blacklists)

Como hemos dicho anteriormente, squidGuard basa su criterio en comparar la URL solicitada con una base de datos, pero claro, hacer esta base de datos es un trabajo pesado y que lleva tiempo. Por suerte, ya hay listas de direcciones e IP hechas y que se pueden descargar.

  
   http://www.squidguard.org/blacklist/

Estas listas están organizadas por los siguientes temas:

ads         audio-video  gambling  mail  proxy   violence
aggressive  drugs        hacking   porn  warez

Nota: También existe el Chastity Project, que pretende hacer otra lista pero por lo que he podido ver está un poco abandonado. No obstante, existe el paquete chastity-list descargable a través de apt-get


Una vez descargados los ficheros de blacklists los podemos descomprimir en el directorio dbhome que se indica en el fichero de configuración. ¡Ojo! Acuérdate de cambiarle los permisos de usuario a estos ficheros en caso de que fuera necesario.

Este es el squiGuard.conf que uso yo:

dbhome /var/lib/squidguard/db
logdir /var/log/squid

dest ads {
   domainlist ads/domains
   urllist ads/urls
   #publicité
   domainlist publicite/domains
   urllist publicite/urls
   expressionlist publicite/expressions
}
		  
		  

dest milista {
    domainlist domains
    urllist urls
    expressionlist expressions
}
	    
 acl {
    default {
    pass !ads !milista all
    redirect http://192.168.0.1/www/noads.png
}

En mi fichero de configuración simplemente se redirecciona la posible publicidad/banners para que en su lugar se muestre un fichero de imagen creado por mi. Como puedes ver, tengo dos grupos, el ads y el de milista. Uno está compuesto por ficheros de listas negras que he descargado y el otro por las listas que estoy haciendo con los sitios de publicidad de las páginas que suelo visitar.

Una vez tengamos todo configurado podemos reiniciar el squid con el comando:

# /etc/init.d/squid restart

Si hay algún error sintáctico o algún problema en el fichero squidGuard.conf se notificará en un fichero de log que se encuentra en el directorio logdir indicado en la configuración.

Conclusiones

En cuanto a la efectividad de este tipo de filtrado, lo cierto es, que no llega a ser todo lo bueno que desearíamos, sobre todo cuando navegamos en páginas en castellano, ya que las listas negras que "rulan" por Internet son de páginas en inglés en su mayoría. No obstante, si tenemos en cuenta que los usuarios en general se mueven por las mismas páginas casi siempre, sólo hay que crear nuestros propios ficheros personalizados, consiguiendo un aumento considerable de la eficacia.

En mi caso, como se ha podido ver, he utilizado el squidGuard básicamente para eliminar la publicidad y si a esto le añadimos a nuestro navegador la funcionalidad de quitar popups nuestra navegación será más rápido y sin apenas la molesta publicidad :) Parecerá que hemos vuelto a los orígenes de Internet (salvando las distancias ;-))

Más información