Использование ClamAV для проверки ресурсов Samba 3.0.x в Linux
Администрирование
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 7 февраля 2010 года в 01:32.
Постоянная ссылка: http://www.nixp.ru/articles/14.html
Использование ClamAV для проверки ресурсов Samba 3.0.x через VFS в Linux (на примере Slackware Linux 10.1).
Использование ClamAV для проверки ресурсов Samba 3.0.x через VFS в Linux (на примере Slackware Linux 10.1).
Предыстория
Я люблю заниматься исследованием различных антивирусов, узнавать их особенности, недостатки и достоинства. Ранее в институте использовался 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. Старался написать как можно подробнее и проще, для тех, кто не сильно знаком с темой.
Спасибо за внимание.
-
Популярные в этом разделе:
- «Настройка сервера SSH (теория и практика)»,
- «Реализация отправки и приёма SMS с помощью Gnokii»,
- «Настройка сервера OpenLDAP».
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1