Filtrando el correo de Virus en Postfix con ClamSMTP (ClamAV)
December 12th, 2007 by BusindrePara filtrar el correo entrante en busca de virus en servidores de correo Postfix necesitamos clamsmtp. Esta útil herramienta GPL permite conexiones smtp, protegiendo así a los usuarios del correo electrónico comprobando la posible presencia de virus en adjuntos y correos de Phising utilizando el software ClamAV.
¿Que necesitamos?
1 - Postfix (Instalado y funcionando)
2 - Clamav (Instalado y clamd activado).
3 - iptables (En todas las distros lo podremos encontrar por defecto)
4 - ClamSMTP (http://memberwebs.com/nielsen/software/clamsmtp/)
Instalación de ClamSMTP (Compilación)
$ tar -zxvf clamsmtp-1.9.tar.gz
$ cd clamsmtp-1.9/
$ ./configure --prefix=/usr
$ make
# make install
Configurar clamd.conf para usar clamsmtp
En clamd.conf debemos comentar (#) esta opción:
#TCPSocket 3310
Y tener activada esta otra opción:
FixStaleSocket yes
Configurar clamsmtp
Creamos el fichero /usr/etc/clamsmtpd.conf con el siguiente contenido:
TimeOut: 600
ClamAddress: /tmp/clamd.socket
TempDirectory: /home/busi/clamav/virus_incoming
TransparentProxy: on
Quarantine: on
#VirusAction: /home/busi/clamav/bin/script
User: busi
NOTA: En la pagina del proyecto encontraremos más opciones y mas formas de filtrar el correo.
Debemos asegurarnos de que en nuestro fichero clamd.conf la opción "LocalSocket" tenga el valor /tmp/clamd.socket. El usuario es "busi", porque se da por supuesto que la instalación se realizo a nivel de usuario como comentamos en un anterior articulo. De no ser así y tener instalado clamav en modo global (root) solo debemos cambiar el usuario busi (usuario del sistema) por clamav.
La opción TempDirectory indica donde se ubicarán los virus encontrados y puestos en cuarentena. Esto será así mientras este la opción "Quarantine: on". Es recomendable tener activada dicha opción ya que estando desactivada se borran los mails que contienen virus y puede que interese tenerlos controlados para avisar a alguien de que esta infectado o simplemente por curiosidad.
La opción VirusAction sirve para indicarle a clamsmtp un comando a realizar cuando llegue con virus algún mail a nuestro servidor. Como clamsmtp usa clamd, si tenemos puesto en el fichero clamd.conf que realice algún comando al encontrar virus, este lo realizara también al llegarnos un mail con malware al servidor. Siguiendo la configuración de este post, al llegarnos un mail con Virus, se nos avisa mediante un correo, mediante la opción:
Tenemos que crear la carpeta donde estarán los mails en cuarentena:
$ mkdir /home/busi/clamav/virus_incoming
VirusEvent mutt -s "VIRUS ALERT: %v" "busi@busindre.is-a-guru.com" -a "$HOME/clamav/log/clamd.log" <$HOME/clamav/log/clamd.log
Por lo que no es necesario indicarlo en la opción "VirusAction" del fichero clamsmtpd.conf, pudiéndolo usar dicha opción para otro menester.
Como filtrar los virus en Postfix
Con el firewall iptables debemos redireccionar el correo del puerto 25 al puerto 10025, que es donde está el servidor CLAMSMTP escuchando. Clamsmtp hace de proxy transparente encargado de enviar el correo filtrado al puerto 25 de la máquina.
iptables -t nat -A PREROUTING -i rausb0 -p tcp --dport 25 -j REDIRECT --to-port 10025
NOTA: En el ejemplo se puso rausb0 como la tarjeta de red que saca al PC a internet, cada uno que lo modifique por su tarjeta (ra0, wlan0, eth0, eth1,...)
Una vez configurado todo y aplicada la regla de iptables, es arrancar clamsmtp como root (Ponerlo en típico script de inicio, junto a la regla iptables descrita para que se active en el arranque de GNU/Linux). Una vez vez arrancado clamsmtp, la regla de iptables y clamd, ya se estarán filtrando correos.
NOTA: Recordar que si no arrancamos clamd no se recibirán correos, dando en el log la sifuiente salida:
Dec 15 21:11:47 busipc clamsmtpd: 10002A: accepted connection from: 201.86.146.179
Dec 15 21:11:47 busipc postfix/smtpd[9151]: connect from busipc[192.168.1.33]
Dec 15 21:11:49 busipc postfix/smtpd[9151]: 21A514EE57: client=busipc[192.168.1.33]
Dec 15 21:11:49 busipc clamsmtpd: 10002A: CLAMAV: couldn't connect to: /tmp/clamd.socket: No such file or directory
Dec 15 21:11:49 busipc clamsmtpd: 10002A: from=busilezas@zorras.com, to=busi@busindre.is-a-guru.com
Dec 15 21:11:49 busipc postfix/smtpd[9151]: disconnect from busipc[192.168.1.33]
Posted in How To |
