Настраиваем антивирусную защиту в реальном времени на основе ClamAV On Access Scanning

  • Автор:

samba-clamav-onaccess-000.pngЗащита от вредоносного ПО - задача номер один для многих системных администраторов и компьютеры под управлением Linux не исключение. Будучи сами не подвержены заражению многими видами вредоносов они могут стать в смешанных средах их рассадником, особенно это касается файловых серверов. Популярным антивирусным ПО в Linux является ClamAV и начиная с версии 0.99 он умеет работать в режиме монитора, проверяя файлы в момент доступа к ним. Таким образом можно организовать сканирование в реальном времени без привлечения сторонних средств и сегодня мы расскажем как.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Альтернативой On Access Scanning долгое время являлось использование специальной файловой системы ClamFS, работающей через FUSE. Так как FUSE работает в пользовательском пространстве и вносит дополнительные уровни абстракции это может вызвать снижение производительности, кроме того, у вас могут возникнуть затруднения при использовании виртуализации, в частности контейнеров.

On Access Scanning реализуется полностью средствами ClamAV и не требует дополнительных прослоек, требования: ядро начиная с версии 3.8 и ClamAV версии 0.99 и выше. Как видим, все современные системы этому соответствуют, и мы не видим смысла отказываться от столь удобного инструмента. В нашем примере мы настроим сканирование в реальном времени для общей папки на файловом сервере под управлением Debian 11, но инструкция будет справедлива для любых других дистрибутивов на основе Debian или Ubuntu и работающих под управлением systemd.

Установим необходимые пакеты:

apt install clamav-daemon

В настоящее время официальные зеркала с обновлениями ClamAV заблокированы для пользователей из РФ, поэтому заменим зеркала на приватные или общедоступные с открытым доступом, мы используем зеркало, рекомендованное разработчиками РЕД ОС, для этого откройте файл /etc/clamav/freshclam.conf и добавьте туда строку:

DatabaseMirror https://pivotal-clamav-mirror.s3.amazonaws.com

Все остальные строки с зеркалами нужно закомментировать. После чего следует удалить файл freshclam.dat и перезапустить службу:

rm -f /var/lib/clamav/freshclam.dat
systemctl restart clamav-freshclam

Теперь приступим к настройке On Access Scanning, для этого откроем файл /etc/clamav/clamd.conf и спустимся в самый его конец, там уже есть опция:

OnAccessMaxFileSize 5M

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

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

OnAccessMountPath /samba

Либо директория:

OnAccessIncludePath /samba/public

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

Для исключения директории используйте опцию:

OnAccessExcludePath /samba/public/scan

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

OnAccessExcludeUID 0

В данном случае если с файлами работает суперпользователь (UID 0), то они проверяться не будут. Это может быть полезно, чтобы исключить проверку файлов, с которыми работает сервер 1С, для этого нужно выяснить UID пользователя под которым он запущен и указать его в данной опции.

Вместо UID можно использовать имя пользователя, обязательно добавьте в исключение пользователя clamav, чтобы он мог работать с зараженными файлами:

OnAccessExcludeUname clamav

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

OnAccessPrevention yes

Следующая настройка позволяет более эффективно проверять файлы при их создании, перемещении или переименовании:

OnAccessExtraScanning yes

Важно! Обратите внимание что опции OnAccessPrevention и OnAccessExtraScanning не работают совместно с использованием OnAccessMountPath!

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

Пример минимальной конфигурации:

OnAccessMaxFileSize 5M
OnAccessIncludePath /samba/public
OnAccessExcludeUname clamav
OnAccessPrevention yes
OnAccessExtraScanning yes

Сохраняем файл конфигурации и выходим из него.

Для работы антивирусного монитора как службы создадим для него юнит systemd:

nano /etc/systemd/system/clamav-onaccess.service

И внесем в него следующий текст:

[Unit]
Description=ClamAV On Access Scanner
Requires=clamav-daemon.service
After=clamav-daemon.service syslog.target network.target

[Service]
Type=simple
User=root
ExecStart=/usr/sbin/clamonacc -F --fdpass --log=/var/log/clamav/clamav-onaccess.log --move=/samba/quarantine
Restart=on-failure
RestartSec=7s

[Install]
WantedBy=multi-user.target

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

Error:Invalid cross-device link

Для создания объектов используйте команды:

touch /var/log/clamav/clamav-onaccess.log
mkdir /samba/quarantine

Перечитаем список юнитов systemd:

systemctl daemon-reload

И запустим нашу службу:

systemctl start clamav-onaccess

И убедимся, что она запущена и работает без ошибок:

systemctl status clamav-onaccess

samba-clamav-onaccess-001.pngТеперь можно проверить работу самого антивируса, для этого будем использовать тестовый вирус EICAR, Это абсолютно безопасный файл содержащий специальную сигнатуру, на которую должен срабатывать любой антивирус. Вы можете скачать любой вариант и попробовать разместить его на файловом сервере, если монитор работает, то файлы будут немедленно обнаружены и удалены.

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

samba-clamav-onaccess-002.pngЕсли заглянуть в файл лога, то увидим там полный отчет по нашим действиям c тестовой сигнатурой:

samba-clamav-onaccess-003.pngУбедившись, что все работает как надо, добавим нашу службу в автозагрузку:

systemctl enable clamav-onaccess

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

За подготовку материалов для статьи отдельная благодарность oermolaev.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments