Настройка linux malware detect

Обновлено: 06.07.2024

Материал для владельцев собственных VDS или выделенных серверов, которые озабочены вопросами безопасности своих площадок. Автор заранее предупреждает, что никакое антивирусное ПО не даёт 100% гарантии на то что сервер не будет взломан, никакое ПО не даёт 100% гарантии на то, что ложных срабатываний не случится, однако автор убеждён, что при наличии удобного и понятного инструмента защиты, его стоит использовать в работе.

Установка и базовая настройка maldet.

Скачиваем архив с сайта разработчиков и устанавливаем Maldet:

Конфигурационный файл maldet находится здесь /usr/local/maldetect/conf.maldet Он хорошо прокомментирован, дублировать его целиком нет смысла, так что остановимся только на основных моментах:

Ежедневная проверка новых файлов на сервере.

При установке, maldet создаёт для планировщика файл /etc/cron.daily/maldet, если ежедневные провекри новых файлов на сервере не нужны, то файл достаточно просто удалить, либо переместить его куда-то оттуда. В самом файле уже учтены все пути, которые создаются при работе с современными панелями управления сервером, обычно, модификация этого файла не требуется, только если администратору понадобится добавить какой-то не стандартный путь для ежедневной проверки.

Запускаясь ежедневно, maldet будет проверять новые файлы на сервере, найденное будет обрабатываться в соответствии с настройками в конфигурационном файле.

Основные команды для работы с Maldet.


Запустить проверку в определённой директории. Необходимо указывать полный путь до нужной директории от корня:

Восстановить отправленные на карантин файлы во время сканирования 170501-0036.29912:

Восстановить конкретный файл из карантина:

Показать список всех имеющихся отчётов:

Открыть отчёт сканирования 170501-0036.29912:

Даст куда более подробную информацию об этих и других доступных для работы со сканером командах:

Мониторинг в реальном времени.


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

1. Мониторинг пользователей. В этом режиме под контролем у сканера окажутся все директории пользователей. Запускается командой:

2. Мониторинг только нужных Вам директорий (включая вложенные в них). Нужные пути указыватся через запятую. Команда для запуска следующая:

3. Мониторинг путей из списка. Администратор может указать путь до файла, в котором будет содержаться список необходимых для мониторинга мест. Запускается такой режим командой:

Автивность можно проследить по логу /usr/local/maldetect/logs/inotify_log. Сам процесс в системе выглядит примерно так:

Остановить мониторинг можно командой:

2. Подготовить maldet к работе с файлами пользователей командой:

Эта команда создаст пользовательские директории с нужными правами в /usr/local/maldetect/pub/

3. В файл с правилами ModSecurity необходимо добавить следующее:

4. После сохранения изменений необходимо перезапустить apache.

Здесь при необходимости можно добавить свои параметры обработки файла, указать email для уведомления ( email_addr=alert@sysadmin.pm ) и т. д.

Настройка исключений.

Maldet поддерживает несколько списков исключений при сканировании и мониторинге:

/usr/local/maldetect/ignore_paths Список, в котором можно указать какие файлы и\или директории будут игнорироваться. Пример:

/usr/local/maldetect/ignore_file_ext Список, в котором можно указать какие расширения будут игнорироваться. Пример:

/usr/local/maldetect/ignore_sigs Список, в котором можно указать какие сигнатуры будут игнорироваться. Пример:

/usr/local/maldetect/ignore_inotify Список, в котором регекспами можно указать, что мониторинг будет игнрировать при проверке. Пример:

3 thoughts on “ Maldet. Поиск проблемных скриптов на сервере. ”

Приветствую.
Не в курсе, почему с 16 сентября не обновляются базы maldet?

В своей более ранней статье я объяснял, как вы можете защитить сервер Apache от вредоносных и DOS атак, используя mod_security и mod_evasive. Теперь я хочу поднять тему выявления вредоносного кода с использованием LMD (Linux Malware Detect).

3 января стартует курс «SQL-injection Master» © от команды The Codeby

За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

Запись на курс до 10 января. Подробнее .

