Что делает этот модуль #
Антивирус сравнивает файлы на вашем сервере с каталогом сигнатур известного вредоносного ПО. Если что-то совпадает, он помечает это как заражённое, чтобы оно не могло распространяться дальше — например, вредоносное вложение, загруженное в публичную папку, или заражённый файл, пришедший по FTP.
Модуль clamav делает движок ClamAV доступным через набор понятных команд: проверить его состояние, просканировать любой нужный путь (файл или целое дерево), решить, что делать с заражённым — просто сообщить о нём, удалить его или переместить в безопасный карантин, откуда его можно восстановить позже — и поддерживать базу сигнатур в актуальном состоянии с помощью freshclam. Карантин изолирует файл, не удаляя его, поэтому вы никогда ничего не потеряете по ошибке.
Сканирование обнаруживает угрозы с той базой сигнатур, которая есть у вас на данный момент. Если вы не обновлялись несколько дней, сначала выполните imaxe clamav update, чтобы не пропустить недавние угрозы. Сканирование больших деревьев может занять время и нагрузить процессор: сузьте путь до того, что вы действительно хотите проверить.
Типовые задачи #
Выберите, что вы хотите сделать. В каждом рецепте команда уже готова — просто замените путь на свой и нажмите Копировать.
1
Проверить, готов ли ClamAV
Проверяет движок, режим и насколько устарели ваши сигнатуры.
Подключитесь к серверу по SSH и запросите общее состояние:
$ sudo imaxe clamav statusИнтересует только база сигнатур — версия, дата и файлы? Используйте db:
$ sudo imaxe clamav db2
Просканировать папку
Проверяет путь и сохраняет отчёт, ничего не трогая.
Просканируйте каталог и всё его содержимое с помощью --recursive. По умолчанию он только сообщает: ничего не удаляет и не перемещает.
$ sudo imaxe clamav scan /home --recursiveВсего один файл? Передайте прямой путь к нему, без --recursive:
$ sudo imaxe clamav scan /srv/uploads/factura.pdf3
Просканировать и изолировать заражённое
Автоматически перемещает всё, что дало положительный результат, в карантин.
Просканируйте путь и с помощью --quarantine переместите каждый заражённый файл в карантин вместо того, чтобы оставлять его на месте:
$ sudo imaxe clamav scan /srv/uploads --recursive --quarantineЕсли вы предпочитаете удалить заражённое сразу вместо изоляции, используйте --remove (это необратимо, используйте с умом):
$ sudo imaxe clamav scan /srv/uploads --recursive --remove4
Просмотреть и восстановить карантин
Смотрите, что изолировано, и при необходимости восстанавливайте ложное срабатывание.
Выведите содержимое карантина — каждая запись сопровождается своим идентификатором, источником, сигнатурой и датой:
$ sudo imaxe clamav quarantine listЭто было ложное срабатывание? Восстановите файл в его исходный путь, используя идентификатор, показанный в списке:
$ sudo imaxe clamav quarantine restore a1b2c3d4Как только вы убедитесь, что всё изолированное — мусор, окончательно очистите карантин:
$ sudo imaxe clamav quarantine purge --yes5
Обновить сигнатуры
Загрузите свежие определения, чтобы обнаруживать новые угрозы.
Запустите freshclam, чтобы получить самую свежую базу сигнатур:
$ sudo imaxe clamav updateЗатем убедитесь, что база актуальна, по её версии и дате:
$ sudo imaxe clamav db--removeУдаление стирает файл без возможности восстановления, а ни один антивирус не свободен от ложных срабатываний. В случае сомнений всегда используйте --quarantine: он изолирует так же надёжно и позволяет восстановить файл, если вы ошиблись.
Синопсис #
imaxe clamav <subcomando> [<ruta>] [--recursive] [--quarantine|--remove] [--json]Подкоманды, которые сканируют, перемещают или удаляют файлы, требуют привилегий root (используйте sudo), потому что они читают пути других пользователей и пишут в системный карантин. Добавьте --json к любой команде для машиночитаемого вывода, пригодного для скриптинга.
Подкоманды #
| Подкоманда | Что делает | Значимые флаги |
|---|---|---|
| status | Состояние ClamAV: движок, режим (демон/по требованию), freshclam и база сигнатур. | --json |
| scan | Сканирует путь; может сообщить, удалить или поместить в карантин заражённое. | --recursive, --remove, --quarantine, --json |
| update | Обновляет базу сигнатур через freshclam. | --json |
| db | Информация о базе сигнатур: версия, дата и файлы. | --json |
| quarantine | Управляет карантином заражённых файлов (группа подкоманд). | list · restore · purge |
Группа quarantine объединяет три подкоманды:
| Подкоманда | Что делает | Значимые флаги |
|---|---|---|
| quarantine list | Выводит файлы в карантине (источник, сигнатура, дата). | --json |
| quarantine restore | Восстанавливает файл из карантина в его исходный путь или заданное назначение. | <id> [<destino>] |
| quarantine purge | Безвозвратно удаляет всё из карантина. | --yes |
Аргументы и флаги #
| Флаг / аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
| <ruta> обяз. | path | — | В scan — файл или каталог для сканирования. |
| <id> обяз. | string | — | В quarantine restore — идентификатор элемента в карантине (показан в quarantine list). |
| <destino> | path | исходный путь | В quarantine restore — путь, в который восстанавливается файл. По умолчанию — его исходное расположение. |
| --recursive | bool | false | В scan — рекурсивное сканирование каталогов. |
| --quarantine | bool | false | В scan — перемещает заражённые файлы в карантин. |
| --remove | bool | false | В scan — удаляет заражённые файлы. Необратимо; взаимоисключающе с --quarantine. |
| --yes | bool | false | В quarantine purge — подтверждает удаление без запроса. |
| --json | bool | false | Выдаёт результат в виде JSON в stdout. Доступно в каждой подкоманде. |
Файлы и пути #
| Путь | Содержимое |
|---|---|
| /etc/imaxe/clamav.yml | Конфигурация модуля: каталог карантина и пути, исключённые из сканирования. |
| /var/lib/imaxe/clamav/quarantine | Хранилище карантина: здесь изолируются заражённые файлы, которые можно восстановить. |
| /var/lib/clamav/ | База сигнатур, поддерживаемая freshclam (определения вредоносного ПО). |
| /var/log/imaxe/clamav.log | Структурированный журнал каждого сканирования, помещения в карантин и обновления. |
Пример clamav.yml:
quarantine_dir: /var/lib/imaxe/clamav/quarantine
scan:
exclude:
- /proc
- /sysscan.exclude — это список путей, которые сканирование пропускает; по умолчанию он пуст.
Коды возврата и логи #
Каждый запуск возвращает код, который можно проверить командой echo $? — удобно для связок в скриптах:
Следите за журналом в реальном времени во время отладки:
$ sudo tail -f /var/log/imaxe/clamav.logУстранение неполадок #
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Выходит INFECTED (код 3) | Сканирование обнаружило одну или несколько угроз. | Просмотрите отчёт; запустите scan снова с --quarantine, чтобы изолировать их. |
| Выходит UPDATE (код 4) | freshclam не смог загрузить сигнатуры (нет сети или зеркало недоступно). | Проверьте доступ сервера в интернет и повторите clamav update. |
| Сканирование выполняется слишком долго | Путь охватывает слишком много файлов или системных путей. | Сузьте путь и исключите ненужное с помощью scan.exclude в clamav.yml. |
| Я потерял легитимный файл | Ложное срабатывание, файл перемещён в карантин через --quarantine. | Найдите его с помощью quarantine list и восстановите через quarantine restore <id>. |
| Состояние показывает устаревшие сигнатуры | freshclam давно не запускался. | Выполните clamav update и проверьте через clamav db. |
Застряли с модулем ClamAV?
Напишите нам, приложив вывод «imaxe <module> status --json», и мы быстро ответим.