Antivirus para servidor de correo Sendmail con ClamAv



En esta ocasión vamos a implementar un sistema de detección y bloqueo de virus para Sendmail, utilizando para esto el mejor antivirus del software libre "clamAv."

La instalación se puede dividir en cuatro etapas:

  1. - Instalación del antivirus: ClamAV

  2. - Instalacion del programa de enlace entre el antivirus y el servidor de correo sendmail

  3. - Configuración de sendmail para usar el antivirus

  4. - Pruebas del sistema


1.- Instalación del antivirus: ClamAV


Vamos a instalarlo desde las fuentes, por lo tanto debemos descargar dichas fuentes desde la pagina de Clam Antivirus en la sección de stable versions(versiones estables).

En la fecha de última actualización de esta guía [2k31002] la versión estable más reciente es: clamav-0.60.tar.gz, del 29 de julio del 20003. Asi que usaremos ésta.

Como con todo lo que bajemos de internet, es una práctica saludable el verificar la integridad de lo que estamos descargando; en el mismo directório del cual descargamos las fuentes esta el archivo de firma clamav-0.60.tar.gz.sig, el cual también debemos de descargar y descomprimir.




Configuración previa:

Si es la primera vez que instalamos Clam entonces debemos crear un usuario y un grupo para él:


Instalación:

Listo!! con eso tenemos instalado el clam.

Prueba:

Para probarlo ejecutemos una busqueda de virus a traves del directorio de las fuentes:

clamscan -r -l scan.txt /usr/src/clamav-0.60/

Y el archivo resultante scan.txt debe contener algo así como:

--------------------------------------
Scan started: Thu Oct 2 18:42:28 2003

/usr/src/clamav-0.60//test/test1: ClamAV-Test-Signature FOUND
/usr/src/clamav-0.60//test/test1.bz2: ClamAV-Test-Signature FOUND
/usr/src/clamav-0.60//test/test2.zip: ClamAV-Test-Signature FOUND
/usr/src/clamav-0.60//test/test3.rar: ClamAV-Test-Signature FOUND
/usr/src/clamav-0.60//test/test2.badext: ClamAV-Test-Signature FOUND

-- summary --
Known viruses: 7846
Scanned directories: 38
Scanned files: 377
Infected files: 5
Data scanned: 6.19 Mb
I/O buffer size: 131072 bytes
Time: 9.945 sec (0 m 9 s)



Si vamos a usar clam em modo demonio devemos editar /etc/clamav.conf, mas informacion:
man 5 clamav.conf

Mecesitaremos que corra como demonio si vamos a usar clamav-milter.

Volver

2.- Instalacion del programa de enlace entre el antivirus y el servidor de correo sendmail


Ahora que clam esta funcionando correctamente, procedemos a instalar el software necesario para que sendmail envie los correos a clamscan para su revisión.
Tenemos varias opciones:

Nota sobre milter y sendmail:

Si vamos a usar uno de los milter a continuación descritos, debemos tener los archivos de desarrollo libmilter.

Estos archivos de desarrollo vienen con sendmail, pero sendmail debe estar compilado con soporte para milter.
El soporte oficial para el API milter es a partir de la versión 8.12 de sendmail, asi que vale la pena tener esto en cuenta.

En caso de que sendmail lo construyamos nosotros mismos debemos crear un archivo site.config.m4 que contenga :

APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')

Y dicho archivo debe ir en: ~/sendmail-x.xx.x/devtools/Site

Los archivos de desarrollo tambien pueden existir como paquetes en rpm o dev, para encontrar paquetes rpm podemos dar un vistazo en:
http://rpmfind.net buscando sendmail-devel.

Si usamos Debian tan facil como:
apt-cache search libmilter

Y sabremos que instalar.

Clamav-milter:

Al parecer es una buena opción sobre todo teniendo en cuenta la integración con clamAv, para usarlo necesitamos reconfigurar ClamAv con:

./configure --enable-milter

Ok, vamos al directorio de las fuentes de ClamAv.
cd ~/lamav-x.yz/

Y ejecutamos:

./configure --enable-milter --sysconfdir=/etc

make

make install

Si tenemos las librerias libmilter instaladas la compilación sera exitosa, si no pués obviamente fallará.
El programa quedará instalado en /usr/local/sbin/clamav-milter.


Ya esta listo el milter, ahora vayamos a configurar
sendmail para clamav-milter.

AMaViS - "Next Generation":

Lo podemos descargar desde :

http://sourceforge.net/projects/amavis

Los descomprimimos: tar zxpvf amavis-ng_0.1.6.4.orig.tar.gz

Si queremos documentación de amavis-ng, tenemos que entar al subdirectorio doc/ y ejecutar:

make amavis-ng.info


O si tenemos instalado texi2html:

texi2html amavis-ng.texi

Que nos pruducira la documentación en html :)



Requisitos para amavis-ng:

Modulos Perl:

Si se tiene instalado el modulo CPAN la cosa es tan facil como:

perl -MCPAN -e shell

E irle indicando uno a uno:

install File::MMagic

etc...

Recomendados pero no indispensables:

Modulos perl:



Programas compresión/descompresión:


Para verificar si los tenemos ya instalados:

-rpm -q paquete o -dpkg -s paquete, yast, linuxconf, etc.


Para instalar:

-rpm -i paquete o -dpkg -i paquete, yast, linuxconf, etc.

Instalando amavis-ng:

perl Makefile.PL

make

su -c"make install"


Instalando amavis-milter:

Dado que vamos a utilizar amavis con sendmail, debemos instalar también el programa milter, que permitira "conectar" sendmail y amavis.
La instalación también es muy sencilla:

make -C amavis-milter

$ su -c "make -C amavis-milter install"


configurando amavis-ng:

- Copiar el archivo de configuracion de ejemplo a /etc/amavis-ng/, editarlo y modificar de la siguiente manera:

Y las secciones:
[Milter]

amavis socket = /var/run/amavis-ng/socket.amavis

milter socket = /var/run/amavis-ng/socket.milter

amavis-milter = /usr/sbin/amavis-milter

amavis-milter pidfile = /var/run/amavis-ng/amavis-milter.pid



Y
[CLAM]

clamscan = /usr/bin/clamscan



o:
[CLAMD]
socket = localhost:3310



Ya esta listo el milter, ahora vayamos a configurar sendmail para amavis-ng.

AMaViS - New:

Aún no lo he utilizado, asi que se deja como ejercició al que lo quiera usar :)

Volver

Configuración de sendmail para usar el antivirus

Sendmail y clamav-milter:

Las siguientes instrucciones fueron tomasdas del archivo INSTALL de las fuentes:

Agregar a /etc/mail/sendmail.mc:

INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav.sock, F=, T=S:4m;R:4m')dnl
define(`confINPUT_MAIL_FILTERS', `clamav')


No olvidemos regenerar sendmail.cf


Verificar que existan en clamav.conf las siguientes entradas:

LocalSocket /var/run/clamd.sock
SaveStreamToDisk


Finalmente iniciar clamav-milter:

/usr/local/sbin/clamav-milter -blo /var/run/clamav.sock

Y reiniciar sendmail

****En el mismo directorio de las fuentes del clamav-milter viene un script clamd.sh Que podemos poner en /etc/init.d/ para iniciar el clamd.****




Asi que si todo ha ido bien, ya hemos concluido y es hora de hacer alguna prueba.


Sendmail y AMaViS - "Next Generation":

Agregar lo siguiente al archvivo `sendmail.mc':

define(`MILTER', 1)
INPUT_MAIL_FILTER(`milter-amavis', \
`S=local:/var/run/amavis-ng/socket.milter, F=T, T=S:10m;R:10m;E:10m')



Rehacer el sendmail.cf y reiniciar sendmail.
Si AMaViS-ng no esta corriendo al iniciar sendmail, este nos hará una advertencia:

Xmilter-amavis: local socket name /var/run/amavis-ng/socket.milter missing


Pero tan pronto se inicie amavis no habrá ningun problema


sendmail y amavisd-new:
Aún no lo he utilizado, asi que se deja como ejercició al que lo quiera usar :)

Volver

Pruebas del sistema

Para probar el sistema solo hay que enviar algunos de los archivos con firmas de viruas que vienen en las fuentes del clam, para checar si el sistema esta detectando los virus en los correos.

Volver

Actualizando el sistema de detección de virus

Para los que habian instalado clamav + amavisPerl + sendmail, esta secciòn les ayuda a deshacer los cambios de dicha instalacion, para poder instalar la nueva versión de Clam, con los milters.

Remover antiguo clam

Entrar al directorio donde esta nuestro código fuente y nuesto Makefile y simplemente hacer:

make uninstall

Con lo anterior tendriamos desinstalado la versión antigua de clam.

Remover amavis perl-11

Entrar al directorio donde esta nuestro código fuente y nuesto Makefile y simplemente hacer:

make uninstall

Con lo anterior tendriamos desinstalado amavis perl-11.

Deshacer cambios para amavis-perl en Sendmail

Como recordaran aquellos que usaron amavis perl, se requeria hacer algunos cambios a la configuración de Sendmail para habilitar amavis, es momento de deshacerlos.

Volver