АНДРЕЙ АВРАМЕНКО
Все ли возможности ClamAV вы используете?
Антивирусная защита – одна из непосредственных и повседневных задач системного администратора. Чтобы её обеспечить, требуется установить антивирусные пакеты с функцией мониторинга на пользовательских компьютерах, обучить персонал, регулярно проверять все жесткие диски «вручную». Но, как правило, наиболее эффективным и простым в обслуживании является блокировка вирусов на сервере.
ClamAV – антивирусная система, распространяемая под лицензией GPL. Постоянные обновления программы и базы вирусов (не реже чем 3 раза в неделю) дают понять, что проект активно поддерживается разработчиками из многих стран. Его возможности гораздо шире, чем простое сканирование файлов на вирусы, об этом и пойдет сегодня речь.
Установка и конфигурирование
Об установке антивируса под различными операционными системами уже писалось в предыдущих номерах журнала, но я хотел бы добавить несколько слов о возможностях проверки RAR v3-архивов. До сих пор эта возможность не реализована в официальных версиях из-за проблем с лицензированием. Разработчики обещают, что в следующих версиях это будет исправлено, но пока нам остается либо ждать, либо добавить данную возможность самостоятельно. Я выбираю последний вариант. На Opennet.ru были представлены несколько статей на эту тему, но ни одна не смогла служить точным руководством, так или иначе возникали проблемы. Сборка проходила с ClamAV 0.86.2, libunrar 3.4.3.
Скачиваем исходные тексты libunrar с ftp://ftp.rarlab.com/rar/unrarsrc-3.4.3.tar.gz. Скачиваем и применяем патч: http://mcmcc.bat.ru/clamav/unrar-3.4.3_fix.patch:
# cd unrar
# patch -p1 < unrar-3.4.3_fix.patch
# make -f makefile.unix lib
# install -s -D -m 755 libunrar3.so /usr/lib/libunrar3.so
# install -D -m 644 dll.hpp /usr/include/libunrar3/dll.hpp
Наложить исправление для версии 0.84, которое расположено на том же сайте, у меня не получилось. Заплатку пришлось немного подредактировать. Скачать ее можно на сайте журнала http://www.samag.ru в разделе «Исходный код».
# cd clamav-0.86.2
# patch -p1 < clamav.086.2-libunrar3.patch
# aclocal
# autoconf
# automake
# ./configure
# make
# make install
Для установки в ОС Linux я создал RPM и SRPM-пакеты. Их можно скачать там же.
После установки есть смысл проверить работоспособность сканера. Для этого в исходных текстах существует папка test. Зайдем в нее и выполним:
# clamscan *
Результат должен быть примерно следующим (см. рис. 1):
Рисунок 1. Результат тестирования установленного антивируса
Если в каком-то файле не найден вирус, то вы невнимательно следили за сообщениями скрипта configure. Например, если вирус не найден в архиве clam.exe.bz2, то скорее всего у вас не установлен пакет bzlib-devel.
Для тестирования можно также использовать тестовую вирусную сигнатуру, доступную по адресу: http://www.eicar.com/anti_virus_test_file.htm:
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Ее необходимо сохранить в какой-то файл, например virus.txt, затем проверить запуском команды
# clamscan virus.txt
В папке test отсутствуют файлы, запакованные rar3, поэтому для проверки этой функциональности необходимо создать архив с тестовой вирусной сигнатурой самостоятельно.
Возможности
Рассматриваемая антивирусная система имеет широкие возможности, но большинство системных администраторов использует только некоторые из них, необходимые для решения какой-то определенной задачи.
Сканирование файлов с помощью ClamAV
Сканирование производится командой clamscan. Для эффективности можно вводить дополнительные параметры, например:
- clamscan -r /directory – рекурсивное сканирование, т.е. сканирование в подкаталогах;
- clamscan -i – показывать только инфицированные файлы;
- clamscan -move=/infected_files_dir – перемещение инфицированных файлов в отдельную директорию;
- clamscan -remove – удаление инфицированных файлов.
Последний параметр я не рекомендую использовать, т.к. не редкость когда ClamAV ошибается. В моей практике был случай, когда ClamAV находил вирус Oversided.zip в zip-архивах. При распаковке архивов антивирусная система считала файлы неинфицированными. Мы проводили специальную проверку запакованных файлов альтернативными продуктами – вирусы найдены не были.
При обнаружении вируса clamscan отобразит это в статистике сканирования (см. рис. 2).
Рисунок 2. Пример обнаружения вируса
Регулярность полного сканирования файловой системы сервера на вирусы зависит от нескольких параметров, таких как ресурсы сервера, предоставляемые сервисы, требуемая надежность и т. п. Вы сами должны выбрать необходимую частоту. Некоторые специалисты рекомендуют запуск сканирования из cron по расписанию, хотя это и небезопасно, так как для этой программы не редкостью является подверженность отказу от обслуживания, правда, эти проблемы вовремя устраняются разработчиками в очередных версиях.
Если необходима дополнительная функциональность, такая как on-access-проверка файлов или интеграция с MTA, то требуется запуск демона clamd. Для этого необходимо отредактировать конфигурационный файл clamd.conf.
Если необходимо, чтобы сканирование проходило с использованием демона clamd, нужно воспользоваться командой clamdscan. Она является урезанной версией clamscan. После нахождения вируса clamd создаст соответствующую запись в лог-файле и выполнит определенное администратором действие (если данные опции включены в clamd.conf). Также этот способ сканирования более удобен при использовании проверки по расписанию.
Автоматическое обновление
База вирусов регулярно обновляется. Для обновления используется программа freshclam, которая берет настройки из конфигурационного файла freshclam.conf.
Для автоматического обновления достаточно поместить простой скрипт в cron:
# !/bin/sh
freshclam
Clamav-milter – сканирование почты на вирусы
Для интеграции ClamAV с MTA необходимо выполнить:
# ./configure --enable-milter
На данный момент ClamAV поддерживает множество различных интерфейсов к MTA: amavisd-new, amavisd-ng, CommunyGate Pro (модуль cgpav), Courier (модуль ClamCour), postfix (модули clamfilter, clamSMTP, clapf), exim (патч exiscan), qmail (модуль Gadoyanvirus), hMailServer, sendmail (модуль j-chkmail, mailness), MailAvenger и многие другие.
On-access сканер вирусов – Clamuko
Одна из великолепных возможностей, которая реализована в ClamAV – Clamuko – сканирование файлов при попытке их чтения или запуска. Она реализована с помощью модуля ядра Dazuko. Когда я говорю о возможности проверки файлов при чтении, многие системные администраторы говорят, что это лишнее – вирусы в UNIX не живут. Это совершенно неверно, см. статью Криса Касперски о вирусах в UNIX [6]. Также данный вид проверки файлов подходит для файловых серверов. Я использую в своей локальной сети сервер с ОС Linux ALT Master 2.4 в качестве основного контроллера домена на базе Samba 3.0.14. Я ввел проверку перемещаемых профилей и общей сетевой папки.
Результаты небольшого тестирования скорости:
- копирование двух файлов общим размером 72 Мб:
- без проверки антивирусом – 1,5 секунды;
- с проверкой антивирусом – 45 секунд;
- копирование 60 файлов общим размером 3 Мб:
- без проверки антивирусом – менее секунды;
- с проверкой антивирусом – 3 секунды;
- копирование 540 файлов общим размером 24 Мб:
- без проверки антивирусом – 1 секунда;
- с проверкой антивирусом – 7 секунд.
Из этого небольшого теста можно сделать вывод, что задержка при проверке файлов сильно растет с увеличением размера файлов. При проверке документов задержка практически незаметна, даже если общий размер файлов достаточно большой.
Для установки модуля dazuko необходимо скачать последнюю версию с официального сайта, разархивировать и выполнить:
# make
В Linux:
- для версии ядра Linux 2.2-2.4:
# insmod dazuko.o
# mknod -m 600 /dev/dazuko c `grep dazuko /proc/devices | sed "s/ .*//"` 0
- для версии ядра Linux 2.6:
# insmod dazuko.ko
# mknod -m 600 /dev/dazuko c `grep dazuko /proc/devices | sed "s/ .*//"` 0
Во FreeBSD:
# /sbin/kldload ./dazuko.ko
# mknod /dev/dazuko c 33 0
Samba-vscan – защита файлового сервера
Данный проект от OpenAntiVirus создает расширение к файловому серверу Samba – проверка на вирусы, которая осуществляется с помощью ClamAV, Kaspersky AntiVirus, Symantec AntiVirus Engine и некоторых других.
Данный проект отличается от предыдущего тем, что нет необходимости подключать дополнительные модули ядра и не проводится локальная проверка файлов.
Установка для Samba версий 2.2.4 и выше отличается. Я не стану описывать установку для старых версий и остановлюсь на Samba 3.
Для того чтобы установить samba-vscan, вам потребуются исходные тексты Samba: скачиваем, разархивируем, заходим:
# ./configure
# make proto
Скачиваем исходники samba-vscan, я использовал: http://www.openantivirus.org/snapshots/samba3-vscan-0.4.0-snapshot1.tar.gz.
Разархивируем, копируем в каталог исходных текстов Samba командой:
# cp -ra samba-vscan-версия путь_к_исходникам_Samba/examples/VFS
# cd путь_к_исходникам_Samba/examples/VFS/samba-vscan-версия
# ./configure
# gmake
# gmake install
# cp -a clamav/vscan-clamav.conf /etc/samba
Далее правим конфигурационный файл smb.conf. Выбираем ресурс, который будет проверяться антивирусом, например:
[vscan-directory]
comment = virus-protected directory
path = /tmp
vfs object = vscan-oav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
writeable = yes
browseable = yes
guest ok = yes
Наиболее распространенные опции:
- max file size = <value> – максимальный размер проверяемого файла.
- verbose file logging = <boolean> – протоколировать результаты проверки файлов. Если 1 – то все проверяемые файлы, если 0 – только инфицированные.
- scan on open = <boolean> – проверка при открытии файла.
- scan on close = <boolean> – проверка при закрытии файла.
- send warning message = <boolean> – отсылать winpopup сообщение клиенту при обнаружении вируса.
- infected file action = <quarantine|delete|nothing> – перемещать в директорию «на карантин», удалять или только информировать.
- quarantine directory = <string> – директория для перемещения файла «на карантин».
- exclude file types = <string> – исключить проверку следующих типов файлов.
Перед запуском просмотрите /etc/samba/vscan-clamav.conf. Мне пришлось добавить в него:
clamd socket name = /var/lib/clamav/clamd.socket
Проблема как этой, так и предыдущей реализации on-access-сканирования при работе с Windows-клиентами – задержка при переходе между директориями. Дело в том, что windows упорно пытается найти значки в самих файлах, поэтому идет запрос на открытие файла. Антивирусная система, а точнее модули on-access сканирования не разбирают тип запроса и выполняют проверку при каждой попытке просмотреть значок. Из-за этого задержки между переходами по каталогам становятся заметны для конечных пользователей. Решением данной проблемы в последнем случае мог бы быть демон кэширования запросов firewall – vscancs от проекта OpenAntiVirus. Это программа, благодаря которой, не происходит сканирование файлов, не изменившихся после предыдущей проверки. Но дело в том, что она находится на стадии разработки и выпущена только альфа-версия.
Антивирусная проверка на прокси-сервере
Существует несколько решений для блокировки файлов на прокси-сервере, основанные на антивирусе ClamAV, некоторые из них были описаны в июльском номере журнала [7].
- DansGuradian – прокси-сервер, который использует в качестве «веб-браузера» squid или oops. Его возможности как прокси-сервера достаточно скудны, но антивирусная защита и блокировка нежелательного контента организована хорошо. После блокировки пользователю показывается страница, на которой указана причина блокировки. Аналогом DansGuardian является HAVP. Он также может использовать Squid, но может выступать и как отдельный прокси-сервер.
- SquidClamAV Redirector – программа, написанная на языке программирования python, которая позволяет сканировать файлы с определенными расширениями, закачиваемые через прокси-сервер Squid.
- Squid_vscan – очередное решение от проекта OpenAntiVirus. Это пакет исправлений для squid, позволяющий включить антивирусную проверку.
Snort-inline + ClamAV
В некоторых случаях необходима проверка данных, передаваемых по определенному протоколу. Идеальным решением данной проблемы является snort_inline. Это расширение системы обнаружения атак snort, которое позволяет блокировать данные, содержащие вирусы, используя iptables.
Графические интерфейсы
Существует огромное количество графических интерфейсов для данной антивирусной системы: AVScan, BeClam, Clamaktion, ClamShell, ClamTk, clamXav, FETCAV, KlamAV, QtClamAVclient, wbmclamav. Наиболее функциональным графическим интерфейсом для KDE является KlamAV (см. рис. 3).
Рисунок 3. Графический интерфейс KlamAV
Он позволяет on-access-сканирование, сканирование вручную, введение карантина для зараженных файлов, автоматическое обновление, проверка почты (Kmail/Evolution).
ClamWin – антивирусное решение для Windows-систем. Первоначально ClamAV писался для ОС семейства UNIX, впоследствии он был адаптирован и к ОС Windows, запускаясь в эмуляторе cygwin. В отличие от UNIX-версии возможности его более скудны. Вот уже долгое время разработчики обещают реализовать возможность on-access-сканирования файлов, но пока результата нет. Мультиязыковой поддержки пока тоже нет, есть только перевод на некоторые языки «добровольцами». В целом программа предоставляет простой дружественный пользователю интерфейс (см. рис. 4).
Рисунок 4. Внешний вид ClamWin
Заключение
Открытый исходный код ClamAV дает возможность программистам создавать новые проекты на базе этой антивирусной системы, что существенно сказывается на ее популярности. В сравнении с коммерческими продуктами есть один проигрыш – отсутствие эвристического анализа, хочется надеяться, что когда-нибудь эта функция будет добавлена.
Литература, ссылки:
- http://www.clamav.net.
- http://www.clamwin.net.
- http://mcmcc.bat.ru/clam_rar3.html.
- http://www.openantivirus.org.
- http://www.dazuko.org.
- Касперски К. Вирусы в UNIX, или Гибель «Титаника» II. – Журнал «Системный администратор», №1, 2004 г. – 6-23 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=01.2004;a=10).
- Авраменко А. DansGuardian + ClamAV: фильтруем веб-содержимое и строим антивирусную защиту. – Журнал «Системный администратор», №7, 2005 г. – 6-8 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=07.2005;a=03).