Предыстория

Я люблю заниматься исследованием различных антивирусов, узнавать их особенности, недостатки и достоинства.
Ранее в институте использовался Dr.Web, он проверял загружаемые на сервер через Samba файлы, но однажды надоело искать ключи для бета-тестеров (да и бета-тестирование на данный момент уже подходило к концу) или пробные ключи.
Решил поставить ClamAV, посмотреть как он работает.


Что имеем

Имеем рабочий Slackware Linux 10.1 с работающей Samba 3.0.x. Немного времени, интерес и желание настроить антивирусную проверку загружаемых через Samba файлов.


Зачем это нужно

Если у вас нет денег на нормальный коммерческий антивирус, то приходиться использовать хоть что-то для защиты, и ClamAV, на мой взгляд, лучший антивирус, бесплатно распространяющийся по лицензии GNU GPL.


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

Для начала нам потребуется ClamAV (clamav.net). На момент написания статьи последней была версия 0.87. Скачиваем последнюю версию и устанавливаем ее, как указано на http://www.clamav.net/doc/<номер вашей версии>/html в разделе «Installation».

Кратко расскажу о процессе установки. Разархивировав только что скачанный дистрибутив, не спешите набирать ./configure; для начала, создайте группу и пользователя clamav:

# groupadd clamav
# useradd -g clamav -s /bin/false clamav

Затем, можно набрать:
$ ./configure
(или
$ ./configure —help
чтобы увидеть все возможные опции. Кстати, можно и проверку на наличие пользователя и группы clamav тут же отключить, но этого делать не рекомендуется!).

Затем наберите:
$ make

И, после успешной сборки:
# make install

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

По умолчанию конфигурационные файлы расположены в /usr/local/etc, если вы не указывали путь к ним в параметрах к configure.
Редактируем freshclam.conf:
Самое главное, что необходимо сделать — закомментировать строку, содержащую одно слово: «Example».
Укажите значение DatabaseDirectory, как вам удобнее (например, /var/lib/clamav, как указано у меня). Запомните этот путь: в файле clamd.conf также нужно будет его указать.
Укажите значение UpdateLogFile (например, /var/log/freshclam.log). Перейдите в каталог /var/log, создайте файл freshclam.log и измените владельца на clamav.clamav (chown clamav.clamav freshclam.log).
Укажите в DatabaseOwner пользователя clamav.
Другие настройки можно не изменять, самое важное в этом конфигурационном файле мы уже сделали.

Редактируем clamd.conf:
Самое главное, что необходимо сделать — закомментировать строку, содержащую одно слово: «Example».
Укажите LogFile /var/log/clamd.log. Перейдите в каталог /var/log, создайте файл clamd.log и измените владельца на clamav.clamav (chown clamav.clamav clamd.log).
Укажите TemporaryDirectory, например так: /tmp.
Укажите DatabaseDirectory так: /var/lib/clamav.
Укажите LocalSocket /tmp/clamd (главное, чтобы пользователь clamav имел врава доступа к этому сокету на запись и чтение!).
Укажите User clamav.
Другие настройки можно не трогать. Но лучше почитайте комментарии и измените под себя, например, какие объекты не следует проверять. Обратите внимание на LogFileMaxSize.

Теперь запустим freshclam:

# freshclam

Вы должны увидеть сообщения об обновлении вирусных баз: (Downloading *.cvd) — Database Updated…
Если базы не обновились, то прочитайте внимательно, что вам выдал freshclam, а также загляните в лог-файл — /var/log/freshclam.log. Если ничего не помогает, обратитесь за помощью к документации ClamAV.

Запускаем clamd:

# clamd

Проверяем:

# tail /var/log/clamd.log

Если нет сообщений об ошибке, то значит демон запустился. Также проверьте его наличие в списке процессов (ps ax).
В логах демона должно быть сообщение вида Unix socket file /tmp/clamd — это значит, что средство для взаимодействия с Samba в норме.

Теперь нам необходимо скачать и скомпилировать OpenAntiVirus samba-vscan.
Заходим на страницу www.openantivirus.org и скачиваем samba-vscan. На момент написания статьи последняя версия samba-vscan была 0.3.6b.

Также нам понадобятся исходные коды для Samba. Чтобы не мучаться, просто скачайте исходные коды установленной версии Samba с сайта разработчиков вашего дистрибутива или найдите их на дисках дистрибутива. В Slackware 10.1 (подозреваю, что и в 10.2) исходные коды Samba можно найти на 4-м CD. В моем случае это были исходные коды samba-3.0.10.tar.bz2 (Samba версии 3.0.10).

Проверим версию установленной в системе версии Samba так:

# smbd —version

Версия исходных кодов обязательно должна совпадать с установленной версией!

Распакуем исходники samba-3.0.10.tar.bz2 и samba-vscan-0.3.6b.tar.bz2, например, в /usr/src. Переходим в /usr/src/samba-3.0.10/source (или в /path-to-source-dir/samba-version/source), набираем:

$ ./configure
$ make proto

/*
Замечание 1.

Для полной уверенности можно посмотреть параметры configure для Samba в вашем дистрибутиве:

# smbd —build-options

или

# smbd -b

Paths можно задать через соответствующие параметры для configure.

Скорее всего у вас не будет необходимости это делать.
*/

Теперь скопируем каталог с исходниками samba-vscan в /usr/src/samba-3.0.10/examples/VFS (или в /path-to-source-dir/samba-version/examples/VFS).
Таким образом, в каталоге /usr/src/samba-3.0.10/examples/VFS будет подкаталог samba-vscan-0.3.6b. Переходим в каталог /usr/src/samba-3.0.10/examples/VFS/samba-vscan-0.3.6b и набираем:

$ ./configure
$ make

Наш модуль Samba VFS для ClamAV готов.
Теперь необходимо скопировать /usr/src/samba-3.0.10/examples/VFS/samba-vscan-0.3.6b/vscan-clamav.so в каталог, где расположены модули VFS для вашей версии Samba. У меня это был каталог /usr/lib/samba/vfs:

# ginstall -g root -o root -m 0755 /home/toor/samba-3.0.10/examples/VFS/samba-vscan-0.3.6b/vscan-clamav.so /usr/lib/samba/vfs/

/*
Замечание 2.

Я использовал ginstall, чтобы сразу задать права для полученного модуля; можно было просто скопировать, а затем сменить права и владельца.

Также можно было просто набрать:

# make install

Но для этого нужно было выполнить действия, указанные в Замечании 1.
*/

Скопируем /usr/src/samba-3.0.10/examples/VFS/samba-vscan-0.3.6b/clamav/vscan-clamav.conf в каталог, где расположены конфигурационные файлы Samba. У меня это выглядело так:

# cp /usr/src/samba-3.0.10/examples/VFS/samba-vscan-0.3.6b/clamav/vscan-clamav.conf /etc/samba
# chown root.root /etc/samba/vscan-clamav.conf
# chmod 0644 /etc/samba/vscan-clamav.conf

Конфигурируем Samba и samba-vscan.

В /etc/samba/smb.conf нужно изменить некоторые опции для каталога, который хотим проверять, например, так:

——cut—
[pub]
comment = Protected by ClamAV
path = /export/pub
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
writeable = yes
browseable = yes
read-only = no
public = yes
guest ok = yes
——cut—

В /etc/samba/vscan-clamav.conf можно оставить почти все как есть, но я рекомендовал бы изменить следующие параметры:

max file size = <по вкусу>
deny access on error = no
deny access on minor error = no
infected file action = delete

(Действия quarantine, к сожалению, мне не удалось добиться.)

Обязательно необходимо изменить параметр:
clamd socket name = /tmp/clamd

Теперь необходимо перезапустить Samba:
# /etc/rc.d/rc.samba restart

Или:
# killall -HUP smbd


Проверка работоспособности

Проверим работоспособность нашей антивирусной системы. Скачиваем с www.eicar.com файл eicar.com и пробуем записать его в каталог //server-name/pub.
Если вы производите это действие из Windows, то получите сообщение через систему Windows Messenger о том, что файл eicar.com инфицирован.


Автоматические обновления

Осталось добавить freshclam в crontab. Набираем:

# crontab -e

Добавляем строку:

* */2 * * * /usr/local/bin/freshclam > /dev/null 2>&1

Все готово.


Некоторые впечатления

Скорость записи/чтения в/из защищенной директории Samba снизилась в 5-10 раз, но это терпимо, поскольку с pub не ведется активная работа.
Другой же стороной столь низкой скорости является мощность файлового сервера, а это AMD K6-450 Mhz, 192 MB RAM, 2 x HDD Maxtor. Самое большое ограничение — мощность процессора и оперативная память.

Также существенным недостатком ClamAV является нежелание разработчиков добавлять алгоритмы поддержки RAR3 и 7Z по лицензионным соображениям. Кстати, поддержку RAR2 можно включить в clamd.conf.

К существенным недостаткам относится и неразвитость ClamAV в проверке упакованных бинарников: по сравнению с коммерческими антивирусами он просто ничто. Но для базовой защиты вполне сносно работает.

P.S. Старался написать как можно подробнее и проще, для тех, кто не сильно знаком с темой.


Скачать ClamAV

Комментарии закрыты.

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34