До основного вмісту

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 з еталоном, перегляньте журнали вебсервера, перевірте нещодавно змінені файли й облікові записи. Якщо злам підтверджено, одразу переходьте до порядку дій відновлення.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці