использование ClamAV для проверки ресурсов Samba
предыстория
Я люблю заниматься исследованием различных антивирусов, узнавать их особенности, недостатки и достоинства.
Ранее в институте использовался DrWeb, он проверял загружаемые на сервер через Samba файлы, но однажды надоело искать ключи для бета-тестеров (да и бетатестирование на данный момент уже подходило к концу) или пробные ключи.
Решил поставить ClamAV, посмотреть как он работает.
что имеем
Имеем рабочий Slackware Linux 10.1 с работающей Samba 3.0.x, а также немного времени, интерес и желание настроить антивирусную проверку загружаемых через Samba файлов.
зачем это нужно
Если у вас нет денег на нормальный коммерческий антивирус, то приходится использовать хоть что-то для защиты, и ClamAV, на мой взгляд - лучший антивирус, распространяемый по лицензии GNU/GPL. То есть бесплатно.
установка и настройка
Для начала нам потребуется ClamAV, на момент написания статьи последней была версия 0.87. Идем на сайт ClamAV (www.clamav.net) и скачиваем последнюю версию.
Устанавливаем ее, как указано в докумнтации на вашу версию в разделе "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;
- укажите в DatabaseOwner пользователя clamav.
Другие настройки можно не изменять, самое важное в этом конфигурационном файле мы уже сделали.
Редактируем clamd.conf:
- самое главное, что необходимо сделать - закомментировать строку, содержащую одно слово - "Example";
- укажите LogFile, например /var/log/clamd.log. Перейдите в каталог /var/log, создайте файл clamd.log и измените владельца на clamav.clamav; - укажите TemporaryDirectory, например, /tmp;
- укажите DatabaseDirectory - /var/lib/clamav (то, что выбрали при конфигурации freshclam);
- укажите 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
если нет сообщений об ошибке, то значит демон запустился. Так же проверьте его наличие в списке процессов.
В логах демона должно быть сообщение вида "Unix socket file /tmp/clamd" - это значит, что средство для взаимодействия с Samba в норме. Теперь нам необходимо скачать и скомпилировать OpenAntiVirus samba-vscan.
Идем на страницусайти скачиваем samba-vscan.
На момент написания статьи последняя версия samba-vscan была 0.3.6b.
Также нам понадобятся исходные коды для Samba. Чтобы не мучаться, просто скачайте исходные коды установленной версии Samba с сайта разработчиков вашего дистрибутива или найдите их на дисках дистрибутива.
Проверим версию установленной в системе версии 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.
проверка работоспособности
Проверим работоспособность нашей антивирусной системы.
Скачиваем ссайтфайл eicar.com и пробуем записать его в каталог //server-name/pub.
Если вы производите это действие из Windows, то вы получите сообщение через систему Windows Messenger о том, что файл eicar.com инфицирован.
автоматические обновления
Осталось добавить freshclam в crontab. Например, добавим следующиую строку:
* */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. Старался написать как можно подробнее и проще, для тех, кто не сильно знаком с темой.
Спасибо за внимание.
Хасянов Ильяс aka umask, umask@yandex.ru.
Я люблю заниматься исследованием различных антивирусов, узнавать их особенности, недостатки и достоинства.
Ранее в институте использовался DrWeb, он проверял загружаемые на сервер через Samba файлы, но однажды надоело искать ключи для бета-тестеров (да и бетатестирование на данный момент уже подходило к концу) или пробные ключи.
Решил поставить ClamAV, посмотреть как он работает.
что имеем
Имеем рабочий Slackware Linux 10.1 с работающей Samba 3.0.x, а также немного времени, интерес и желание настроить антивирусную проверку загружаемых через Samba файлов.
зачем это нужно
Если у вас нет денег на нормальный коммерческий антивирус, то приходится использовать хоть что-то для защиты, и ClamAV, на мой взгляд - лучший антивирус, распространяемый по лицензии GNU/GPL. То есть бесплатно.
установка и настройка
Для начала нам потребуется ClamAV, на момент написания статьи последней была версия 0.87. Идем на сайт ClamAV (www.clamav.net) и скачиваем последнюю версию.
Устанавливаем ее, как указано в докумнтации на вашу версию в разделе "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;
- укажите в DatabaseOwner пользователя clamav.
Другие настройки можно не изменять, самое важное в этом конфигурационном файле мы уже сделали.
Редактируем clamd.conf:
- самое главное, что необходимо сделать - закомментировать строку, содержащую одно слово - "Example";
- укажите LogFile, например /var/log/clamd.log. Перейдите в каталог /var/log, создайте файл clamd.log и измените владельца на clamav.clamav; - укажите TemporaryDirectory, например, /tmp;
- укажите DatabaseDirectory - /var/lib/clamav (то, что выбрали при конфигурации freshclam);
- укажите 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
если нет сообщений об ошибке, то значит демон запустился. Так же проверьте его наличие в списке процессов.
В логах демона должно быть сообщение вида "Unix socket file /tmp/clamd" - это значит, что средство для взаимодействия с Samba в норме. Теперь нам необходимо скачать и скомпилировать OpenAntiVirus samba-vscan.
Идем на страницусайти скачиваем samba-vscan.
На момент написания статьи последняя версия samba-vscan была 0.3.6b.
Также нам понадобятся исходные коды для Samba. Чтобы не мучаться, просто скачайте исходные коды установленной версии Samba с сайта разработчиков вашего дистрибутива или найдите их на дисках дистрибутива.
Проверим версию установленной в системе версии 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.
проверка работоспособности
Проверим работоспособность нашей антивирусной системы.
Скачиваем ссайтфайл eicar.com и пробуем записать его в каталог //server-name/pub.
Если вы производите это действие из Windows, то вы получите сообщение через систему Windows Messenger о том, что файл eicar.com инфицирован.
автоматические обновления
Осталось добавить freshclam в crontab. Например, добавим следующиую строку:
* */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. Старался написать как можно подробнее и проще, для тех, кто не сильно знаком с темой.
Спасибо за внимание.
Хасянов Ильяс aka umask, umask@yandex.ru.
Сетевые решения. Статья была опубликована в номере 10 за 2005 год в рубрике sysadmin