Antivirus para Sendmail con clam

# 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:

- groupadd clamav
- useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

#### Instalación:

- Descomprimir las fuentes: tar zxpvf clamav-x.yz.tar.gz
- Si queremos que el archivo de configuración este en /etc, debemos indicarle: ./configure --sysconfdir=/etc
- make
- su -c 'make install'

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:

- clamav-milter:
Escrito por Nigel Horne es un muy rápido scanner de correo diseñado para sendmail. Esta escrito en C y utiliza el scanner interno de correo de ClamAv también escrito por Nigel.
- AMaViS - "Next Generation":
Es una reimplementación mas modular de amavis-perl/amavisd, desarrollado por Hilko Bengen
- amavisd-new:
Es una reimplementación de amavis mantenida por Mark Martinec

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:

- File::MMagic
- Config::IniFiles
- MIME::Tools

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:

- Convert::TNEF
- Compress::Zlib
- Archive::Tar
- Archive::Zip

Programas compresión/descompresión:

- unrar
- Zoo
- Unzoo
- nomarch
- lha
- unarj
- zcat
- bunzip2

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:

- mail-transfer-agent = Milter
- virus-scanner = CLAM (o CLAMD)
- notifiers=Sender, Recipients, Admin

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.

- Respaldar sendmail.cf (con lineas para habilitar amavis), solo por precaución.
  cp sendmail.cf sendmail.cf.amavisperl
- Devolver la version original de sendmail.cf :
  cp sendmail.orig.cf sendmail.cf
- Reiniciar sendmail
- Probar el envío/recepción de correo, para asegurarnos que todo volvió a la normalidad :)

Volver