Что такое Malware?

Malware (мэлвэром) называют вредоносные программы, скрипты или код, которые создаются и используются хакерами для получения информации из частных данных или получения доступа к любой частной компьютерной системе. Мэлвэа (malware) может быть троянами, вирусами, шпионскими программами, рекламными модулями, руткитами или любыми вредоносными программами, которые могут быть очень пагубными для пользователей компьютера.

Что такое Linux Malware Detect (LMD)?

Установка Linux Malware Detect (LMD) в RHEL, CentOS, Fedora, Debian, Ubuntu, Mint.

Шаг 1: Загрузка Linux Malware Detect (LMD)

Загружаем последнюю версию пакета LMD, используя следующую команду wget.

Шаг 2: Установка LMD

Установка и настройка LMD — это предельно простая задача, просто выполните следующие шаги как рут пользователь.

Внимание, на Debian, Ubuntu, Mint (и всем подобным, кто использует sudo) нужно вместо команды

Всё остальное идентично, поскольку не требует рут-прав.

01

Шаг 3: Настройка LMD

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

  • email_alert : Если вы хотите получать предупреждения по почте, тогда установите на 1.
  • email_subj : Задайте здесь тему письма.
  • email_addr : Здесь добавьте ваш адрес электронной почты для получения уведомлений о найденных вредоносных программах.
  • quar_hits : Помещать ли в карантин зловредные программы, следует установить на 1.
  • quar_clean : Очищать ли выявленные вредоносные программы, нужно установить 1.
  • quar_susp : Приостановить ли аккаунт пользователей, у которых обнаружено вредоносная программа, установите по вашим нуждам.
  • quar_susp_minuid : Минимальный userid который может быть приостановлен.

Откройте файл /usr/local/maldetect/conf.maldet и сделайте необходимые вам изменения.

Вот мой пример конфигурационного файла.

Шаг 4: Ручные сканирования и использование

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

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

Шаг 5: Ежедневные сканирования

Если вам нравится эта статья, пожалуйста, поделитесь ей с вашими друзьями и оставьте комментарии.

1 декабря стартует зимний поток курса " Тестирование Веб-Приложений на проникновение " от команды codeby . Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, активный фаззинг, уязвимости, пост-эксплуатация, инструментальные средства, Social Engeneering и многое другое. На курс можно записаться до 10 декабря включительно. Подробнее .


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-лента с обновлениями сигнатур присутствует на официальном сайте.

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

Что это дает

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

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

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

Установка


При запуске 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
находим:

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

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

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


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


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


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


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

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

В роли главного героя выступит сканер уязвимостей Linux Malware Detect (в дальнейшем для краткости LMD) который я буду использовать на своей системе Ubuntu Trusty Server amd64

Устанавливаю необходимые пакеты перед скачиванием и инсталлированием приложения в систему:

$ sudo rm -Rf /var/lib/apt/lists

$ sudo apt-get update && sudo apt-get upgrade -y

14.04.1-Ubuntu SMP Wed Oct 11 11:54:55 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Советую привести систему к последнему релизу ядра по этой заметке.

$ tar zxf maldetect-current.tar.gz

/maldetect-1.6.2$ sudo ./install.sh

$ rm -Rf maldetect-1.6.2/ maldetect-current.tar.gz

$ sudo apt-get install clamav clamav-daemon clamav-freshclam clamfs -y

$ sudo nano /etc/clamav/freshclam.conf

Обновляем сканер maldetect до самого последнего актуального состояния:

За работу утилиты отвечает конфигурационный файл:

$ sudo nano /usr/local/maldetect/conf.maldet

scan_tmpdir_paths="/tmp /var/tmp /dev/shm"

остальные опции я оставил по умолчанию

Теперь проверю свой бекап на предмет наличия зараженности:

$ sudo maldet -a /home/ekzorchik/file

maldet(29396): scan report saved, to view run: maldet --report
171223-0959.29396

$ sudo maldet --report 171223-0959.29396

SCAN ID: 171223-0959.29396

STARTED: Dec 23 2017 09:59:28 +0300

COMPLETED: Dec 23 2017 09:59:48 +0300

ELAPSED: 20s [find: 0s]

TOTAL CLEANED: 0

$ sudo maldet -b -r /var/www

Linux Malware Detect v1.6.2

This program may be freely redistributed under the terms of the GNU GPL v2

maldet(25083): launching scan of /var/www changes in last 7d to background, see /usr/local/maldetect/logs/event_log for progress

Проверяем в другом окне (или лучше задействовать tmux) консоли что утилита maldet запущена:

$ sudo ps aux | grep maldet

$ sudo ps aux | grep inotify

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

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

В основе утилиты maldetect лежит скрипт который посредством базы grep производит сканирование на основе своей базы сигнатур, но в свою очередь — если установить антивирус clamav , то весь процесс будет идти через него. Это создает двойной выигрыш в применяемых средствах.

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

$ ls -l /etc/cron.daily/maldet

-rwxr-xr-x 1 root root 2672 Nov 18 06:59 /etc/cron.daily/maldet

а главном конфигурационном файле за это отвечает параметр:

На заметку: по умолчанию утилита maldet проверяет каталоги якобы популярных движков, как directadmin,ispmgr,ensim,psa,Virtualmin, froxlor,cpanel, см файл и в него можно добавить свои пути.

$ sudo nano /etc/cron.daily/maldet

После проверяю текущий статус службы maldet:

$ sudo service maldet status

error no default monitor mode defined, set $MONITOR_MODE in /etc/sysconfig/maldet or $default_monitor_mode in /usr/local/maldetect/conf.maldet

$ sudo nano /etc/default/maldet

$ sudo /etc/init.d/maldet status

Checking maldet monitoring status: Not running

$ sudo /etc/init.d/maldet start

Starting maldet: Linux Malware Detect v1.6.2

This program may be freely redistributed under the terms of the GNU GPL v2

$ sudo apt-get install inotify-tools -y

$ sudo /etc/init.d/maldet start

$ sudo /etc/init.d/maldet status

Checking maldet monitoring status: Running

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

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

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

/usr/local/maldetect/conf.maldet — главный конфигурационный файл

По умолчанию в автоматическом режиме перенос файлов в карантин деактивирован, а потому при наличие каких либо совпадений с базой сигнатур придется разбираться, а на то идет жалоба и что нужно делать самим. Такой вариант может устроить только тех кто хочет понять каким образом произошло заражение, либо же задействовать параметр со значением quar_hits=1 чтобы все подозрительные файлы сразу же переносились в специально обозначенный каталог карантина.

  • /usr/local/maldetect/quarantine — каталог куда переносятся файлы в случае нахождения совпадений по базе данных сигнатур.
  • /usr/local/maldetect/ignore_paths — каталог/файлы которые не стоит проходить проверкой утилиты, к примеру сейчас в нем по умолчанию содержаться:

/usr/local/maldetect/ignore_file_ext — игнорировать файлы по маске, к примеру вот так:

  • /usr/local/maldetect/ignore_sigs — игнорировать наличие сигнатуры сканируемого
  • /usr/local/maldetect/ignore_inotify — исключения из мониторинга

Думаю описывать назначение каждого параметра это излишне, но все же остановлюсь на некоторых:

maldet -r /home/ekzorchik 5

  • -a — просканировать все файлы по заданному пути

maldet -a /home/ekzorchik

maldet --report list

maldet --report идентификатор формируемый после окончания сканирования

Чтобы данный сервер мог уведомлять о проблемах на почту в системе должен быть настроен агент MTA — я использую утилиту ssmtp.

$ sudo maldet -a /home/?

$ sudo maldet -a /var/www/wordpress/?

$ sudo maldet --report 171223-1027.904

SCAN ID: 171223-1027.904

STARTED: Dec 23 2017 10:27:51 +0300

COMPLETED: Dec 23 2017 10:30:58 +0300

ELAPSED: 187s [find: 2s]

TOTAL FILES: 16778

TOTAL CLEANED: 0

Для восстановления файла перемещенного в карантин следует:

sudo maldet –restore /usr/local/maldetect/quarantine/FILENAME

Теперь мой ресурс посвященный реальным заметкам в той степени безопасности которую я могу ему обеспечить на основании своего опыта.

Пока на этом у меня всё, с уважением, автор блога Олло Александр aka ekzorchik.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.


Каждая система на Linux нуждается в антивирусной защите, даже если в ней не хранятся важные данные. Ведь вредоносное ПО способно самыми разными способами наносить ущерб владельцам виртуальных серверов. Один из вариантов защиты от всех видов вмешательства в работу системы — это установка Linux Malware Detect (сокращённо — LMD) и ClamAV. Об установке и настройке этих инструментов на CentOS 7.0/6.x, Fedora 21-12 и RHEL 7.0/6.x мы расскажем далее.

Установка LMD

Linux Malware Detect не доступен в онлайн-репозиториях, но его можно скачать в виде архива на официальном сайте. Файл с исходным кодом последней версии LMD доступен по следующей ссылке:

После скачивания архив необходимо распаковать и зайти в папку, куда было помещено всё содержимое. Папка должна иметь название « maldetect-x.x.x ». Используйте эти команды:

Таким образом, вы увидите как называется директория, необходимая для установки. Чтобы зайти в неё, нужно будет ввести следующую команду:

Здесь « x.x.x » означает номер актуальной на данный момент версии LMD.

В директории будет находиться скрипт install.sh . Скрипт не только проводит установку, но и проверяет наличие папки для установки ( /usr/local/maldetect ). Если она не обнаруживается, скрипт создаёт её автоматически.

После установки начинается настройка ежедневной проверки системы с помощью скрипта cron.daily , который находится в /etc/cron.daily . Он предназачен для удаления временных файлов, для проверки обновлений LMD, а также для сканирования панели Apache и веб-панелей по типу cPanel, DirectAdmin и других.

Затем запустите скрипт установки стандартным образом:

Настройка LMD

Linux Malware Detect настраивается через /usr/local/maldetect/conf.maldet . Все опции подробно прокомментированы, но если всё же возникнут сложности, можно обратиться за помощью к /usr/local/src/maldetect-1.4.2/README .

В файле конфигурации находятся следующие параметры:

  • EMAIL ALERTS
  • QUARANTINE OPTIONS
  • SCAN OPTIONS
  • STATISTICAL ANALYSIS
  • MONITORING OPTIONS

В каждом из них следует установить нужные значения.

В итоге строки со всеми переменными в /usr/local/maldetect/conf.maldet должны иметь примерно такой вид:

email_alert=1
email_addr=test@jino.ru
email_subj="Malware alerts for $HOSTNAME - $(date +%Y-%m-%d)"
quar_hits=1
quar_clean=1
quar_susp=1
clam_av=1

Установка ClamAV

Чтобы использовать параметр clamav_scan в LMD, необходимо установить ClamAV. Для этого создайте файл /etc/yum.repos.d/dag.repo :

Затем выполните команду:

Этих действий будет достаточно для интеграции ClamAV с LMD.

Тестирование LMD

Теперь пришло время проверить корректность установки Linux Malware Detect и ClamAV. Для этого можно использовать тестовые файлы от EICAR, которые имитируют вирусы:

Дальше вы можете подождать, пока проверка запустится автоматически, или же самостоятельно выполнить команду maldet :

Вы можете запустить сканирование не только всех файлов, но и файлов определённого формата, например, .zip:

По окончании проверки проверьте почту или получите отчёт тут же с помощью соответствующей команды:

“ 021015-1051.3559 ” — это ScanID, у вас он будет отличаться.

Если всё было выполнено верно, то появится уведомление о наличии в системе вредоносного ПО. Проверить папку карантина можно с помощью команды:

Все файлы из карантина удаляются таким образом:

А затем используйте команду:

Так как maldet работает в связке с cron, для запуска ежедневных проверок необходимо прописать в crontab в root (наберите crontab -e как root и нажмите Enter) следующие параметры:

PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
SHELL=/bin/bash

Читайте также: