Cómo configurar clamav-milter.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2011 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra, y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer, y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento, y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca de clamav-milter.

Clamav-milter es un componente para añadir (Plug-in) para la biblioteca de filtros de correo (libmilter) de Sendmail, que se encarga de hacer pasar todo el correo entrante, incluyendo todo lo que se reciba a través de rmail/UUCP, a través del ClamAV, que a su vez es un poderoso, y robusto motor, con licenciamiento libre, para la detección de gusanos, troyanos, y virus. Verifica el correo electrónico durante la conexión con el servidor de correo que remite éste ultimo, y lo rechaza automáticamente si éste incluye algún gusanos, troyanos o virus.

Al igual que clamav-milter, el cual es utilizado para la filtración de Spam, representa una excelente alternativa pues tiene un bajo consumo de recursos de sistema, haciéndolo idóneo para servidores con sustento físico obsoleto, o donde otras aplicaciones tiene mayor prioridad en la utilización de recursos de sistema.

URL: http://www.clamav.net/

Acerca de ClamAV.

ClamAV es un conjunto de herramientas antivirus, libre, y de código fuente abierto, que tiene las siguiente características:

•  Distribuido bajo los términos de la Licencia Publica General GNU versión 2.
•  Cumple con las especificaciones de familia de estándares POSIX (Portable Operating System Interface for UNIX o interfaz portable de sistema operativo para Unix).
•  Exploración rápida.
•  Detecta más de 720 mil virus, gusanos, y troyanos, incluyendo virus para MS Office.
•  Capacidad para examinar contenido de archivos ZIP, RAR, Tar, Gzip, Bzip2, MS OLE2, MS Cabinet, MS CHM, y MS SZDD.
•  Soporte para explorar archivos comprimidos con UPX, FSG, y Petite.
•  Avanzada herramienta de actualización con soporte para firmas digitales, y consultas basadas sobre DNS.

URL: http://www.clamav.net/

Equipamiento lógico necesario.

•  sendmail (previamente configurado) •  sendmail-cf
•  make •  m4
•  clamav •  clamav-milter

Creación del usuario para ClamAV.

De modo predeterminado, en los paquetes RPM basados sobre los disponibles para Fedora, el usuario para ClamAV se asigna a través de los mandatos fedora-groupadd, y fedora-useradd el UID, y GID 4 en el sistema. A fin de prevenir un conflicto de UID/GID con otros usuarios, y grupos de sistema, se recomienda crear previamente al grupo, y usuario correspondientes para ClamAV:

groupadd -r clamav
useradd -r -s /sbin/nologin -d /var/lib/clamav -M -c 'Clamav Antivirus' -g clamav clamav

Instalación a través de yum.

Si dispone de un servidor con CentOS 5, y 6 o Red Hat™ Enterprise Linux 5, y 6, puede utilizar el el almacén YUM de Alcance Libre para servidores en producción, descargando el archivo http://www.alcancelibre.org/al/server/AL-Server.repo dentro del directorio /etc/yum.repos.d/:

cd /etc/yum.repos.d/
wget -N http://www.alcancelibre.org/al/server/AL-Server.repo
cd

Este archivo, que se guarda como /etc/yum.repos.d/AL-Server.repo, debe tener el siguiente contenido:

[AL-Server]
name=AL Server para Enterprise Linux $releasever
mirrorlist=http://www.alcancelibre.org/al/el$releasever/al-server
gpgcheck=1
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY

La instalación a través del mandato yum requiere utilizar lo siguiente:

yum -y install clamav-milter clamav-milter-sysv clamav-data-empty clamav-update clamav-scanner clamav-scanner-sysvinit

Procedimientos.

SELinux, y el servicio clamav-milter.

CentOS 5, y Red Hat Enterprise Linux 5.

En CentOS 5 ,y Red Hat Enterprise Linux 5 se debe crear una política para permitir al servicio clamd.scan utilizar JIT, y la función execmem().

Genere un nuevo directorio denominado /usr/share/selinux/packages/clamd:

mkdir /usr/share/selinux/packages/clamd

Cambiarse al directorio /usr/share/selinux/packages/clamd:

cd /usr/share/selinux/packages/clamd

Descargar el archivo http://www.alcancelibre.org/linux/secrets/clamd.te:

wget http://www.alcancelibre.org/linux/secrets/clamd.te

Editar el archivo recién descargado:

vim clamd.te

Asegurarse que tenga el siguiente contenido:

module clamd 1.0;

require {
	type clamd_t;
	class process execmem;
}

#============= clamd_t ==============
allow clamd_t self:process execmem;

Lo anterior fue obtenido de la salida del mandato cat /var/log/audit/audit.log|grep audit|audit2allow -m clamd>clamd.te en un sistema donde SELinux impedía a clamav-milter utilizar la función execmem().

A continuación, se genera un el archivo de módulo para SELinux (clamd.mod) utilizando el mandato checkmodule de la siguiente forma:

checkmodule -M -m -o clamd.mod clamd.te

Luego, se procede a empaquetar el archivo clamd.mod como el archivo clamd.pp:

semodule_package -o clamd.pp -m clamd.mod

Finalmente se vincula el archivo clamd.pp obtenido con las políticas actuales de SELinux, y se cargan éstas en el núcleo en ejecución:

semodule -i /usr/share/selinux/packages/clamd/clamd.pp

Una vez cargadas las nuevas políticas, se pueden eliminar los archivos clamd.te, y clamd.mod, pues solo será necesario que exista el archivo binario clamd.pp.

A fin de evitar realizar todo lo anterior, permitir que el servicio clamd.scan pueda utilizar la función execmem(), y que SELinux impida las conexiones del servicio clamav-milter hacia el servicio clamd.scan, utilice el siguiente mandato:

setsebool -P clamd_disable_trans 1

Para que SELinux permita al servicio clamav-milter funcionar normalmente, y que permita realizar la revisión de correo electrónico, utilice el siguiente mandato:

setsebool -P clamscan_disable_trans 1

Para que SELinux permita al mandato freshclam funcionar normalmente, y que permita actualizar la base de datos de firmas digitales, utilice el siguiente mandato:

setsebool -P freshclam_disable_trans 1

CentOS 6, y Red Hat Enterprise Linux 6.

En CentOS 6, y Red Hat Enterprise Linux 6 solo existe una política a configurar, y es clamd_use_jit, la cual permite al servicio clamd.scan utilizar JIT, y la función execmem().

setsebool -P clamd_use_jit on

Requisitos previos.

Se requiere un servidor de correo con Sendmail, previamente configurado, y funcionando para enviar, y recibir correo electrónico. Para más detalles al respecto, consultar el documento titulado «Configuración básica de Sendmail (Parte I).».

Archivo /etc/mail/sendmail.mc.

Es necesario agregar el siguiente contenido en el archivo /etc/mail/sendmail.mc, justo arriba de la línea MAILER(smtp)dnl.

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

Si se combina con Spamassassin Milter, quedaría del siguiente modo:

INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav-milter/clamav.sock, F=, T=S:4m;R:4m')dnl
INPUT_MAIL_FILTER(`spamassassin', `S=unix:/var/run/spamass-milter/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl
define(`confMILTER_MACROS_CONNECT',`t, b, j, _, , , ')dnl
define(`confMILTER_MACROS_HELO',`s, , , , , ')dnl
define(`confINPUT_MAIL_FILTERS', `spamassassin,clamav')dnl

Configuración.

Clamav-milter depende totalmente de la base de datos de ClamAV. El funcionamiento estándar, que consiste en rechazar correo electrónico que contenga virus, y otros programas malignos, funciona sin necesidad de parámetros adicionales. Las banderas de inicio para clamav-milter están definidas en el archivo /etc/sysconfig/clamav-milter, mismo que permite funcionar normalmente sin necesidad de modificar un solo parámetro, a menos que se necesite especificar alguna opción avanzada definida en la página de manual de clamav-milter.

man clamav-milter

Iniciar, detener, y reiniciar el servicio clamav-milter.

Desde la versión 0.95, ClamAV-milter requiere esté funcionando clamdscan como servicio. Los paquetes de ClamAV incluyen lo necesario a través de clamav-scanner. Solo se requiere agregar al arranque del sistema, y se inicia los servicios clamd.scan, y clamav-milter del siguiente modo, y orden:

chkconfig clamd.scan on
service clamd.scan start
chkconfig clamav-milter on
service clamav-milter start

El archivo /etc/freshclam.conf de los paquetes distribuidos por Alcance Libre ya incluye las modificaciones necesarias para permitir el funcionamiento del mandato freshclam. Sin embargo, si se utilizan paquetes para Fedora, es necesario editar este archivo, y comentar o eliminar la línea 9, que incluye simplemente la palabra inglesa Example, y que de otro mod impediría utilizar el mandato freshclam:

##
## Example config file for freshclam
## Please read the freshclam.conf(5) manual before editing this file.
##


# Comment or remove the line below.
# Example

El archivo /etc/sysconfig/freshclam de los paquetes distribuidos por Alcance Libre ya incluye las modificaciones necesarias para permitir la actualización automática de la base de datos de ClamAV. Si se utilizan paquetes de Fedora, y a fin de mantener actualizada la base de datos de firmas digitales, es necesario editar el archivo /etc/sysconfig/freshclam con el objeto de permitir las actualizaciones automáticas:

### !!!!! REMOVE ME !!!!!!
### REMOVE ME: By default, the freshclam update is disabled to avoid
### REMOVE ME: network access without prior activation
# FRESHCLAM_DELAY=disabled-warn # REMOVE ME

Antes de poner en operación el servidor, es recomendable actualizar manualmente, y de manera inmediata, la base de datos de firmas utilizando el mandato freshclam, desde cualquier terminal como root.

freshclam

Al terminar, considerando que está instalado el paquete sendmail-mc, el cual permite reconfigurar Sendmail a partir del archivo /etc/mail/sendmail.mc, se debe reiniciar el servicio sendmail para que surtan efectos los cambios.

service sendmail restart


Más documentos del mismo autor (Joel Barrios) en este enlace.


Alcance Libre
http://www.alcancelibre.org/staticpages/index.php/como-clamav-milter

()