Инициатива #SaveFirst
поддержка онлайн-проектов, которые помогают людям в период кризиса COVID-19
Подробнее

Антивирус ClamAV: установка и сканирование

ClamAV

Антивирус ClamAV предназначен для проверки содержимого электронной почты на наличие вредоносного программного обеспечения и опасных файлов. Помимо этой функции, его можно использовать и для сканирования сайтов. 

Системные требования

ClamAV — кроссплатформенный антивирус: точное количество версий операционных систем, на которых его можно запустить, не могут назвать даже разработчики. Тем не менее, на официальном сайте есть список протестированных ОС, где ClamAV гарантированно работает. Часть систем в нём устарела (Debian 7 и 8), из актуальных можно выделить эти:

  • Ubuntu 16.04
  • Ubuntu 18.04
  • CentOS 7

В списке протестированных ОС присутствуют FreeBSD 11 и 12, Windows 7 и 10. Но, так как опыт в работе с этими системами у нас небольшой, об установке и запуске на этих системах  можно прочитать в документации.

 

Также есть требования к ресурсам сервера:

  • минимальный объём оперативной памяти: 1 Гб
  • минимальная мощность процессора: 1 ядро с частотой от 2.0 ГГц
  • минимальный объём диска: не менее 5 ГБ свободного места на диске

Важно: минимальный объём необходимых ресурсов определяется при запуске приложения на чистом сервере без других активных процессов и нагрузки. На боевых серверах работают сайты, базы данных, скрипты — поэтому может потребоваться больше ресурсов. 

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

В процессе сканирования ClamAV расходует значительный объём оперативной памяти — база вирусных сигнатур выгружается в память для ускорения анализа файлов. 
Поэтому для серверов с высокой посещаемостью и нагрузкой ClamAV будет спорным решением — так как может привести к нехватке оперативной памяти. 

Установка и сканирование

Порядок действий для установки и сканирования будет зависеть от того, используете ли вы панель управления:

ClamAV на сервере с панелью ISPmanager

Важно: если антивирус нужен вам для проверки и лечения сайтов, рекомендуемым решением для этого в панели ISPmanager является антивирус ImunifyAV. ClamAV в панели устанавливается и работает только для проверки почты.

Для начала установки откройте панель управления ISPmanager. Доступы к ней можно найти в Личном кабинете — раздел ТоварыВиртуальные серверы — выберите ваш сервер в списке, сверху «Инструкция»

Инструкция к серверу в Личном кабинете

В разделе «ISPmanager — панель управления виртуальным сервером» нажмите «Перейти в ISPmanager»:

Данные доступа ISPmanager

Установка ClamAV

Запустить установку ClamAV можно из раздела НастройкиВозможности. Выберите в списке «Почтовый сервер (SMTP/POP3/IMAP)», сверху «Изменить»

Раздел «Возможности» в ISPmanager

Отметьте в списке «ClamAV (exim)» и нажмите «Применить изменения»

Установка ClamAV

Начнётся процесс установки. Когда иконка диска в колонке «Статус» исчезнет, ClamAV будет установлен на ваш сервер.

Индикатор прогресса установки

Обновление баз

Чтобы базы ClamAV своевременно обновлялись, нужно создать задачу для планировщика. Для этого перейдите в раздел СистемаПланировщик и нажмите «Создать»:

Планировщик в ISPmanager

В поле «Команда» введите:

/usr/bin/freshclam

Она будет запускать утилиту обновления вирусных сигнатур ClamAV. 

Настройка задания на обновление баз ClamAV

В разделе «Расписание» выберите режим настройки и укажите время запуска обновления баз:

  • базовый — позволит указать время запуска задачи в упрощённом 24-м формате;
  • экспертный — позволит тонко настроить расписание с помощью стандартного синтаксиса cron-выражений.

Обновление рекомендуется настраивать на период минимальной активности пользователей ваших сайтов, например, на ночное время. 

При желании можно отключить отправку уведомлений об обновлении баз, отметив пункт «Не отправлять отчёт по e-mail».

Нажмите «Ok» для сохранения задания.

Сканирование почты

В ISPmanager все настройки сканирования доступны через интерфейс панели.

Чтобы включить проверку почты, перейдите в раздел ДоменыПочтовые домены. Выберите ваш домен в списке и нажмите «Изменить»:

Почтовый домены в ISPmanager

Чтобы ClamAV начал сканировать почту на этом домене, отметьте пункт «Включить проверку на вирусы»:

Настройка сканирования почтового домена

В свойствах почтового домена появится иконка ClamAV:

Индикатор антивируса

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

mailbox@EXAMPLE.com
SMTP error from remote mail server after end of data:
host mail.example.com [188.255.255.255]: 550 This message contains virus (Win.Test.EICAR_HDB-1)

Проверить же факт обработки такого письма на вашем сервере можно в логах антивируса: 

tail -f /var/log/clamav/clamav.log

Результатом будет список сообщений антивируса, например:

Tue Jul 14 04:33:26 2020 -> /var/spool/exim4/scan/1jv9p0-00015H-AN/1jv9p0-00015H-AN.eml: Win.Test.EICAR_HDB-1(44d88612fea8a8f36de82e1278abb02f:68) FOUND

Эту же информацию можно увидеть в логах самого почтового сервера:

tail -f /var/log/exim4/mainlog

Если письмо было отклонено антивирусом, в журнале вы увидите следующее сообщение:

2020-07-14 04:33:26 1jv9p0-00015H-AN H=f436.i.mail.ru [185.5.136.107] X=TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=no F=<senderbox@example.com> rejected after DATA: Rejected: this message contains virus (Win.Test.EICAR_HDB-1)

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

Если вы хотите приспособить ClamAV в качестве антивируса для вашего сайта, это не рекомендуется, но возможно. Для этого нужно выполнить два шага:

  1. Укажите email для получения отчётов по результату сканирования. Для этого откройте раздел СистемаПланировщик и нажмите «Настройки».

    Настройки планировщика

    В поле «Адрес e-mail» введите вашу электронную почту и нажмите «Ok»:

    Настройка почты для уведомлений
  2. Теперь нужно создать задание для запуска самого сканирования. Вернитесь в раздел СистемаПланировщик и нажмите «Создать»:

    • в поле «Команда» введите:

      /usr/bin/clamscan -ri /var/www/

      Эта утилита запустит сканирование директории /var/www и всех её вложенных папок с выводом количества инфицированных файлов в отчёт;

    • установите время сканирования. Это ресурсоёмкий процесс, поэтому его тоже лучше назначать на время минимальной активности, причём после обновления баз;
    • включите получение отчётов. Так вы сможете оперативно узнавать о состоянии сайта.

    В результате получится вот такой набор настроек:

    Задание на автоматическое сканирование сайтов через ClamAV в ISPmanager

Для сканирования доступны и другие опции, которые позволяют сделать сканирование полезнее:

  • Этот вариант команды будет автоматически копировать инфицированные файлы в директорию /var/www/www-root/data/infected (директория приведена в качестве примера — замените путь на свой вариант). Это упростит процесс чистки — все файлы будут под рукой в одной папке, останется проверить их, удалить вредоносный код и скопировать обратно в каталог сайта с заменой:
    /usr/bin/clamscan -ri --copy=/var/www/www-root/data/clamav-infected /var/www/

    Если вместо опции copy использовать move, тогда файл будет перемещён, а не скопирован. 

  • Экстремальный вариант — использовать на свой страх и риск! Автоматически удаляет все файлы, которые антивирус сочтёт опасными.

    /usr/bin/clamscan -ri --remove /var/www/

    Чем это опасно — под раздачу могут попасть и рабочие данные, которые по каким-то признакам показались антивирусу подозрительными. 

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

Здесь же в разделе СистемаПланировщик можно запустить задание на обновление баз или сканирование вручную, не дожидаясь времени, указанного в расписании. Для этого выберите задачу в списке и нажмите «Выполнить»:

Ручной запуск заданий

В результате в открывшейся вкладке будет доступен отчёт:

Стандартный отчёт ClamAV

ClamAV на сервере без панели управления

Для начала работы нужно подключиться к серверу по SSH.

Установка ClamAV

Способ установки зависит от вашей операционной системы:

CentOS

Добавим репозиторий EPEL в список доступных источников ПО и обновим список доступных пакетов:

yum install -y epel-release

Запустим установку:

yum install -y clamav

Готово, процесс установки завершён.

Debian и Ubuntu

Обновим список доступных для установки пакетов:

apt-get update

Запустим установку ClamAV

apt-get install clamav

Обновление баз

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

freshclam

Запустится процесс обновления.

Вывод информации о прогрессе обновления в терминал

Чтобы автоматизировать этот процесс, удобнее будет добавить его в планировщик cron:

  1. Откроем планировщик командой:

    crontab -e
  2. Добавим наше задание* в список. Например, настроим ежедневную проверку баз в 02:00. Для этого добавляем в открывшийся файл** следующую строчку:

    0 2 * * * root /usr/bin/freshclam >/dev/null 2>&1
    

    * подробнее о синтаксисе для работы с crontab можно узнать здесь

    ** файл открывается в консольном текстовом редакторе. Для входа в режим редактирования на клавиатуре нажмите I. Для выхода из режима редактирования нажмите Esc. Для сохранения и выхода из файла введите сочетание :wq Для выхода без сохранения введите :q!

  3. Сохраняем файл и проверяем, что задание записано корректно:

    crontab -l

    Вывод будет таким:

    Активные задания пользователя root в планировщике cron

Ручное сканирование

ClamAV можно использовать в нескольких режимах:

  • через демон clamd с помощью утилиты clamdscan. Особенности — можно тонко настроить работу демона через конфигурационный файл /etc/clamd.d/scan.conf на CentOS, /etc/clamav/clamd.conf в Debian и Ubuntu;
  • через тот же демон clamd с помощью  утилиты clamonacc. Особенности — она проверяет данные на лету в фоновом режиме, отправляя уведомления в случае обнаружения вредоносных файлов;
  • с помощью утилиты clamscan в формате разовой проверки. 

Мы остановимся на последнем как на самом простом.

Чтобы запустить сканирование вручную, например, для директории /var/www/html, достаточно ввести в терминале  команду:

clamscan -ri /var/www/html

Через некоторое время ожидания вы увидите отчёт проверки:

Вывод отчёта с результатами проверки в терминал

Аналогично можно просканировать письма в почтовой очереди: просто замените директорию /var/www/html на /var/spool/mail.

Автоматическое сканирование

Процесс настройки автоматического сканирования аналогичен настройке автообновления баз вирусных сигнатур. Достаточно добавить задачу на проверку в планировщик:

  1. Откроем планировщик:

    crontab -e
  2. Настроим задание на ежедневную проверку сайтов и почты, например, на 03:00, после обновления баз. Для этого добавим в конец файла следующий текст:

    0 3 * * * root /usr/bin/clamscan -ri /var/www/html
    0 4 * * * root /usr/bin/clamscan -ri /var/spool/mail

    Первая задача в 03:00 запустит сканирование в папке /var/www/html. Вторая — в 04:00 проверит почтовую очередь.

    Здесь же в начало файла добавим строчку:

    MAILTO=root

    Это позволит получать отчёты о выполнении настроенных заданий на email пользователя root. Если у вас настроен почтовый сервер, вместо root вы можете указать ваш email — тогда отчёты будут поступать на него. Если почтовый сервер не установлен, отчёты будут храниться в директории /var/mail/root.

  3. Сохраняем файл и проверяем, что задание записано корректно:

    crontab -l

    Вместе с ранее добавленной задачей на обновление баз вывод будет таким:

    Активные задания пользователя root в планировщике cron

Что делать при обнаружении заражённых файлов

Если вы увидели, что в очередном отчёте количество инфицированных файлов больше нуля, нужно принимать меры.

Анализ и лечение файлов выполняется в ручном режиме независимо от конфигурации сервера:

  • на серверах с ISPmanager в разделе ИнструментыShell-клиент можно пользоваться возможностями командной строки, не выходя из панели.

    Shell-клиент в ISPmanager

    Проверять и анализировать код файлов можно через встроенный файловый менеджер (СистемаМенеджер файлов) и текстовый редактор:

    Файловый менеджер ISPmanager
    Редактор файлов ISPmanager

    Или можно просто скачать файлы с сервера по FTP, проверить их удобным вам способом и потом загрузить обратно.

  • на серверах без панели управления все действия осуществляются по SSH

При наличии заражённых файлов вы можете сразу:

  • Скопировать или переместить их в отдельную заранее созданную директорию для последующего лечения:

    clamscan -ri --copy=/var/www/html/quarantine /var/www/html

    Эта команда запустит проверку всех файлов в папке /var/www/html В процессе все инфицированные файлы будут скопированы в директорию /var/www/html/quarantine. Чтобы перенести, а не скопировать файлы, вместо опции copy используйте move.

    После этого подозрительные файлы можно проверить вручную или просканировать отдельно:

    clamscan index.php

    где index.php — имя файла, который мы хотим проверить.

  • При необходимости можно запустить сканирование с автоматическим удалением всех заражённых файлов. Эта опция используется на свой страх и риск — файлы удаляются безвозвратно.

    clamscan -ri --remove /var/www/html

ClamAV может работать в связке с другим решением для поиска вирусов — Linux Malware Detect. В таком случае для анализа будут использованы сразу две базы вирусных сигнатур — что повысит качество поиска.

Антивирус Linux Malware Detect: установка и сканирование