вторник, 17 февраля 2015 г.

Сканирование системы с помощью maldet

Установка:
# cd /tmp/
# wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
# tar xfz maldetect-current.tar.gz
# cd maldetect-*
# ./install.sh

Включаем отправку почтовых уведомлений и указываем email:
# vim /usr/local/maldetect/conf.maldet
email_alert=1
email_subj="maldet alert from $(hostname)"

Добавляем задание в крон, каждую ночь обновлять базы и сканировать все файлы в /var/www:
# crontab -e
30 0 * * * /usr/local/maldetect/maldet -d -u ; nice -n 19 ionice -c2 -n7 /usr/local/maldetect/maldet --scan-all /var/www

Запуск сканирования (-b -- сканирование в фоновом режиме):
# maldet -b --scan-all /var/www/

Вывод списка отчетов:
# maldet --report list

Просмотр отчета:
# maldet --report 021715-1414.3266

Отправка зараженных файлов из отчета в карантин:
# maldet -q 021715-1414.3266

Восстановление зараженных файлов из карантина:
# maldet --restore 021715-1414.3266

Удалить обнаруженные зараженные файлы:
# maldet --clean 021715-1414.3266

Исключить файлы и каталоги из сканирования:
# echo "/var/www/user/dir_of_file" >> /usr/local/maldetect/ignore_paths
# echo "*.js" >> /usr/local/maldetect/ignore_file_ext

Исключить поиск сигнатур из сканирования:
# echo "base64.inject.unclassed" >> /usr/local/maldetect/ignore_sigs

В моем случае нужно было просканировать почти 5 миллионов файлов в каталоге /var/www, что весьма долго.
Вот как можно мониторить примерное время просканированных файлов.
Ищем процесс малдета:
# ps aufx | grep maldet | grep -v grep
root      5217  0.2  0.0 113732  2220 pts/1    SN+  14:23   0:25      \_ /bin/bash /usr/local/maldetect/maldet --scan-all /var/www
root      7601  0.0  0.0 113732  1340 pts/1    SN+  14:24   0:00          \_ /bin/bash /usr/local/maldetect/maldet --scan-all /var/www
root      7602 94.5  0.5 420292 333344 pts/1   RN+  14:24 140:46              \_ /usr/bin/clamscan -d /usr/local/maldetect/sigs/rfxn.ndb -d /usr/local/maldetect/sigs/rfxn.hdb -d /var/lib/clamav -r --infected --no-summary -f /usr/local/maldetect/tmp/.find.5217

Видим, что список со сканируемыми файлами малдет сохранил в /usr/local/maldetect/tmp/.find.5217:
# wc -l /usr/local/maldetect/tmp/.find.5217
4966504 /usr/local/maldetect/tmp/.find.5217

Смотрим lsof, для процесса с PID 7602, чтобы определить, какой файл сейчас использует процесс:
# lsof -p 7602 | grep "/var/www"
clamscan 7602 root    4r   REG  259,1     14994  33981219 /var/www/user/data/www/site.com/wp-content/uploads/2015/03/17170_html_72f25869-220x130.jpg

Грепаем временный файл и выясняем, какой по счету файл сейчас сканируется:
# cat /usr/local/maldetect/tmp/.find.5217 -n | grep "/var/www/user/data/www/site.com/wp-content/uploads/2015/03/17170_html_72f25869-220x130.jpg"
3018488 /var/www/user/data/www/site.com/wp-content/uploads/2015/03/17170_html_72f25869-220x130.jpg

То есть, из 4.9 млн файлов уже просканировалось более 3 млн. Учитывая то, что процесс clamscan (см. ps aufx выше) работает 140 минут, ему еще осталось работать порядка 90 минут.

Подробная информация: https://www.rfxn.com/appdocs/README.maldetect

Комментариев нет: