Антивирусное сканирование по доступу на Samba

от автора

Доброго времени суток, уважаемые пользователи Хабра.

После очередной вспышки вирусной активности в сетевой папке нашей организации я задумался об ее антивирусной защите. Речь идет о сетевой папке, за которую отвечает Samba, работающая на Debian Wheezy.

Обратившись в гугл за информацией, я нашел 2 актуальных на текущий момент способа:

Способ 1 — использовать clamfs

Clamfs осуществляет связь между защищённой антивирусом папкой (точкой монтирования) и обычным (служебным) каталогом. При попытке чтения (копирования) файла с защищённого каталога происходит автоматическая проверка файла демоном clamav-daemon на наличие в нём вируса. Для своей работы требует модуль ядра FUSE.

Этот способ хорош, но Samba у нас крутится в LXC контейнере. У меня не было уверенности в стабильности связки между модулем ядра FUSE и lxc контейнером(да и не хотелось трогать хост машину — там не только мои сервисы крутятся), поэтому я остановился на 2 способе.

Способ 2 — использовать samba vfs модуль svs (samba virus scanner)

Как утверждают разработчики svs модуль в теории способен использовать в роли backend’а любой антивирус, но на данный момент поддерживается только ClamAV.

Вот небольшое howto по установке данного модуля на примере Debian Wheezy(Samba 3.6.6):

1.) Первое что необходимо — это установить clamav

apt-get install clamav-daemon clamav-freshclam 

Обновляем базы

freshclam 

Запускаем демона

/etc/init.d/clamav-daemon start 

2.) В репозиториях svs модуля нет, поэтому необходимо установить необходимые пакеты для сборки модуля

apt-get install build-essential qt4-make libqt4-dev 

Скачиваем сорцы самбы и компилируем необходимые header’ы

apt-get source samba cd samba-3.6.6/source3 ./configure ./make 

Скачиваем исходники модуля svs с сайта sourceforge в директорию /tmp.
Распаковываем и компилируем:

cd samba-3.6.6 bzcat /tmp/svs-0.1.4.tar.bz2 | tar xvf - cd svs qmake && make 

Копируем svs модуль в директорию с vfs модулями самбы.
На 32 битной системе:

cp --no-dereference libsvs*.so* /usr/lib/samba/vfs/ 

На 64-битной системе:

cp --no-dereference libsvs*.so* /usr/lib64/samba/vfs/ 

Итак — модуль на месте, теперь нужно создать для него конфигурационный файл /etc/samba/svs.ini со следующим содержанием:

[SVS] maxParallelScans=6 maxCachedResults=10000 statisticsLogInterval=500 statisticsLogThreadUtil=false clamdscanCommand=clamdscan postScanSleep=100 infectAction=quarantine quarantineDirectory=/home/viruses scanOnOpen=true scanOnClose=true turboMode=false maxScannerHeartbeatAge=0 maxQueuedRequests=24 waitPendingScans=false 

Разберем параметры:

maxParallelScans — максимальное число параллельных сканирований (я сделал по числу ядер процессора)
maxCachedResults — максимальное число кэшируемых результатов
statisticsLogInterval — время в миллисекундах между записами в лог сканера
statisticsLogThreadUtil — логирование утилизации потоков
clamdscanCommand — команда для запуска сканирования clamav
postScanSleep — время в миллисекундах, на которые процесс сканирование «засыпает» ( для уменьшения нагрузки на clamav)
infectAction — действие при обнаружении вируса. Может принимать значения ‘none’, ‘delete’, ‘quarantine’
quarantineDirectory — директория, куда помещаются найденные вирусы
scanOnOpen — сканирование при открытии файла
scanOnClose — сканирование при закрытии файла
maxScannerHeartbeatAge — максимальное время в миллисекундах, после которого svs заменит поток следующим в очереди. При значении < ‘1000’ эта опция считается выключенной
maxQueuedRequests — максимальное число ожидающих в очереди запросов на сканирование(4 X maxParallelScans)
waitPendingScans — не закрывать сессию сканирования до появления запросов сканирования в очереди

Теперь нужно включить vfs модуль svs на samba. Для этого добавим в настройки шары опцию

vfs objects = libsvs_clamav 

Ну и перезапустим самбу

/etc/init.d/samba restart 

Все. На этом настройка антивирусного сканирования по доступу на samba с помощью vfs модуля svs закончена.

На текущий момент у меня связка samba + svs работает без перебоев 2 месяца.
Про нагрузку на сервер могу сказать что на Xeon E31230 средний LA (load average) не поднимается выше 3 при одновременной работе 50 пользователей.

Ссылки:

Readme разработчика модуля SVS — sourceforge.net/p/svs/code/HEAD/tree/trunk/README
Хорошая статья, очень помогла при настройке — scottlinux.com/2011/09/06/clamav-virus-on-access-scanning-for-samba-shares/

ссылка на оригинал статьи http://habrahabr.ru/post/205326/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *