Squid + SquiGuard en Debian

Normalmente unas de las peticiones de los clientes es el filtro de contenido, quienes si pueden navegar y quienes no a quienes se les bloquea cual o tal cosa, en base a estas peticiones me he tenido que dar a la tarea de probar filtros de contenido con listas negras, como primera opción probé el Dansguardian con Squid el cual funciona pero después de cierto tiempo empieza a dar problemas como bloquear la navegación de todos, bloquea en un inicio sitios al por mayor, aunque un punto a su favor “la fácil configuración”, la siguiente opción como lo dice el titulo fue Squid + SquidGuard, la configuración no es tan fácil como el Dansguardian pero también se puede usar con listas negras, la ventaja es que es rápido y una vez se entiende el archivo de configuración no es tan complejo y podemos formar grupos para bloquear o dejar pasar cierto contenido y para cada grupo se puede poner un mensaje de error diferente o uno para todos, el propósito de este post explicar como instalar Squid + SquidGuard en Debian y trataré que no se rompan tanto la cabeza como me sucedió a mi, así que empecemos.

Lo primero que debemos hacer es instalar Squid:

apt-get install squid

lo siguiente es SquidGuard y descargar el blacklists en lo personal utilice un blacklists distinto del que trae el paquete de Debian por default ya que es mas completo:

apt-get install squidguard

cd /var/lib/squidguard/db

En este directorio deben poner el blacklists y descomprimir el archivo el cual pueden bajarlo de este link.

A este punto ya se que me dirán que mucha ciencia pero ahora viene la parte buena, primero configuraremos el squid para que trabaje como proxy transparente para el usuario en el puerto 3128 y también le configuraremos el SquidGuard como programa de dirección.

Solo basta con cambiar la primera linea y agregar la segunda

/etc/squid/squid.conf

http_port 3128 transparent
url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Ahora comenzaremos con la parte interesante del archivo de configuración del SquidGuard:

/etc/squid/squidGuard.conf
dbhome /var/lib/squidguard/db
logdir /var/log/squid

src admin {
ip xxx.xxx.xxx.xxx
ip xxx.xxx.xxx.xxx
# user root foo bar
# within workhours
}

dest adult {
domainlist blacklists/adult/domains
urllist blacklists/adult/urls
}

dest porn {
domainlist blacklists/porn/domains
urllist blacklists/porn/urls
expressionlist blacklists/porn/expressions
}

acl {
admin {
pass !porn !adult any
redirect http://[ip servidor]/[pagina de error].html
}
default {
pass !porn !adult any
# rewrite dmz
redirect http:[ip servidor]/[pagina de error].html
}
}

Ahora tratare de explicar un poco lo que pasa aquí

dbhome Path absoluto del directorio en donde esta los blacklists
logdir path absoluto del directorio en donde se guardaran los logs.

src admin {
ip xxx.xxx.xxx.xxx
ip xxx.xxx.xxx.xxx
# user root foo bar
# within workhours
}

En el bloque anterior es como definimos nuestros grupos en este caso el grupo se llama admin y con el parámetro ip definimos la ip del cliente perteneciente al grupo, within es el nombre del periodo de tiempo, user es el nombre de los usuarios.

dest porn {
domainlist blacklists/porn/domains
urllist blacklists/porn/urls
expressionlist blacklists/porn/expressions
}

En este bloque definimos los parámetros de bloqueo para cierto contenido, en este caso porn es el nombre de la regla, si le damos una ojeada a los directorios de los blacklist nos podemos dar cuenta que algunos tienen el expressionlist otros solo el domainlist y urllist así que lo que tenemos que hacer es chequear esto y asignarlo por cada criterio.

acl {
admin {
pass !porn !adult any
redirect http://[ip servidor]/[pagina de error].html
}
}

Con acl definimos que reglas le aplicamos a que grupo, pass indica que va a dejar pasar y redirect es la dirección de la pagina de error para esta regla, como se pueden dar cuenta aquí estamos dejando pasar todo lo que no este contenido en porn y adult eso es así porque esta el signo de ! al frente del nombre de la regla si queremos dejar pasar unicamente lo que esta en la regla solo falta poner el nombre sin el !.

Al final del archivo se encuentra la regla por default.

Cuando ya tengamos todas las reglas, grupos, etc. en el archivo debemos decirle a squidguard que haga su archivos .db en base a las reglas que estamos utilizando y unicamente lo hará con las reglas que esten en uso esto lo hacemos con el comando:

update-squidguard

Este proceso tardara un poco y lo entedremos que correr cada vez que agreguemos una nueva lista.

Por último solo tenemos que reiniciar el squid y redireccionar con iptables todo lo que valla al puerto 80 hacia el 3128.

iptables -t nat -A PREROUTING -i [tarjeta interna] -p tcp –dport 80 -j DNAT –to-destination [ip del server]:3128

Espero les sirva y como ya sabrán después de esto los usuarios los odiaran.

3 comentarios sobre “Squid + SquiGuard en Debian

  1. le falta detallar mas acerca de la configuracion, obviaste la descompresion de la base de datos, los permisos de archivos… para un novato seria como comenzar nuevamente ademas te falta hacer forwarding para que el servidor se comporte como un router..

  2. y como haces si quieres filtrar por mac en vez de por ip? gracias

  3. En la configuracion de squidGuard puedo poner una ruta o necesariamente tiene que ser la ip?

Deja un comentario

Nombre *
Correo electrónico *
Web