Instalacion y configuracion de squidGuard en Slackware 10.1 Autor: Jorge Armando Medina email: jmedina@calcom.com.mx squidGuard es una solucion de filtrado Web de Fuente Abierta (Web Filtering) el cual es usado en conjunto con el cache-proxy squid. squidGuard puede competir con soluciones comerciales de filtrado de contenido, el cual es muy conveniente por: Se integra completamente con el servidor proxy squid. Es completamente Fuente abierta. Utiliza bases de datos de listas negras las cuales estan disponibles en diferntes sitios sin ningun cargo. Con squidGuard puedes hacer: Limitar el acceso web para algunos usuarios o grupos solo a ciertos sitios web aceptables o URLS. Bloquear el acceso a servidores web o URLS a ciertos usuarios basandose en listas negras de acceso. Bloquear el acceso a servidores web o URLS a ciertos usuarios basandose en expresiones regulares. Forzar a usar nombres de dominios y no direcciones IP en las URL. Redireccionar URLs bloqueadas a una pagina web inteligente (CGI). Redireccionar usuarios no registrados a una forma de registro. Redireccionar Banners a una imagen GIF vacia. Tener difentes reglas de acceso basadas en la hora del dia, dia de la semana, fecha, etc. Y mucho mas... squidGuard tiene muchas opciones de configuracion que te permite: - Definir diferentes espacios de tiempo basados en conbinaciones de: hora del dia: (00:00-08:00 17:00-24:00) dia de la semana: (sa) fecha: (1999-05-13) rango de fecha: (1999-04-01-1999-04-05) fechas con comodines: (*-01-01 *-05-17 *-12-25) - grupos de origen: (usuarios/clientes) con difentes categorias como: "administradores", "empleados", "maestros", "estudiantes", "clientes", "invitados" etc, o convinaciones de estos. Rangos de IPs: formato CIDR: (172.16.0.0/12) formato con mascara de red (172.16.0.0/255.240.0.0) formato de rangos: (172.16.0.11-172.16.156.23 ...) Listas de direcciones: (172.16.134.54 172.16.156.23 ...) listas de dominios: (foo.bar.com ...) listas de id de usuarios: (weho sdgh dfhj asef ...) y agregar cierto grupo a un rango de espacio: positivamente: (dentro de horas_de_trabajo) negativamente: ( fuera de horas_horas_de_trabajo) - Antes que nada se debera de tener un squid con las configuraciones basicas, Se recomienda leer el documento que esta en este mismo sitio: http://www.tuxjm.net/docs/squid-como-slack.txt Tener los Prerequisitos para la instalacion. - Un entorno basico de desarrollo Unix, con una herramienta compatible "make". make-3.80-i386-1 -Un compilador ANSI de "C", GCC gcc-3.3.4-i486-1 - Un generador de analisis ortograficos como "yacc" o "byacc" o "bison". byacc-1.9-i386-1 bison-1.35-i386-1 - Un Generador de analisis lexicos como "lex" y una libreria compatible de expresiones regulares regcomp()/regexec(), como: "flex". flex-2.5.4a-i486-2 Y tambien necesitas "gzip" y "tar" para desempaquetar la distribucion. gzip-1.3.3-i386-2 tar-1.15.1-i486-1 - Tambien se necesita una version 2.X de la libreria Berkeley DB (recomendada) aunque puede trabajar con: db3-3.3.11-i486-4 Ahora el squidguard Instalar el paquete de squidguard Este paquete ya creara los directorios necesarios tanto para las listas negras y mas no los permisos requeridos, lo cual se explicara mas adelante. -Bajar el archivo de las listas negras para copiarlo en /var/lib/squidguard/ y descomprimirlo # cd /var/lib/squidguard/ # wget http://ftp.teledanmark.no/pub/www/proxy/squidGuard/contrib/blacklists.tar.gz # tar -zxvf blacklists.tar.gz # ls -l total 348 drwxr-xr-x 13 root root 4096 2005-03-30 12:32 blacklists/ -rw-r--r-- 1 root root 344102 2005-03-25 17:17 blacklists.tar.gz y dentro de ahi debera de quedar asi: # ls -l blacklists total 48 -rw-rw-r-- 1 root 60005 508 2000-03-25 11:36 README drwxr-xr-x 2 root root 4096 2005-03-30 12:32 ads/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 aggressive/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 audio-video/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 drugs/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 gambling/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 hacking/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 mail/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 porn/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 proxy/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 violence/ drwxr-xr-x 2 root root 4096 2005-03-30 12:32 warez/ Esos son los directorios que contienen la informacion de las listas negras, regularmente tienen archivos llamados: expressions, urls y domains, estos son archivos en texto plano. El siguiente paso es configurar correctamente los permisos para el directorio de listas negras y el directorio de logs de squidguard, Permisos para listas negras: # chown -R squid:squid /var/lib/squidguard # chmod -R 700 /var/lib/squidguard Permisos para logs de squidguard: # chown -R squid:squid /var/log/squidguard # chmod -R 700 /var/log/squidguard El siguiente paso es modificar el archivo de configuracion de squidguard que se localiza en /etc/squidguard/ Haremos una copia de respaldo de el archivo original # cd /etc/squidguard # cp squidguard.conf squidguard.conf.orig Abre el archivo squidguard.conf con tu editor de textos favorito. La estructura recomendada de el archivo squidguard.conf es asi: Declaraciones (ejem. logdir and dbhome) (opcional) de rutas Declaraciones (ejem. time zones) (opcional) de espacio de tiempo Declaraciones (ejem. clientes) (opcional) de grupos de origen Declaraciones (ejem. URLs) (opcional) de grupos destino Declaraciones (optional) de grupos de reglas rewrite Declaraciones (requerido) de reglas de listas de control de acceso LIstado de palabras reservadas. Las sigueintes palabras son de uso reservado en squidguard.conf y deben de ser evitadas en la declaracion de nombres: acl fri outside sun urllist anonymous friday pass sunday user date fridays redirect sundays userlist dbhome ip rew thu wed dest log rewrite thursday wednesday destination logdir sat thursdays wednesdays domain logfile saturday time weekly domainlist mon saturdays tue within else monday source tuesday expressionlist mondays src tuesdays Los siguientes caracteres son de uso especial: # Se usa para hacer comentarios. Todo lo que esta despues de el # hasta el final de esa linea sera ignorado por squidGuard. { } Es usado apra delimitar el inicio y el final de un grupo de declaraciones. - A menudo usado para declarar un rango (ejem. "de-a" o "de - a"). La primer seccion tiene algo asi: # # CONFIG FILE FOR SQUIDGUARD # dbhome /var/lib/squidguard logdir /var/log/squidguard Estas directivas definen las rutas para el directorio de las listas negras y el directorio de logs de squidguard, en este caso hay que dejarlo como esta. # # TIME RULES: # abbrev for weekdays: # s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat # Se configura de que a que hora se dara acceso y dias de la semana en mi caso de lunes a viernes de 9 a 2 y de 5 a 6 para un grupo de usuarios time horastrabajo { weekly mtwhf 09:00 - 14:00 weekly mtwhf 17:00 - 18:00 date *-*-01 08:00 - 16:30 } # Aqui para otro grupo de usuario tod el dia time tododia { weekly mtwhf 01:00 - 23:59 } # En admin se asignan las ipŽs seran de esta grupo en mi caso son dos src admin { ip 10.2.214.30 ip 10.2.214.31 within tododia } # Se asigna para el grupo de personal estos son los que seran controlados src personal { ip 10.2.214.8-10.2.214.15 ip 10.2.214.32-10.2.214.45 within horastrabajo } # # # DESTINATION CLASSES: # # Aqui es donde se configura para que squidguard lea la base de datos de porno dest porn { log blocked.log domainlist blacklists/porn/domains urllist blacklists/porn/urls expressionlist blacklists/porn/expressions redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u } # A continuacion se controla el acceso acl { # Para el grupo admin se le da todo no se le restringe admin { pass all } # Para el grupo personal se le bloquea tanto las paginas y la hora de uso personal { pass !porn all } else { pass none redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=TimeLimits&url=%u } # En el caso de que usan otra ip y no esta decalraod arriba no podra salir default { pass none redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u } } # Fin de archivo squidguard # cd /etc/squid # cp squid.conf squid.conf.bueno-sin-squidguard Se modifica squid.conf En la linea: redirect_program /usr/bin/squidGuard Y ahora se recarga Squid: # /etc/rc.d/rc.squid reload y se checa en squidguard.log tail -f /var/log/squidguard/squidguard.log para ver si hay errores. en este caso no hay todo bien. ok. espero te sirva este mini mini manualito. suerte. espero que me digas los resultados. ESTE DOCUMENTO NO ESTA COMLETO, AUNQUE PODRIA SER FUNCIONAL, PERO LE HACE FALTA MAS EXPLICACIONES.