Как стать автором
Обновить

Linux Malware Detect — антивирус для веб-серверов

Время на прочтение4 мин
Количество просмотров65K


Интернет уже не тот, что прежде — кругом враги. Тема обнаружения непосредственного заражения сайта и поиска вредоносных/зараженных скриптов на взломанном сайте рассмотрена слабо, попробуем это исправить.
Итак, представляем вашему вниманию 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.

Имею опыт использования и настройки, на все вопросы с удовольствием отвечу в комментариях.
Теги:
Хабы:
Всего голосов 43: ↑38 и ↓5+33
Комментарии48

Публикации

Истории

Ближайшие события