Антивирус для хостинга под ISPconfig

Антивирус для хостинга под ISPconfigОбнаружениe вредоносных программ часто является сложной задачей. Сегодня я прочитал небольшой, но хороший HOWTO, который показывает, как небольшие изменения программы maldetect будет правильно работать под Debian.

На основании этого руководства был написан скрипт для maldetect, который автоматически настраивает работу программы.

 

#!/bin/bash
# debian-specific installation script by M. Cramer <m.cramer@pixcept.de>
# 
 
CURDIR=`pwd`
PROG=`readlink -f $0`
 
echo "Установка необходимых компонентов..."
apt-get -y -q install inotify-tools sed
 
echo "Получение последней версии maldetect..."
cd /tmp
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzf maldetect-current.tar.gz
cd maldetect-*
 
echo "Изменение скрипта установки..."
sed -r -i 's/^(.*cp.*\/libinotifytools.so\.0[ ]+\/usr\/lib\/.*)$/#\1/g' install.sh;
 
echo "Изменение задания cron..."
sed -r -i '/maldet.*\/var\/www\/vhosts\/\?\/subdomains\/\?\/httpdocs.*$/ a\
        elif [ -d "/usr/local/ispconfig" || -d "/root/ispconfig" ]; then\
                # ispconfig\
                /usr/local/maldetect/maldet -b -r /var/www 2 >> /dev/null 2>&1' cron.daily;
 
echo "Изменение скрипта maldet..."
sed -r -i 's/^\$nice .*$/\$nice -n \$inotify_nice \$inotify -r --fromfile \$inotify_fpaths \$exclude --timefmt "%d %b %H:%M:%S" --format "%w%f %e %T" -m -e create,move,modify >> \$inotify_log 2>\&1 \&/g' files/maldet;
 
sed -r -i '/lmdup\(\) \{.*$/ a\
ofile=\$tmpdir/.lmdup_vercheck.\$\$\
tmp_inspath=/usr/local/lmd_update\
rm -rf \$tmp_inspath\
rm -f \$ofile\
\
mkdir -p \$tmp_inspath\
chmod 750 \$tmp_inspath\
\
eout "\{update\} checking for available updates..." 1\
\
\$wget --referer="http://www.rfxn.com/LMD-\$ver" -q -t5 -T5 "\$lmdurl_ver" -O \$ofile >> /dev/null 2>\&1\
if \[ -s "\$ofile" \]; then\
        installed_ver=`echo \$ver | tr -d "."`\
        current_ver=`cat \$ofile | tr -d "."`\
        current_hver=`cat \$ofile`\
        if \[ "\$current_ver" -gt "\$installed_ver" \]; then\
                eout "\{update\} new version \$current_hver found, updating..." 1\
                '"$PROG"'\
        fi\
else\
    echo "no update file found. try again later"\
    exit\
fi\
\
rm -rf \$tmp_inspath \$ofile \$ofile_has\
\
exit;\
# skip all the rest\
' files/maldet;
 
echo "Изменение конфигурации..."
sed -r -i 's/^inotify=.*$/inotify=\/usr\/bin\/inotifywait/g' files/internals.conf
 
echo "Удаление ненужных файлов..."
rm -f files/inotify/inotifywait
rm -f files/inotify/libinotifytools.so.0
 
./install.sh
 
rm -r /tmp/maldetect-*
 
cd $CURDIR
 
echo "Чтобы запустить мониторинг в реальном времени, пожалуйста, сделайте следующие изменения:"
echo ""
echo "vi /usr/local/maldetect/maldetfilelist"
echo ""
echo "укажите каталог/каталоги, которые должны быть просканированы"
echo "/var/www"
echo "(или корневой каталог для веб-сайтов на пример /home/www или другой)"
echo ""
echo "vi /etc/rc.local"
echo ""
echo "Добавьте команду для запуска монитора при загрузке сервера"
echo "/usr/local/maldetect/maldet -m /usr/local/maldetect/maldetfilelist"
echo ""
echo "Выполните эту команду для запуска монитора в ручном режиме"
echo "/usr/local/maldetect/maldet -m /usr/local/maldetect/maldetfilelist"

Я не проверял, но этот скрипт также должен работать на Ubuntu, так как эти системы очень похожи.
Просто сохраните файл скрипта в какую пожелаете папку (при этом он должен оставаться там все время в течение последующих обновлений!)

И как всегда: Вы  используйте этот скрипт на свой страх и риск!

Чтобы получать уведомления по электронной почте, когда вредоносные программы будут найдены, нужно откорректировать файл /usr/local/maldetect/conf.maldet

Для этого установим

email_alert=1

затем укажем почтовый адрес для сообщений о результатах сканирования в

email_addr = my@vag.org.ua

Еще можно указать тему сообщения, если нужно

email_subj = Отчет о сканировании на предмет вирусной инфекции

Если обнаруженные инфицированные файлы должны автоматически очищаются и/или помещаться в карантин, то нужно дополнительно установить

quar_hits = 1

Лично я предпочитаю просматривать эти файлы, не задавая этот параметр.

По скольку конфигурационный файл модет быть перезаписат во время обновления, Вы должны защитить файл от перезаписи, иначе настройи могут быть потеряны при следующем запуске скрипта

chattr +i /usr/local/maldetect/conf.maldet

По умолчанию скрипт запускается по крону (CRON) каждый день. При активном мониторе будет приходить ежедневный отчет о сканировании.
Вот несколько каталогов веб папок для разных панелей управления хостингом:
   

ensim:
/home/virtual/*/fst/var/www/html und /home/virtual/*/fst/home/*/public_html
    
plesk:
/var/www/vhosts/*/httpdocs und /var/www/vhosts/*/subdomains/*/httpdocs
    
ispconfig:
/var/www
    
sonstige:
/home*/*/public_html

Нужно указать путь подходящий для вашего ПО в файле

/etc/cron.daily/maldet

Теперь мониторинг веб папок установлен. Есть смысл просканировать первый раз в ручном режиме зпустив команду

/usr/local/maldetect/maldet -m /usr/local/maldetect/maldetfilelist

из консоли.

Комманды в упомянутом выше файле крона запускают скрипт обновления. Заменим "2" на "60" в конце строки. Этот параметр определяет количество дней с момента предыдущего сканирования. Максимальное значение 60, если будет установлено большее, по умолчанию будет использовано "7".

/usr/local/maldetect/maldet -b -r /var/www/vhosts/?/httpdocs 60
/usr/local/maldetect/maldet -b -r /var/www/vhosts/?/subdomains/?/httpdocs 60