Cómo agregar protección antivirus y contra correo no deseado 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. Configurar el servidor de correo Postfix y Dovecot con MariaDB - Parte 1
  2. Cómo configurar Postfix y Dovecot con usuarios de dominio virtual - Parte 2
  3. Instalar y configurar el cliente de correo web RoundCube con usuarios virtuales en Postfix - Parte 4
  4. Utilice Sagator, un portal antivirus/antispam para proteger su servidor de correo - Parte 5

Dado que la configuración del servidor de correo electrónico no 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 tales 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. Cuando report_safe se establece en 0 (valor recomendado), el spam entrante solo se modifica modificando los encabezados de correo electrónico según rewrite_header. Si se establece en 1, el mensaje se eliminará.
  2. Para establecer la agresividad del filtro de spam, required_score debe ir seguido de un número entero o decimal. Cuanto menor sea el número, más sensible se vuelve el filtro. Se recomienda establecer required_score en un valor entre 8.0 y 10.0 para un sistema grande que atiende muchas (~ 100) cuentas de correo electrónico.

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

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

Integración de 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 está funcionando correctamente y detectando 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 desde [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 encarecidamente 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!