...

четверг, 19 сентября 2013 г.

[Из песочницы] Linux Malware Detect — веб-антивирус для серверов


Интернет уже не тот, что прежде — кругом враги. Тема обнаружения непосредственного заражения сайта и поиска вредоносных/зараженных скриптов на взломанном сайте рассмотрена слабо, попробуем это исправить.

Итак, представляем вашему вниманию Linux Malware Detect.


Linux Malware Detect (LMD) — это сканер для Linux, предназначенный для поиска веб-шеллов, спам-ботов, троянов, злонамеренных скриптов и прочих типичных угроз характерных для веб-пространств и особенно актуален для виртуальных шаред-хостинг платформ. Главное отличие от прочих Linux-антивирусов — его веб направленность, сканирование файлов веб-сайтов, ведь обычные антивирусы ориентируется на более глобальные угрозы уровня системы.



Что умеет





  • Поиск угроз по базе MD5 и распознавание типа угрозы (например, php.cmdshell.nan.296.HEX) по HEX-базе.

  • Статистический анализ файлов на наличие обфусцированных зловредов и инъекций.

  • Обнаружение установленного в системе ClamAV для использования его в качестве сканера.

  • Ручное и автоматическое (по крону) обновление сигнатур.

  • Ручное и автоматическое обновление версии самого скрипта.

  • Возможность сканирования недавно добавленных/измененных файлов (например за последние 2 дня).

  • Опция загрузки обнаруженных потенциальных угроз на официальный сайт для анализа.

  • Система отчетов.

  • Очистка файлов от вредоносных инъекций.

  • Крон-заготовки для запуска регулярного сканирования юзерспейсов или других директорий.

  • Наборы исключений по расширениям, сигнатурам и путям.

  • Возможность отправки результатов сканирования на e-mail.

  • Мониторинг в реальном времени созданных/модифицированных/измененных файлов при помощи inotify_watch: мониторинг выбранных пользователей, каталогов или файлов.

  • … и прочее.


Как это работает




Сканирование происходит с использованием собственного скрипта на базе grep, а если в системе установлен ClamAV — то при помощи clamscan. Аналогично с сигнатурами: программа имеет свою базу сигнатур, если же в системе установлен ClamAV, то использует дополнительно и его базу.
Источники сигнатур:




  1. Срез данных сети. Разработчик LMD является администратором хостинга на 35.000 сайтов, данные ежедневно анализируется и обрабатываются. Основной источник сигнатур.

  2. Данные сообщества собранные с антималвар-сайтов.

  3. ClamAV, взаимообмен сигнатурами.

  4. Данные, присылаемые пользователями.


Сигнатуры обновляются практически ежедневно, RSS-лента с обновлениями сигнатур присутствует на официальном сайте.


Результаты сканирования сохраняются в файл, а также могут высылаться на указанный в конфиге e-mail. Интеграции с популярными панелями управления, увы, нет, если же вы хостер — сообщения клиентам придется рассылать вручную.


Интеграция с популярными панелями ISPmanager и Cpanel была бы неплохим вкладом в сообщество (это в случае если кто желает).


Что это дает





  • Позволяет следить за безопасностью ваших сайтов на VDS и DS.

  • Хостерам — ежедневное сканирование и рассылка предупреждений клиентам позволит повысить лояльность клиентов, которые, зачастую, очень далеки от знания кодинга и основ безопасности.

  • Если ваш сайт или сайт клиента будет взломан — вы узнаете об этом либо сразу (если включен мониторинг в реальном времени), либо в течении периода, выбранного для cron-сканирования. Ведь «предупрежден — значит вооружен»: зараженные сайты чаще всего становятся источниками рассылки спама со всеми вытекающими (например, блеклистинг IP в DNSBL).




Типичные примеры обнаружений




Отчет о сканировании выглядит следующим образом:

malware detect scan report for servername:
SCAN ID: 090913-1000.17637
TIME: Sep 9 16:04:40 +0300
PATH: /var/www
RANGE: 2 days
TOTAL FILES: 151224
TOTAL HITS: 5
TOTAL CLEANED: 0

{HEX}php.cmdshell.unclassed.344 : www/user1/data/www/example.com/wp-content/plugins/7ja1i/nxeogyqbd3h.php
{HEX}php.cmdshell.cih.215 : /var/www/user1/data/www/example.com/xyiznwsk/info.php
{CAV}PHP.Trojan.Spambot : www/user1/data/www/example.com/wwp-content/plugins/customize-admin/bannerTQIz.php
{HEX}php.nested.base64.513 : /var/www/user1/data/www/example.com/engine/modules/topnews.php
{HEX}base64.inject.unclassed.6 : /var/www/user1/data/www/example.com/wp-content/plugins/wpematico/app/settings_page.php
{HEX}gzbase64.inject.unclassed.14 : /var/www/user1/data/director/example.com/wp-content/themes/zenith/404.php


Установка




Качаем:

wget http://www.rfxn.com/downloads/maldetect-current.tar.gz



Распаковываем:

tar -zxvf maldetect-current.tar.gz



Запускаем установку:

sh ./install.sh

При запуске install.sh программа установки размещает файлы LMD в /usr/local/maldetect, заносит исполняемый скрипт в /usr/local/sbin и libinotifytools.so.0 в /usr/lib.


В процессе инсталляции автоматически создаются ежедневные крон-задания для обновления сигнатур и запуска сканирования. По умолчанию в конфигурации указаны типичные пути для сканирования вебспейсов популярных панелей управлений, таких как ensim, psa, DirectAdmin, cpanel, interworx и дефолтных apache-путей размещения сайтов (/var/www/html, /usr/local/apache/htdocs). Для ISPmanager путь /var/www/ придется добавлять вручную.


Настройка




Конфиг LMD находится в файле /usr/local/maldetect/conf.maldet.

Конфиг хорошо документирован и позволяет настроить все, что душе угодно.

На заметку:




ionice -c 3 добавленный к строкам запуска скриптов по поиску и сканированию файлов поможет предотвратить нагрузку на дисковую подсистему выставив наинизший приоритет i/o.

В файле /usr/local/maldetect/maldet

находим:



find="$find"



меняем на:

find="ionice -c 3 $find"



находим:

clamscan="$clamscan"



меняем на:

clamscan="ionice -c 3 $clamscan"



Стоит отметить, что данное решение — своего рода «костыль», данную опцию стоит добавить в апстрим.

Типичные команды




Запускаем сканирование указанного каталога:

# maldet -a /home/user1/exapmle.com

По окончанию получаем результат вида:



maldet(24128): {scan} scan completed on example.com: files 4, malware hits 0, cleaned hits 0
maldet(24128): {scan} scan report saved, to view run: maldet --report 091713-1715.24128


Смотрим отчет:



#maldet --report 091713-1715.24128

Принудительно обновляем базы с rfxn.com:



#maldet -u

Принудительно обновляем версию с rfxn.com:



#maldet -d

Сканируем все изменные за последние X дней файлы (в данном случае 2) в указанном каталоге



#maldet -r /home/user1/ 2

Отправляем неизвестную уязвимость на rfxn.com:



#maldet -c /home/user1/file.php

Помещаем в карантин результаты сканирования SCANID (id из результатов сканирования)



#maldet -q 091713-1715.24128

Пытамся очистить результаты сканирования



#maldet -n, --clean 091713-1715.24128

Программа распространяется по лицензии GNU GPLv2.

Официальная страничка проекта: http://www.rfxn.com/projects/linux-malware-detect Linux Malware Detect.


Имею опыт использования и настройки, на все вопросы с удовольствием отвечу в комментариях.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



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

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