Filtrando contenido (squid+dansguardian+iptables)

Posted by on April 30, 2007

Después de un par de años de usar Squid+SquidGuard para filtrar contenido en una pequeña red, ahora por ciertas recomendaciones y algunos problemas, decidí instalar Dansguardian y a continuación expongo lo sucedido.

Para contextualizar el asunto, tengo que mencionar que tengo bajo mi responsabilidad 12 estaciones de trabajo a las que (por iniciativa propia) se les debe permitir el acceso a Internet. Considerando que trabajo en una institución educativa, estas estaciones serán utilizadas por alumnos que no deben tener acceso a cierta información y/o ciertas aplicaciones prohibidas por mi persona (y mis criterios arbitrarios :D).

Así que bueno, la cuestión consistía en:
1. Filtrar contenido
2. Prohibir aplicaciones de mensajería instantánea (MSN Messenger ante todo)
3. Poner a funcionar un Web Proxy Cache
4. Además el proxy debe ser transparente

Haciendo que las cosas sucedan…

Después de tener el sistema básico de mi Debian Etch funcionando y teniendo mis dos tarjetas de red configuradas con dos direcciones IP de clases distintas hacemos lo siguiente:

eth0 = 192.168.2.35 (parte de la red institucional)
eth1 = 172.16.1.1 (parte de mi pequeña red)

Instalamos lo necesario, Squid, Dansguardian y asumo que ya esta instalado Iptables :)

apt-get install squid dansguardian

Ahora editamos el /etc/squid.conf buscando las directivas minimas que deben ser configuradas:

http_port 3128 transparent
acl multinet src 172.16.1.0/24
http_access allow multinet
http_access deny all

Nos podemos percatar que la longitud de este archivo ronda las 4350 lineas asi que el tunning de Squid lo dejamos para después.

Ahora nos dedicamos al Dansguardian, /etc/dansguardian/dansguardian.conf y lo primero es comentar o borrar esta linea:

#UNCONFIGURED - Please remove this line after configuration :D

Luego continuamos…

reportinglevel = 0
language = ’spanish’
loglocation = ‘/var/log/dansguardian/access.log’
filterip = 172.16.1.1 #La IP de la interfaz en la que el Dansguardian escuchará
filterport = 8080 #El puerto en el que trabajara Dansguardian
proxyip = 172.16.1.1
proxyport = 3128 #El puerto en el que funciona Squid

Importante definir las listas de “cosas” prohibidas, como formatos de archivos, urls y demás, aunque estas opciones por defecto vienen activadas al igual que otras más.

bannedextensionslist = ‘/etc/dansguardian/bannedextensionslist’
bannediplist = ‘/etc/dansguardian/bannediplist’
banneduserlist = ‘/etc/dansguardian/banneduserlist’

Evito hacer mención de un montón de opciones mas que cada quien puede configurar a su gusto en dichos archivos de configuración al igual que la utilización de blacklists adicionales.

Ahora con iptables hacemos lo siguiente:

#Haciendo NAT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo “1″ > /proc/sys/net/ipv4/ip_forward

#Redireccionamos el tráfico al puerto 8080 del Dansguardian
iptables -t nat -A PREROUTING -i eth1 -s 172.16.1.0/24 -d ! 172.16.1.0/24 -p tcp –dport 80 -j REDIRECT –to-port 8080

#Bloqueando el puerto del MSN Messenger
iptables -t filter -A FORWARD -s 0.0.0.0/0 -p tcp –sport 1863 -j REJECT
iptables -t filter -A FORWARD -s 0.0.0.0/0 -p udp –sport 1863 -j REJECT

Luego podríamos guardar esas lineas en un archivo (digamos, nat), lo mandamos a /etc/init.d/, le asignamos permisos de ejecución (chmod 755 nat) y para ejecutarlo al iniciar el sistema hacemos un enlace simbólico en el /etc/rc2.d/ (o según el runlevel por defecto en nuestra distro).

ln -s /etc/init.d/nat /etc/rc2.d/S60nat

Ese numero que acompaña la letra S es aleatorio, pero obviamente tiene que ser superior al asignado a Squid y Dansguardian.

Ahora reiniciamos Squid para que las nuevas configuraciones hagan efecto

/etc/init.d/squid restart

Y lo mismo con Dansguardian (esto puede tardar un ratito)

/etc/init.d/dansguardian restart

Y por supuesto ejecutamos el archivo para hacer el NAT de no haberlo hecho antes

./etc/init.d/nat

Si todo va bien y no me he equivocado en algun paso, tendriamos un proxy transparente filtrando contenido con Dansguardian y Squid para el cache.

Comments

Respond | Trackback

  1. Una pregunta si no se redirecciona el puerto 80 al 8080 del DG, que es lo que pasa?

  2. [...] enlaces aquí, aquí y [...]

  3. Hola, por error borre el archivo squid que esta en /etc/init.d/squid, por favor prodria decirme como recuperarlo o podria enviarme una copia por e-mail. Gracias.

  4. http://josemanuelruizbaena.blogspot.com/2008/01/squid-transparente.html

    Aquí he publicado una forma un poco más sencilla de instalar un proxy transparente.

  5. gracias amigo

  6. Hola, buen día, alguien sabrá de alguna manera de bloquear el messenger, solo utilizando Iptables y squid ??? he hechado en muchos lugares, pero los he probado, y nada…. voy a seguir intentando y cualquier cosa les aviso.

Comments

Comments: