Script ClamAV para escaneo automático y notificaciones via correo electrónico

0
3212

Éste es un ejemplo de un shell script para escanear y enviar notificaciones por correo electrónico cuando se detecten archivos infectados.

Se asume que ClamAV está instalado y el servidor puede enviar mensajes de correo.

Contenido del guión:

#!/bin/bash
LOGFILE="/var/log/clamav/clamav-$(date +'%Y-%m-%d').log";
EMAIL_MSG="Please see the log file attached";
EMAIL_FROM="test@ixnfo.com";
EMAIL_TO="test@ixnfo.com";
DIRTOSCAN="/var/www /var/vmail";

for S in ${DIRTOSCAN}; do
 DIRSIZE=$(du -sh "$S" 2>/dev/null | cut -f1);

 echo "Starting scan of "$S" directory.
 Directory size: "$DIRSIZE".";

 clamscan -ri "$S" >> "$LOGFILE";
 #clamscan -ri --remove "$S" >> "$LOGFILE";

 #find /var/log/clamav/ -type f -mtime +30 -exec rm {} \;
 MALWARE=$(tail "$LOGFILE"|grep Infected|cut -d" " -f3);

 if [ "$MALWARE" -ne "0" ];then
 echo "$EMAIL_MSG"|mail -a "$LOGFILE" -s "Malware Found" -r "$EMAIL_FROM" "$EMAIL_TO";
 fi
done

exit 0

Hagamos que el archivo sea ejecutable: chmod 0755 /root/scripts/clamscan.sh

Cuando ejecutamos el script, se escanean los directorios especificados /var/www y /var/vmail, los registros se guardarán en /var/log/clamav/, si la palabra “Infectado” se encuentra en los registros, el archivo de registro se enviará al correo electrónico especificado.

Para que el antivirus también elimine las amenazas, agregue “-remove” como se muestra en la línea comentada, también si lopgrotate no está configurado para eliminar archivos, descomente el comando que comienza con “buscar”, que eliminará los archivos de registro de más de 30 días.

Para ejecutar automáticamente, por ejemplo, todos los días a la 1 am, agregue la siguiente
línea en el crontab :

 1 1 * * * root /root/scripts/clamscan.sh> /dev/null 2>&1

Suerte