Cómo agregar protección antivirus y antispam al servidor de correo Postfix con ClamAV y SpamAssassin - Parte 3


En los dos artículos anteriores de esta serie de Postfix, aprendió cómo configurar y administrar la base de datos del servidor de correo electrónico a través de phpMyAdmin, y cómo configurar Postfix y Dovecot para manejar el correo entrante y saliente. Además, explicamos cómo configurar un cliente de correo, como Thunderbird, para las cuentas virtuales que creamos anteriormente.

  1. Setup Postfix Mail Server and Dovecot with MariaDB – Part 1
  2. How to Configure Postfix and Dovecot with Virtual Domain Users – Part 2
  3. Install and Configure RoundCube Webmail Client with Virtual Users in Postfix – Part 4
  4. Use Sagator, an Antivirus/Antispam Gateway to Protect Your Mail Server – Part 5

Dado que ninguna configuración del servidor de correo electrónico puede completarse sin tomar precauciones contra virus y spam, vamos a cubrir ese tema en el artículo actual.

Tenga en cuenta que incluso cuando los sistemas operativos similares a * nix generalmente se consideran libres de virus, es probable que los clientes que usan otros sistemas operativos también se conecten a su servidor de correo electrónico.

Por esa razón, debe brindarles la confianza de que ha tomado las medidas necesarias para protegerlos en la medida de lo posible de dichas amenazas.

Configuración de SpamAssassin para Postfix

En el proceso de recibir correo electrónico, spamassassin se interpondrá entre el mundo exterior y los servicios de correo electrónico que se ejecutan en su servidor. Si encuentra, de acuerdo con sus reglas de definición y configuración, que un mensaje entrante es spam, reescribirá la línea de asunto para identificarlo claramente como tal. Veamos cómo.

El archivo de configuración principal es /etc/mail/spamassassin/local.cf , y debemos asegurarnos de que las siguientes opciones estén disponibles (agréguelas si no están presentes o descomente si es necesario):

report_safe 0
required_score 8.0
rewrite_header Subject [SPAM]
  1. When report_safe is set to 0 (recommended value), incoming spam is only modified by modifying the email headers as per rewrite_header. If it is set to 1, the message will be deleted.
  2. To set the aggressivity of the spam filter, required_score must be followed by an integer or decimal number. The lesser the number, the more sensitive the filter becomes. Setting required_score to a value somewhere between 8.0 and 10.0 is recommended for a large system serving many (~100s) email accounts.

Una vez que haya guardado esos cambios, habilite e inicie el servicio de filtro de spam y luego actualice las reglas de spam:

# systemctl enable spamassassin
# systemctl start spamassassin
# sa-update

Para obtener más opciones de configuración, puede consultar la documentación ejecutando perldoc Mail :: SpamAssassin :: Conf en la línea de comandos.

Integrando Postfix y SpamAssassin

Para integrar de manera eficiente Postfix y spamassassin, necesitaremos crear un usuario y un grupo dedicados para ejecutar el demonio de filtro de spam:

# useradd spamd -s /bin/false -d /var/log/spamassassin

A continuación, agregue la siguiente línea al final de /etc/postfix/master.cf :

spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

E indique (en la parte superior) que spamassassin servirá como content_filter:

-o content_filter=spamassassin

Finalmente, reinicie Postfix para aplicar los cambios:

# systemctl restart postfix

Para verificar que SpamAssassin funcione correctamente y detecte spam entrante, se proporciona una prueba conocida como GTUBE (Prueba genérica para correo electrónico masivo no solicitado).

Para realizar esta prueba, envíe un correo electrónico desde un dominio fuera de su red (como Yahoo !, Hotmail o Gmail) a una cuenta que resida en su servidor de correo electrónico. Establezca la línea Asunto como desee e incluya el siguiente texto en el cuerpo del mensaje:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Por ejemplo, enviar el texto anterior en el cuerpo de un mensaje desde mi cuenta de Gmail produce el siguiente resultado:

Y muestra el aviso correspondiente en los registros:

# journalctl | grep spam

Como puede ver en la imagen de arriba, este mensaje de correo electrónico obtuvo una puntuación de spam de 1002,3. Además, puede probar spamassassin directamente desde la línea de comando:

# spamassassin -D < /usr/share/doc/spamassassin-3.4.0/sample-spam.txt

El comando anterior producirá una salida realmente detallada que debería incluir lo siguiente:

Si estas pruebas no tienen éxito, es posible que desee consultar la guía de integraciones de spamassassin.

Inicio de ClamAV y actualización de definiciones de virus

Para comenzar, necesitaremos editar /etc/clamd.d/scan.conf . Descomente la siguiente línea:

LocalSocket /var/run/clamd.scan/clamd.sock

y comentar o eliminar la línea:

Example

Luego habilite e inicie el demonio del escáner clamav:

# systemctl enable [email protected]
# systemctl start [email protected]

y no olvide configurar el booleano antivirus_can_scan_system SELinux en 1:

# setsebool -P antivirus_can_scan_system 1

En este punto, vale la pena comprobar el estado del servicio:

Como puede ver en la imagen de arriba, nuestras firmas de virus tienen más de 7 días. Para actualizarlos usaremos una herramienta llamada freshclam que se instaló como parte del paquete clamav-update.

La forma más fácil de actualizar las definiciones de virus es a través de un trabajo cron que se ejecuta con la frecuencia deseada (una vez al día, por ejemplo, a la 1 am hora del servidor como se indica en el siguiente ejemplo se considera suficiente):

00 01 * * * root /usr/share/clamav/freshclam-sleep

También puede actualizar las definiciones de virus manualmente, pero antes también tendrá que eliminar o comentar la siguiente línea en /etc/freshclam.conf .

Example

Ahora debería poder ejecutar:

# freshclam

que actualizará las definiciones de virus como desee:

Prueba de ClamAV en busca de virus en correos electrónicos

Para verificar que ClamAV está funcionando correctamente, descarguemos un virus de prueba (que podemos obtener de http://www.eicar.org/download/eicar.com) al Maildir de [email protected] (que se encuentra en/home/vmail/linuxnewz.com/tecmint/Maildir) para simular un archivo infectado recibido como adjunto de correo:

# cd /home/vmail/linuxnewz.com/tecmint/Maildir
# wget http://www.eicar.org/download/eicar.com

Y luego escanee el directorio /home/vmail/linuxnewz.com de forma recursiva:

# clamscan --infected --remove --recursive /home/vmail/linuxnewz.com

Ahora, siéntase libre de configurar este análisis para ejecutar un cronjob. Cree un archivo llamado /etc/cron.daily/dailyclamscan , inserte las siguientes líneas:

#!/bin/bash
SCAN_DIR="/home/vmail/linuxnewz.com"
LOG_FILE="/var/log/clamav/dailyclamscan.log"
touch $LOG_FILE
/usr/bin/clamscan --infected --remove --recursive $SCAN_DIR >> $LOG_FILE

y otorgar permisos de ejecución:

# chmod +x /etc/cron.daily/dailyclamscan

El cronjob anterior escaneará el directorio del servidor de correo de forma recursiva y dejará un registro de su funcionamiento en /var/log/clamav/dailyclamscan.log (asegúrese de que exista el directorio/var/log/clamav).

Veamos qué sucede cuando enviamos el archivo eicar.com de [email protected] a [email protected]:

Resumen

Si siguió los pasos descritos en este tutorial y en los dos artículos anteriores de esta serie, ahora tiene un servidor de correo electrónico Postfix en funcionamiento con protección antivirus y contra correo no deseado.

DESCARGO DE RESPONSABILIDAD: Tenga en cuenta que la seguridad del servidor es un tema muy amplio y no puede tratarse adecuadamente en una serie corta como esta.

Por esa razón, le recomiendo que se familiarice con las herramientas utilizadas en esta serie y sus páginas de manual. Aunque he hecho todo lo posible para cubrir los conceptos esenciales asociados con este tema, no asuma que después de pasar por esta serie está completamente calificado para configurar y mantener un servidor de correo electrónico en un entorno de producción.

Esta serie está pensada como un punto de partida y no como una guía exhaustiva para la administración del servidor de correo en Linux.

Probablemente pensarás en otras ideas que puedan enriquecer esta serie. Si es así, no dude en enviarnos una nota utilizando el formulario de comentarios a continuación. También agradecemos sus preguntas y otras sugerencias. ¡Esperamos tener noticias suyas!