Pull to refresh

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

Reading time 3 min
Views 13K
Доброго времени суток, уважаемые пользователи Хабра.

После очередной вспышки вирусной активности в сетевой папке нашей организации я задумался об ее антивирусной защите. Речь идет о сетевой папке, за которую отвечает 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
Tags:
Hubs:
+19
Comments 3
Comments Comments 3

Articles