sendmail-Clam.html   [plain text]


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Antivirus para Sendmail con clam</title>
</head>
<body>
<h1 align="center">Antivirus para servidor de correo Sendmail con ClamAv</h1>
<hr align="center" size="5" width="95%">
<br>
<p>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."
</p>
<a name="contenido">
<p>La instalación se puede dividir en cuatro etapas:</p>
<ol>
	<a href="#clamav">
	<li>- Instalación del antivirus: ClamAV</a></li>
	<br>
	<a href="#milter">
	<li>- Instalacion del programa de enlace entre el antivirus y el servidor de correo sendmail</a></li>
	<br>
	<a href="#sendmail">
	<li>- Configuración de sendmail para usar el antivirus</a></li>
	<br>
	<a href="#pruebas">
	<li>- Pruebas del sistema</a></li>
	<br>
</ol>



<!-- SECCIÓN CLAMAV------------------------------------------------------------------ -->
<hr align="center" size="3" width="85%">
<h3><a name="clamav">1.- Instalación del antivirus: ClamAV</h3>
<br>
<p>Vamos a instalarlo desde las fuentes, por lo tanto debemos descargar dichas fuentes
desde la pagina de <a href="http://clamav.elektrapro.com/">Clam Antivirus</a> en la sección 
de <a href="http://download.sourceforge.net/clamav/">stable versions</a>(versiones estables).
</p>
 
<p>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.</p>

<p>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.</p>


<br><br><br>

<h4>Configuración previa:</h4>

<p>Si es la primera vez que instalamos Clam entonces debemos crear un usuario y un grupo para él:
<br>
<ul>
<li>groupadd clamav</li>
<li>useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav</li>
</ul>
<br>
<h4>Instalación:</h4>
<ul>
<li>Descomprimir las fuentes:     <em>tar zxpvf clamav-x.yz.tar.gz</em></li><br>
<li>Si queremos que el archivo de configuración este en /etc, debemos indicarle:
<em>./configure --sysconfdir=/etc</em></li>
<li><em>make</em></li>
<li><em>su -c 'make install'</em></li>
</ul>
Listo!! con eso tenemos instalado el clam.</p>

<h4>Prueba:</h4>

<p>Para probarlo ejecutemos una busqueda de virus a traves del directorio de las fuentes:
<br><br>
<em>clamscan -r -l scan.txt /usr/src/clamav-0.60/</em>
<br><br>
Y el archivo resultante scan.txt debe contener algo así como:<br><br>
<em>--------------------------------------<br>
Scan started: Thu Oct  2 18:42:28 2003<br>
<br>
/usr/src/clamav-0.60//test/test1: ClamAV-Test-Signature FOUND<br>
/usr/src/clamav-0.60//test/test1.bz2: ClamAV-Test-Signature FOUND<br>
/usr/src/clamav-0.60//test/test2.zip: ClamAV-Test-Signature FOUND<br>
/usr/src/clamav-0.60//test/test3.rar: ClamAV-Test-Signature FOUND<br>
/usr/src/clamav-0.60//test/test2.badext: ClamAV-Test-Signature FOUND<br>
<br>
-- summary --<br>
Known viruses: 7846<br>
Scanned directories: 38<br>
Scanned files: 377<br>
Infected files: 5<br>
Data scanned: 6.19 Mb<br>
I/O buffer size: 131072 bytes<br>
Time: 9.945 sec (0 m 9 s)<br>
<br><br>
</em>
<br>
</p>

<p>
Si vamos a usar clam em modo demonio devemos editar /etc/clamav.conf, mas informacion:<br>
<em>man 5 clamav.conf</em><br>
<br>
Mecesitaremos que corra como demonio si vamos a usar clamav-milter.<br>
</p>

<a href="#contenido">Volver</a>



<!-- SECCIÓN MILTER------------------------------------------------------------------ -->
<hr align="center" size="3" width="85%">

<h3><a name="milter">2.- Instalacion del programa de enlace entre 
el antivirus y el servidor de correo sendmail</h3>
<br>
<p>Ahora que clam esta funcionando correctamente, procedemos a instalar el software 
necesario para que sendmail envie los correos a clamscan para su revisión.<br>
Tenemos varias opciones:<br>
<br>
<ul>
<a href="#clamav-milter">
<li><strong>clamav-milter:</strong></a> 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. </li>
<br>
<a href="#nextg">
<li><strong>AMaViS - "Next Generation": </strong></a> Es una reimplementación mas modular de 
amavis-perl/amavisd, desarrollado por Hilko Bengen</li>
<br>
<a href="#amavisnew">
<li><strong>amavisd-new:</strong></a> Es una reimplementación de amavis mantenida por Mark Martinec</li>
<br>
</ul>
</p>


<strong>Nota sobre milter y sendmail:</strong><br>
<br>
<p>
Si vamos a usar uno de los milter a continuación descritos, debemos tener los archivos de desarrollo libmilter.<br>
<br> Estos archivos de desarrollo 
vienen con sendmail, pero sendmail debe estar compilado con soporte para milter.<br>
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.<br>
<br>
En caso de que sendmail lo construyamos nosotros mismos debemos crear un archivo <em>site.config.m4</em>
 que contenga :<br><br>
 <em>APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')</em>
 <br><br>
Y dicho archivo debe ir en: <em> ~/sendmail-x.xx.x/devtools/Site</em>
<br><br>
Los archivos de desarrollo tambien pueden existir como paquetes en rpm o dev, para 
encontrar paquetes rpm podemos dar un vistazo en: <br>
<a href="http://rpmfind.net">http://rpmfind.net</a> buscando sendmail-devel.<br>
<br>
Si usamos Debian tan facil como:<br>
<em>apt-cache search libmilter</em><br>
<br>
Y sabremos que instalar.
 <p>
		<!--SUBSECCIONES DE MILTER-------------------------------------------  -->

<a name="clamav-milter">
<p>
<strong>Clamav-milter:</strong><br><br>
Al parecer es una buena opción sobre todo teniendo en cuenta la integración con clamAv,
 para usarlo necesitamos reconfigurar ClamAv con:<br>
<br>
<em>./configure --enable-milter</em><br>
<br>

Ok, vamos al directorio de las fuentes de ClamAv.

<br>
<em>cd ~/lamav-x.yz/</em><br>
<br>
Y ejecutamos:<br>
<br>
<em>./configure --enable-milter --sysconfdir=/etc </em><br>
<br>
<em>make</em><br>
<br>
<em>make install</em><br>
<br>
<p>Si tenemos las librerias libmilter instaladas la compilación sera exitosa, si no pués
obviamente fallará.<br>
El programa quedará instalado en  /usr/local/sbin/clamav-milter.<br>
<br>
<br>
Ya esta listo el milter, ahora vayamos a configurar <a href="#sendmail-clamav-milter">sendmail para clamav-milter.</a><br>
<br>

<!-- ----------------------------------------------------------------- -->

<a name="nextg">
<p><strong>AMaViS - "Next Generation":</strong><br><br>
Lo podemos descargar desde :<br>
<br>
<a href="http://sourceforge.net/projects/amavis">http://sourceforge.net/projects/amavis</a><br>
<br>
Los descomprimimos: <em>tar zxpvf amavis-ng_0.1.6.4.orig.tar.gz</em><br>
<br>
Si queremos documentación de amavis-ng, tenemos que entar al subdirectorio doc/ y ejecutar:<br>
<br>
<em>make amavis-ng.info</em><br>
<br>
<br>
O si tenemos instalado texi2html:<br>
<br>
<em>texi2html amavis-ng.texi</em><br>
<br>
Que nos pruducira la documentación en html :)
<br>
<br><br>

<br><strong>Requisitos para amavis-ng:</strong><br>
<br>
Modulos Perl:<br>

<ul>
<li>File::MMagic</li>
<li>Config::IniFiles</li>
<li>MIME::Tools</li>
</ul>
Si se tiene instalado el modulo CPAN la cosa es tan facil como:<br>
<br>
<em>perl -MCPAN -e shell</em><br>
<br>
E irle indicando uno a uno:<br>
<br>
<em>install File::MMagic</em><br>
<br>
etc...<br>
<br>
</p>

<p>
<strong>Recomendados pero no indispensables:</strong><br>
<br>
Modulos perl:<br>
<br>
<ul>
<li>Convert::TNEF</li>
<li>Compress::Zlib</li>
<li>Archive::Tar</li>
<li>Archive::Zip</li>
</ul>
<br>
<br>
Programas compresión/descompresión:<br>
<br>
<ul>
<li>unrar</li>
<li>Zoo</li>
<li>Unzoo</li>
<li>nomarch</li>
<li>lha</li>
<li>unarj</li>
<li>zcat</li>
<li>bunzip2</li>
</ul>
<br>
Para verificar si los tenemos ya instalados:<br>
<br>
<em>-rpm -q paquete o -dpkg -s paquete, yast, linuxconf, etc.</em><br>
<br>
<br>
Para instalar:<br>
<br>
<em>-rpm -i paquete o -dpkg -i paquete, yast, linuxconf, etc.</em><br>
<br>
</p>

<strong>Instalando amavis-ng:</strong><br>
<br>
<em>perl Makefile.PL</em><br>
<br>
<em>make</em><br>
<br>
<em>su -c"make install"</em><br>
<br>
<br>
<strong>Instalando amavis-milter:</strong><br>
<br>
Dado que vamos a utilizar amavis con sendmail, debemos instalar también el
programa milter, que permitira "conectar" sendmail y amavis.<br>
La instalación también es muy sencilla:<br>
<br>
<em>make -C amavis-milter</em><br>
<br>
<em>$ su -c "make -C amavis-milter install"</em><br>
<br>
<br>
<strong>configurando amavis-ng:</strong><br>
<br>
- Copiar el archivo de configuracion de ejemplo a <em>/etc/amavis-ng/</em>, editarlo y 
modificar de la siguiente manera:<br>
<ul>
<li>mail-transfer-agent = Milter</li>
<li>virus-scanner = CLAM (o CLAMD)</li>
<li>notifiers=Sender, Recipients, Admin</li>
</ul>
<br>
Y las secciones: <br>
<em>[Milter]<br>
<br>
amavis socket = /var/run/amavis-ng/socket.amavis<br>
<br>
milter socket = /var/run/amavis-ng/socket.milter<br>
<br>
amavis-milter = /usr/sbin/amavis-milter<br>
<br>
amavis-milter pidfile = /var/run/amavis-ng/amavis-milter.pid</em><br>
<br><br>
Y <br>
<em>[CLAM]<br>
<br>
clamscan = /usr/bin/clamscan</em><br>
<br><br>
o:<br>
<em>[CLAMD]<br>
socket = localhost:3310</em>
<br><br>
<BR>
Ya esta listo el milter, ahora vayamos a configurar <a href="#sendmail-nextg">sendmail para amavis-ng.</a><br>
<br>

<!-- --------------------------------------------------------------------------- -->
<a name="amavisnew">
<p>
<p><strong>AMaViS - New:</strong><br><br>
Aún no lo he utilizado, asi que se deja como ejercició al que lo quiera usar :)<br>

</p>


<a href="#contenido">Volver</a>



<hr align="center" size="3" width="85%">
<!-- SECCIÓN SENDMAIL--------------------------------------------------------------- -->
<a name="sendmail">
<h3>Configuración de sendmail para usar el antivirus</h3>

<a name="sendmail-clamav-milter">
<strong>Sendmail y clamav-milter:</strong></a>
<br>
<br>
Las siguientes instrucciones fueron tomasdas del archivo INSTALL de las fuentes:<br>
<br>
Agregar a /etc/mail/sendmail.mc:<br>
<br>
<em>INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav.sock, F=, T=S:4m;R:4m')dnl<br>
        define(`confINPUT_MAIL_FILTERS', `clamav')<br></em>
<br>
<br>
No olvidemos regenerar sendmail.cf<br>
<br>
<br>
Verificar que existan en clamav.conf las siguientes entradas:<br>
<br>
<em>LocalSocket /var/run/clamd.sock<br>
SaveStreamToDisk<br></em>
<br>
<br>
Finalmente iniciar clamav-milter:<br>
<br>
<em>/usr/local/sbin/clamav-milter -blo /var/run/clamav.sock</em><br>
<br>
Y reiniciar sendmail<br>
<br>
****En el mismo directorio de las fuentes del clamav-milter viene un script <em>clamd.sh</em>
Que podemos poner en /etc/init.d/ para iniciar el clamd.****<br>
</p>        
<br><br><br>
Asi que si todo ha ido bien, ya hemos concluido y es hora de hacer alguna prueba.
<br><br><br>

<a name="sendmail-nextg">
<strong>Sendmail y AMaViS - "Next Generation": </strong>
<br>
<br>
Agregar lo siguiente al archvivo `sendmail.mc':<br>
<br>
<em>
define(`MILTER', 1)<br>
INPUT_MAIL_FILTER(`milter-amavis', \<br>
  `S=local:/var/run/amavis-ng/socket.milter, F=T, T=S:10m;R:10m;E:10m')</em><br>
<br><br>
Rehacer el sendmail.cf y reiniciar sendmail.<br>
Si AMaViS-ng no esta corriendo al iniciar sendmail, este nos hará una advertencia:<br>
<em>
<br>
Xmilter-amavis: local socket name /var/run/amavis-ng/socket.milter missing</em><br>
<br>
Pero tan pronto se inicie amavis no habrá ningun problema
<br><br><br>


		<!-- -------------------------------------------------------------- -->
<a name="sendmail-amavisnew">
<strong>sendmail y amavisd-new:</strong>
<br>
Aún no lo he utilizado, asi que se deja como ejercició al que lo quiera usar :)<br>
<br>



<a href="#contenido">Volver</a>


<!-- SECCION PRUEBAS----------------------------------------------------------- -->
<hr align="center" size="3" width="85%">

<a name="pruebas">
<h3>Pruebas del sistema</h3>
<p>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.</p>

<a href="#contenido">Volver</a>





<hr align="center" size="3" width="85%">



<h3>Actualizando el sistema de detección de virus</h3>
<p>
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.
</p>
<h4>Remover antiguo clam</h4>

<p>Entrar al directorio donde esta nuestro código fuente y nuesto Makefile 
y simplemente hacer:<br><br>
<em>make uninstall</em>
<br><br>
Con lo anterior tendriamos desinstalado la versión antigua de clam.
</p> 


<h4>Remover amavis perl-11</h4>

<p>Entrar al directorio donde esta nuestro código fuente y nuesto Makefile 
y simplemente hacer:<br><br>
<em>make uninstall</em>
<br><br>
Con lo anterior tendriamos desinstalado amavis perl-11.
<br>

</p> 

<h4>Deshacer cambios para amavis-perl en Sendmail</h4>
<p>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.
<br><br>
<ul>
<li>Respaldar sendmail.cf (con lineas para habilitar amavis), solo por precaución.<br>
<em> cp sendmail.cf sendmail.cf.amavisperl</em> </li>
<br>
<li>Devolver la version original de sendmail.cf :<br>
<em>cp sendmail.orig.cf sendmail.cf</em></li>
<br>
<li>Reiniciar sendmail</li>
<br>
<li>Probar el envío/recepción de correo, para asegurarnos que todo volvió 
a la normalidad :)</li>
</ul>
</p>
<a href="#contenido">Volver</a>

<hr align="center" size="3" width="85%">

</body>
</html>