ИБ (Информационная Безопасность)
September 21

Антивирус ClamAV на Linux - Обход блокировки в России, установка и настройка

ClamAV - это антивирусное программное обеспечение под Windows, MacOS, FreeBSD и Linux с открытым исходным кодом, которое очень хорошо зарекомендовало себя и часто используется для защиты серверов. В 2022 году, после начала военных действий, разработчики ограничили доступ к ClamAV для пользователей из России, однако это не значит что данным антивирусом теперь невозможно воспользоваться. В данной статье пойдёт речь про установку данного антивируса, а также будут рассмотрены варианты его использования для обнаружения угроз на компьютере под управлением ОС Arch Linux. Вы узнаете как обойти блокировку в России и сканировать свою систему на наличие вирусов.

Установка

Установка в Arch Linux выполняется с помощью пакетного менеджера Pacman:
sudo pacman -S clamav

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

clamd: демон ClamAV
clamonacc: On-Access защита в реальном времени
clamdscan: Простой сканирующий клиент
clamdtop: Интерфейс монитора ресурсов для clamd
freshclam: Демон для обновления базы данных
clamconf: Инструмент для создания и проверки конфигурационных файлов

Если же вы используете дистрибутив, в репозиториях которого нет ClamAV или вы вообще используете Windows вместо Linux, то для скачивания и установки понадобится посетить официальный сайт.
Для пользователей из России доступ к сайту запрещен, поэтому придется воспользоваться VPN-сервисом или сетью Tor. Давайте откроем Tor-браузер и попробуем открыть ссылку:

Нажмите на кнопку download для скачивания ClamAV, а далее выберите свою операционную систему:

Более подробно про установку ClamAV на разные операционные системы можно почитать в официальном мануале.

Обновление баз данных (обход блокировки)

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

Команда для обновления баз:
sudo freshclam

Файлы баз сохраняются в:

/var/lib/clamav/daily.cvd
/var/lib/clamav/main.cvd
/var/lib/clamav/bytecode.cvd

Выполнение команды может привести к ошибке скачивания файлов. Такая ошибка возникает в случае, если freshclam не может получить доступ к базам данных. Чтобы обойти блокировку доступа, можно использовать Proxy. Для этого в файле /etc/clamav/freshclam.conf измените настройки HTTPProxyServer, HTTPProxyPort, HTTPProxyUsername и HTTPProxyPassword:

Если у вас нет заграничного Proxy, можно использовать *PN или Tor. Для начала покажу на примере использования службы Tor. Настройте службу так, чтобы она использовала HTTP Connect вместо SOCKS. Для этого установите директиву HTTPTunnelPort в файле /etc/tor/torrc:
HTTPTunnelPort 9080

Далее укажите прокси для freshclam:

После этого запустите службу Tor и попробуйте обновить базу:
sudo freshclam

Если же вы хотите использовать *PN, то можете вручную скачать файлы с официального сайта и поместить их в директорию var/lib/clamav/, однако разработчики не рекомендуют данный способ. Всё же, если вы настоятельно хотите это сделать, скачать файлы можно отсюда:

http://database.clamav.net/daily.cvd
http://database.clamav.net/main.cvd
http://database.clamav.net/bytecode.cvd

Автоматическое обновление баз данных

Вы можете включить clamav-freshclam.service для автоматического обновления баз данных, однако не забывайте, что необходимо использовать средства обхода блокировки ClamAV для обновления баз.

Тестирование

Чтобы убедиться, что базы корректно установились, скачайте тестовый файл EICAR (эмуляция вируса) и просканируйте его:
curl https://secure.eicar.org/eicar.com.txt | clamscan -

В результатах сканирования должна быть строка:
stdin: Win.Test.EICAR_HDB-1 FOUND

Добавление дополнительных баз/сигнатур

ClamAV может использовать базы данных/сигнатуры из других репозиториев или поставщиков безопасности. Fangfrisch является наиболее безопасной и удобной заменой clamav-unofficial-sigs. Его никогда не требуется запускать с правами root.

Установка выполняется через AUR:
yay -S python-fangfrisch

Далее создаём структуру базы данных:
sudo -u clamav /usr/bin/fangfrisch --conf /etc/fangfrisch/fangfrisch.conf initdb

И включаем fangfrisch.timer:
sudo enable fangfrisch.timer

Этого вполне достаточно, но при желании вы можете более детально настроить fangfrisch. Конфигурационный файл находится по пути /etc/fangfrisch/fangfrisch.conf. Документация по конфигу здесь. В конфигурационном файле обязательно должен быть db_url. Остальные опции не обязательные и fangfrisch может работать без них, но предлагаю отдельно рассмотреть поставщиков подписей:

Чтобы использовать их, нужно это указать в конфигурационном файле. Обратите внимание, что не все поставщики можно использовать без дополнительных действий. Например некоторые поставщики требуют наличие специального токена.

ВАЖНО!

Проверьте логи демонов fangfrisch.service и fangfrisch.timer. Я заметил, что fangfrisch.service выполняется с ошибками обновления баз. Скорее всего какой-то поставщик также ограничил доступ к базе для пользователей из России. Для просмотра логов используйте journalctl или sysz. Вывод journalctl -u fangfrisch.service выдал мне такой результат:

Чтобы обновить базы, можно вручную воспользоваться Tor'ом. Например, я это сделал через orjail:
orjail --host-torrc -s
sudo -u clamav /usr/bin/fangfrisch --conf /etc/fangfrisch/fangfrisch.conf refresh

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

Ну а демон fangfrisch.timer можно отключить, чтобы в фоне не было лишних попыток подключений, которые завершаются ошибкой. Главное, перед сканированием не забывать делать обновления вручную через Tor.

Сканирование

Для сканирования используется clamscan. Вы можете посмотреть опции с помощью команды clamscan --help:

Также существует man-страница:
man clamscan

Например мы можем узнать версию программы:
clamscan --version

Но всё-таки, давайте перейдём к сканированию. Чтобы просканировать конкретный файл, укажите к нему путь:
clamscan ~/file

Чтобы рекурсивно просканировать какую-то конкретную директорию, используется опция -r и указывается путь к директории:
clamscan -r /home/user

Чтобы выводилась информация только о заражённых файлах, можно добавить опцию -i:
clamscan -r -i /home/user

Найденные заражённые файлы можно помещать в отдельную директорию:
clamscan -r -i --move ~/quarantine /home/user

Опция --bell отвечает за воспроизведение звукового сигнала при обнаружении угрозы. Для удаления заражённых файлов используется опция --remove (будьте осторожны, чтобы не удалить важные файлы). Когда проверка ClamAV будет завершена, программа выведет общую статистику.

Чтобы просканировать всю систему, просто укажите рекурсивное сканирование. Рекомендую исключить сканирование директорий, в которых содержатся файлы виртуальных машин, т.к. их проверка займёт очень много времени. Чтобы добавить директорию в исключение, используется опция --exclude-dir. Чтобы исключить несколько директорий, используйте разделитель "|", например вот так:
--exclude-dir="/sys|/proc|/dev".

Ну и собственно, команда для сканирования всей системы, за исключением директории с виртуальными машинами:
sudo clamscan -r --exclude-dir="~/VMs"

Чтобы сканирование происходило в фоне, можно отправлять вывод в файл, а программу запустить в фоновом режиме:
sudo clamscan -r -i --exclude-dir="~/VMs" -l scan.log / &

По окончании сканирования просто прочитайте файл с отчётом:
cat scan.log

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

Графические интерфейсы для ClamAV

В использовании консоли для сканирования нет ничего сложного, однако менее опытным пользователям может понадобиться графический интерфейс. Их существует большое множество, но самым популярным является KlamAV. В репозиториях Arch Linux его нет. В качестве альтернативы можно использовать ClamTK:
sudo pacman -S clamtk


Мой Telegram

Мой GitHub

Поддержать автора донатом