Виявлення шкідливих програм зазвичай є складною задачою. Сьогодні я прочитав невеликий, але хороший 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