К основному содержимому

ClamAV и Maldet: поиск вредоносного кода на Linux

Безопасность · 31.10.2026 · 5 мин чтения
Иллюстрация к статье «ClamAV и Maldet: поиск вредоносного кода на Linux»

ClamAV и Linux Malware Detect (maldet) ищут на сервере файлы, которые совпадают с известными сигнатурами вредоносного кода: веб-шеллы, бэкдоры, загрузчики, фишинговые страницы. Это полезный слой защиты для сайтов на PHP, но не гарантия чистоты. Ниже: что именно ловят эти инструменты, как проверить каталог сайта и разобрать карантин, и почему одного сканера недостаточно.

Что умеют ClamAV и Maldet, а что нет

ClamAV — универсальный антивирусный движок с открытыми сигнатурами. Maldet создан под общие хостинги и веб-серверы: его база построена на реальных заражениях сайтов, а ClamAV он может использовать как быстрый движок сканирования. Вместе они закрывают типовые случаи, но у обоих есть пределы.

ИнструментЧто находитЧто пропускает
clamscan / clamdscanИзвестные вирусы, часть PHP-шеллов, заражённые документыСвежий или обфусцированный код без сигнатуры
maldetВеб-шеллы и инъекции, типичные для CMSУникальные бэкдоры, правки в базе данных
rkhunterРуткиты и подмену системных файловВредоносный код внутри сайта

Установка ClamAV и обновление сигнатур

В Debian и Ubuntu пакеты ставятся из штатных репозиториев. Служба clamav-freshclam сама подтягивает свежие сигнатуры. Если нужно обновить базу вручную, службу сначала останавливают: иначе freshclam не получит блокировку базы.

apt update
apt install -y clamav clamav-daemon
systemctl status clamav-freshclam
systemctl stop clamav-freshclam
freshclam
systemctl start clamav-freshclam

Демон clamd держит базу сигнатур в памяти и потому занимает заметный объём RAM. На маленьком VPS это стоит учесть: там удобнее запускать разовый clamscan по расписанию, а не держать демон постоянно.

Сканирование каталога сайта

Для разовой проверки подходит clamscan. Он читает базу при каждом запуске, поэтому медленнее, зато не требует демона. Код возврата подсказывает результат: 0 — ничего не найдено, 1 — найдены заражённые файлы, 2 — ошибка. Это удобно для cron и скриптов.

mkdir -p /var/quarantine
clamscan -r -i --log=/var/log/clamscan.log --move=/var/quarantine /var/www/example.com
echo $?

clamdscan --multiscan --fdpass /var/www/example.com
  • Ключ -r включает рекурсивный обход каталога, -i выводит только заражённые файлы.
  • Ключ --move переносит найденное в каталог карантина, который нужно создать заранее.
  • clamdscan работает через демон быстрее, а --fdpass передаёт открытый дескриптор файла, поэтому у демона не возникает проблем с правами.

Maldet: установка, сканирование и карантин

Maldet ставится из архива maldetect-current.tar.gz с сайта проекта; установщик создаёт каталог /usr/local/maldetect и ежедневное задание cron. При сканировании каждому запуску присваивается идентификатор SCANID, по нему смотрят отчёт и работают с карантином. Если в системе есть ClamAV, maldet подхватит его как движок.

cd /usr/local/src
tar xzf maldetect-current.tar.gz
cd maldetect-*
./install.sh

maldet -u
maldet -a /var/www/example.com
maldet -r /var/www/example.com 2
maldet --report SCANID
maldet -q SCANID
maldet -s SCANID
maldet -l

Настройки лежат в /usr/local/maldetect/conf.maldet. Параметр quarantine_hits=1 включает автоматический карантин, email_alert=1 и email_addr отправляют отчёт на почту. Файлы карантина хранятся в /usr/local/maldetect/quarantine, лог событий — в /usr/local/maldetect/logs/event_log. Перед восстановлением файла (ключ -s) убедитесь, что это не ложное срабатывание.

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

Сигнатурный сканер видит только то, что уже известно. Злоумышленники меняют и шифруют код так, чтобы он не совпадал с базой, поэтому «чисто» в отчёте не означает «безопасно». Сканирование — это одна из мер, а не замена остальных.

  • Сверяйте файлы CMS с эталоном: для WordPress подойдёт команда wp core verify-checksums.
  • Следите за правами и владельцами файлов, запрещайте исполнение PHP в каталогах загрузок.
  • Храните резервные копии вне сервера, чтобы чистое состояние всегда можно было восстановить.
  • Не удаляйте найденное сразу: сохраните копию для анализа и выясните, как код попал на сервер.

Если сканер что-то нашёл, действуйте по плану из статьи «Взломан сайт: диагностика, очистка и восстановление». Для проверки самой системы на руткиты используйте rkhunter и chkrootkit, а общую картину мер собирает чеклист безопасности Linux-сервера.

Частые вопросы

Нужен ли антивирус на Linux-сервере с сайтом?

Для самой системы Linux вирусов мало, но сайт на PHP остаётся мишенью: через уязвимый плагин на сервер попадают веб-шеллы и фишинговые страницы. Сканер ClamAV или maldet помогает найти такие файлы, но работает как дополнение к обновлениям и ограничению прав, а не вместо них.

Чем maldet отличается от ClamAV?

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

Как часто сканировать каталог сайта?

Достаточно ежедневной проверки по cron, а сразу после обновления плагинов или подозрительных событий стоит запустить сканирование вручную. Для больших каталогов проверяйте только недавно изменённые файлы, например командой maldet -r с числом дней, чтобы не нагружать диск и процессор сервера.

Что делать, если сканер ничего не нашёл, а сайт ведёт себя странно?

Отсутствие находок не доказывает чистоту: код мог быть обфусцирован или лежать в базе данных. Сверьте файлы CMS с эталоном, просмотрите журналы веб-сервера, проверьте недавно изменённые файлы и учётные записи. При подтверждении взлома сразу переходите к порядку действий восстановления.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке