Powered By Blogger

domingo, 7 de noviembre de 2010

Filtrado Web con Dansguardian, ClamAV y Squid

Desde hace un tiempo estamos utilizando Dansguardian (junto con Squid) para gestionar y controlar el tráfico de navegación en distintas redes, las cuales administramos junto con mi equipo de trabajo.
Los gateways que instalamos son equipos basados en Debian Sarge y utilizan la (famosa) combinación dePostfix + ClamAV + Amavis para filtrar los correos electrónicos entrantes y salientes eliminando así cerca del 98% de los virus (aunque JAMÁS vi entrar un virus por correo, pero no me puedo permitir decir que la eficacia es del 100%) y entre el 60% y el 90% del SPAM .
El único punto flaco del asunto era poder realizar un chequeo de los archivos que se descarguen, razón por la cual aprovechamos la estructura montada para probar la última versión de DG ya que la versión ‘ APTeable ‘ de DG para Sarge (2.8.0.4-2) no viene integrada para trabajar con un sistema AV .

2- Pre requisitos
En éste documento se da por sentado el hecho de que el equipo en el cual se trabaja tenga instalados y funcionando Squid , Amavis y ClamAV . En nuestro caso particular el demonio ClamAV corre como usuario ‘amavis‘ ya que el demonio de Amavis es quien, luego de hacer el análisis bayesiano a cada correo, solicita el escaneo AV a ClamAV . Éste hecho es importante saberlo porque para nuestro caso (que puede diferir del tuyo) el demonio Dansguardian va a tener que correr también como el usuario ‘amavis‘.
3- Antes de comenzar
Antes de ponernos de lleno con el asunto en cuestión, estimado lector, quiero que sepas que los pasos que describiré a continuación no son necesariamente los mismos que hicimos junto con mis colegas durante las horas de prueba y error (y bastante cafeína).
Algunas cosas (como las dependencias) han salido de tener que comernos algún error durante la compilación (situación a la cual, estoy mas que seguro, ya estás acostumbrado), pero el orden que aquí se les dará a los distintos pasos esta pensado para hacer todo el proceso mas rápido, sencillo y medianamente ‘amigable’. podrás ver que los pasos a seguir tienen los comandos que vas a necesitar para que puedas copiar-y-pegar (nada de andar escribiendo mucho, he dicho).
Obviamente puede ser que encuentres algún error o no estés de acuerdo con algo, caso en el cual estás más que invitado a colaborar.
4- Las dependencias
Los binarios y fuentes de las librerías de compresión y de Amavis están ‘APTeables‘ para Debian Sarge por lo cual su instalación es sencilla:
apt-get install zlib-bin zlib1g-dev libclamav-dev
También se necesita la versión 6 (o superior) de PCRE , en el caso de Debian Sarge va a ser necesario actualizarlo por lo que descargamos los sources y compilamos:
#cd /usr/src
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-6.7.tar.gz
#tar -xvzf pcre-6.7.tar.gz
#cd pcre-6.7
#./configure --libdir=/usr/lib
#make && make install && make clean
5- Consiguiendo Dansguardian
Ya estamos en condiciones de comenzar con DG . Te recomiendo que visites el sitio oficial para ponerte al día.
Nosotros hemos utilizado la versión 2.9.7.5 que, hasta el día de hoy, es la versión alpha (ya existe la versión 2.9.8 beta ).
Si es posible, revisa el historial de DG para que sepas que versión alpha hay disponible y los fixes y mejoras agregados.
#cd /usr/src
#wget http://dansguardian.org/downloads/2/Alpha/dansguardian-2.9.7.5.tar.gz
#tar -xvzf dansguardian-2.9.7.5.tar.gz
#cd dansguardian-2.9.7.5
#./configure --enable-clamd --localstatedir=/usr/local/ --prefix=/usr/local --sysconfdir=/etc bindir=/usr/local/sbin/
Antes de compilarlo es importante que verifiques que existan el grupo y el usuario ‘nobody’ , en caso contrario hay que crearlos:
#addgroup nobody
#adduser nobody
Una vez creados:
#make && make install && make clean
6- Post-instalación
6.1- Ajustes a ClamAV
El archivo de socket de Clamd para Unix debe llamarse ‘ clamd.ctl’ . De paso podemos verificar que el usuario que ejecuta Clamd sea ‘amavis’ (necesario para mi caso).
En el archivo /etc/clamav/clamd.conf:
LocalSocket /var/run/clamav/clamd.ctl
User amavis
Si vas a cambiar el usuario que corre ClamAV es necesario que verifiques que el propietario de las carpetas/var/log/clamav y /var/log/clamav sea el usuario ‘amavis’ .
#chown amavis.amavis /var/run/clamav -R
#chown amavis.amavis /var/log/clamav -R
6.2- Ajustes de Squid
En el proxy solo hay que cambiar el puerto al que escucha ya que DG será el que atienda las peticiones en el puerto 8080. Por defecto DG está configurado para comunicarse con Squid mediante el puerto 3128.
En el archivo /etc/squid/squid.conf debes verificar que el puerto esté seteado:
http_port 3128
Otros ajustes más personalizados de Squid quedarán a tu criterio, pero que lo debes tener en cuenta es que a partir de que DG se interponga entre Squid y los equipos clientes las peticiones hechas al proxy serán todas provenientes de la IP 127.0.0.1, lo cual inutilizará cualquier tipo de ACL que tengas configurada.
6.3- Ajustes a Dansguardian
En el archivo de configuración de DG es necesario cambiar algunas cosas parea que éste funcione. Tené en cuenta que algunas son cosas necesarias y van mas allá de la optimización o adaptación a tus necesidades.
En /etc/dansguardian/dansguardian.conf cambiar:
daemonuser='amavis'
daemongroup='amavis'
Descomentar la linea que dice:
contentscanner='/etc/dansguardian/contentscanners/clamdscan.conf'
En nuestro caso utilizamos Sarg para levantar los logs de navegación. Puntualmente hemos configurado DGpara que genera los logs en el mismo formato que Squid y solo cambiamos la carpeta donde Sarg buscará los logs .
Cambiar el destino de los logs y el formato:
loglocation='/var/log/dansguardian/access.log'
logfileformat = 3
NOTA: hay que cambiar, entonces, en el archivo /etc/squid/sarg.conf la carpeta de logs:
access_log /var/log/dansguardian/access.log
Editar el archivo /etc/dansguardian/contentscanners/clamdscan.conf y descomentar la linea que dice:
clamdudsfile='/var/run/clamav/clamd.ctl'
Crear como root el directorio /var/log/dansguardian y cambiar dueño y grupo para amavis . Si ya esta creado, solo cambiar los permisos.
#chown amavis.amavis dansguardian/ -R
7- Finalizando la instalación
Ahora solo restan dos pasos para dejar todo correctamente configurado.
7.1- Creación del script de arranque
Éste script será el que nos ayude a iniciar, detener y reiniciar el servicio de Dansguardian El mismo será llamado ‘dansguardian‘ a secas y será copiado a la carpeta /etc/init.d.
El contenido del mismo deberá ser:
#! /bin/sh
# Script startup para Dansguardian
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/dansguardian
NAME=dansguardian
DESC="DansGuardian"
CONFFILELOCATION=/etc/dansguardian/
set -e
case "$1" in
start)
echo -n "Iniciando $DESC: "
$DAEMON
echo "$NAME."
;;
stop)
echo -n "Deteniendo $DESC: "
$DAEMON -q
echo "$NAME."
;;
reload)
echo "Recargando los archivos de configuracion de $DESC."
$DAEMON
;;
restart|force-reload)
echo -n "Reiniciando $DESC: "
$DAEMON -Q
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Utilizar: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
7.2- Configurando el arranque automático
Para que DG arranque automáticamente cuando inicie el sistema simplemente utilizamos el comando update-rc.d.
Lo único que hay que tener en cuenta es que DG debe iniciar solo después de Squid . Por lo cual será conveniente colocarle un número de prioridad mayor que el de éste último.
Para verificar la prioridad de arranque:
#ls -l /etc/rc2.d/
y buscamos la línea que dice:
S30squid -> ../init.d/squid
En éste caso debemos darle prioridad mayor que 30 para que DG arranque luego de Squid , entonces el comando que utilizaremos será:
#update-rc.d dansguardian defaults 40
8- Enlaces
Algunos enlaces interesantes
Sitio oficial de Dansguardian : http://www.dansguardian.org/
Sitio oficial de Amavis: http://www.amavis.org
Sitio oficial de Squid: http://www.squid.org
Sitio oficial de ClamAV: http://www.clamav.net


AGRADECER NO CUESTA NADA!!!!

No hay comentarios:

Publicar un comentario