Скрипт ClamAV для автоматического сканирования и email уведомлений

Приведу пример скрипта для сканирования и email уведомлений при обнаружении зараженных файлов.

Подразумевается что ClamAV установлен и сервер может отправлять почтовые сообщения.

Содержимое скрипта:

#!/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

Сделаем файл исполняемым:

chmod 0755 /root/scripts/clamscan.sh

При запуске скрипта выполнится сканирование указанных директорий /var/www и /var/vmail, сохранятся логи в /var/log/clamav/, если в логах будет встречаться слово «Infected», то файл логов будет отправлен на указанный email. Чтобы антивирус также удалял угрозы, добавим «—remove» как показано в закомментированной строке, также если не настроен lopgrotate для удаления файлов, то раскомментируем команду начинающуюся на «find», которая будет удалять файлы логов старше 30 дней.

Для автоматического запуска, например ежедневно в час ночи, добавим сроку ниже в /etc/crontab:
1 1 * * * root /root/scripts/clamscan.sh > /dev/null 2>&1

Смотрите также мои статьи:
Установка и настройка Postfix
Использование и настройка CRON
Установка и использование ClamAV антивируса
Как запустить ClamAV сканирование из командной строки на cPanel сервере

Did my article help you? How about buying me a cup of coffee as an encouragement? Buy me a coffe.

Оставьте комментарий

Добавить комментарий