20.10.2009

Установка clamav на FreeNAS

Решил от нечего делать набросать небольшое руководство по установке антивируса ClamAV на FreeNAS.
Хочу сразу предупредить всех, кто будет им пользоваться - я не несу никакой ответственности за все, что вы делаете. То, что получилось у меня, может не получиться у вас и наоборот. Для правильной работы потребуется версия full и не менее 50 Мб свободного места, лучше больше.

WARNING! Имеется информация, даже две, о неприятном поведении ClamAV.
Первое - при перенесении зараженного файла в карантинную папку его имя меняется на случайное, восстановить имя трудно и возможно только по логам.
Второе - если с вашего рабочего Windows-компьютера вирус заражает файлы на общем ресурсе Samba, ClamAV это отслеживает и ничего-не-делает/переносит-в-карантин/удаляет (зависит от настроек) файлы. Будьте бдительны, не потеряйте таким образом свою информацию!
Если вы все же решились на установку антивируса, то необходимо знать следующее: ClamAV не имеет антивирусного монитора в его общепринятом смысле. У него есть отдельный сканер и демон, висящий в процессах и проверяющий файлы по запросу. Причем, запрос может быть от разных источников, здесь в качестве источников будут рассматриваться демон Samba [smbd] и файловая система.
Я использовал и тот, и другой режим, но по отдельности, НЕ ВМЕСТЕ!


Мониторинг файловой системы.

1. DAZUKO. "A Stackable Filesystem to Allow Online File Access Control" используется не только для ClamAV, но и для NOD32, Avast, AVG и еще полутора десятков приложений. При компиляции из исходных кодов получится файл модуля dazuko.ko, готовую версию которого для FreeBSD-i386_7.2 можно взять здесь.
2. Находим/скачиваем/компилируем и устанавливаем ClamAV. Настоятельно рекомендуется компилировать антивирус из исходников или портов, потому что по умолчанию архиважный параметр --enable-clamuko выключен. После установки возможно понадобится перезагрузка, по крайней мере, у меня система упорно не резолвила DNS-адреса.
3. Копируем модуль dazuko в нужную папку
freenas:# cp /tmp/dazuko.ko /boot/kernel
4. Временно, для проверки, вручную подгружаем его с помощью
freenas:# kldload /boot/kernel/dazuko.ko
5. Правим файлы конфигурации /usr/local/etc/clamd.conf и /usr/local/etc/freshclam.conf. В них, в общем-то, все подробно расписано, но позволю себе повториться, что в обоих файлах комментируем или удаляем строку Example. В первом обязательно:
  • включаем TCP-адрес (127.0.0.1) и порт;
  • включаем модуль clamuko и настраиваем его;
  • имя пользователя - root (для меня так проще);
  • задаем директорию мониторинга (только не /, это важно).
Заодно проверьте, чтобы все одинаковые пути в этих файлах совпадали.
6. Обновляем антивирусные базы (~24 Мб) командой
freenas:# /usr/local/bin/freshclam
Если freshclam будет ругаться (обычно на какие-то директории) - нужно просто удовлетворить его (создать какие-то директории, поменять права доступа и т.п.).
7. Запускаем демона ClamAV
freenas:# /usr/local/sbin/clamd
При каких-то претензиях - аналогично п. 7 удовлетворяем все его требования.
8. Вот, в общем-то, и все. В зависимости от настроек антивирус будет отслеживать зараженные файлы и блокировать к ним доступ. К сожалению, метод ON_CLOSE не работает, поэтому записать заразу извне удастся (например через SFTP), а открыть или запустить - нет.
9. Если все работает как надо, настраиваем автозапуск:
  • a. В WebGUI -> 'System' -> 'Advanced' -> 'Command Scripts' задаем команду /sbin/kldload /boot/kernel/dazuko.ko и тип запуска 'PreInit'. Это загрузит модуль dazuko.ko при старте;
  • b. В WebGUI -> 'System' -> 'Advanced' -> 'rc.conf' задаем параметр variable='clamav_clamd_enable' и value='YES'. Это позволит запускать демона при старте;
  • c. В WebGUI -> 'System' -> 'Advanced' -> 'сron' добавляем задание /usr/local/bin/freshclam -quiet от имени 'root' для обновления баз по расписанию.

Мониторинг общих ресурсов Samba.


1. Выполняем пункты 2, 5, 6, 7 предыдущего раздела. ClamAV НЕ обязательно должен быть скомпилирован с опцией --enable-clamuko.
2. С сайта OpenAntivirus скачиваем исходники samba-vscan (on-access virus scanning with Samba) последней версии, а также исходники Samba именно той версии, которая у вас используется. Далее разворачиваем, копируем, собираем и компилируем модуль vscan-clamav.so. Именно он и осуществляет "перехват" гоняемых по Samba файлов и "дергает" демона clamd для их проверки. Не забудьте также файл настройки vscan-clamav.conf.
3. Копируем во FreeNAS /usr/local/lib/samba/vfs/vscan-clamav.so и /usr/local/etc/vscan-clamav.conf.
4. Правим файл настроек /usr/local/etc/vscan-clamav.conf.
5. Для общего ресурса, который хотим проверять: WebGUI -> 'Services' -> 'CIFS/SMB|Shares' -> 'НУЖНЫЙ_РЕСУРС' -> 'Auxiliary parameters' пишем следующие строки:
vfs object = vscan-clamav
vscan-clamav: config-file = /usr/local/etc/vscan-clamav.conf

и перезапускаем Samba. Что произойдет? А ничего! Потому что vscan-clamav требует для своей работы библиотеку /usr/lib/libmagic.so.3. Только после этого и еще одного перезапуска Samba все заработает как надо.
6. Выполняем подпункты b) и с) пункта 9 предыдущего раздела.

Вот вроде бы и все.

PS. Для тех, кому лень что-то компилировать (а также для себя), я приготовил пакет clamav-0.95.2-fn0.7.tgz со всеми нужными файлами, протестированый на FreeNAS_i386_0.7RC2-build-4910_full, версия Samba 3.0.37. Устанавливать как обычный пакет, через WebGUI или pkg_add <имя_файла>.
Для удобства редактирования можете воспользоваться обрезанной версией Midnight Commander. Но учтите, что некоторые функции в ней недоступны (просмотр man-руководств с форматированием или прямая работа с архивами, например), это просто файловый менеджер с просмотрщиком и редактором. Также протестирован на FreeNAS_i386_0.7RC2-build-4910_full.
PS2. Если возникают вопросы - не ленитесь, спросите Google. Информации по настройке море, и она доступна любому. Если же совесть уснула крепко и надолго, вот ссылки один, два, три, четыре и пять.
Отдельно спасибо сайту Lissyara.

5 комментариев:

  1. У меня возник вопрос по 2 пункту про samba-vscan. Подскажите пожалуйста как это сделать

    ОтветитьУдалить
  2. Хм... Вроде уж старался расписать по шагам, так чтоб было максимально понятно.
    Какой конкретно вопрос вас интересует, что не получается? Если не получается собрать samba-vscan, то там есть особенность, описанная в инструкции - нужно исходные тексты Samba положить в определенную папку. При компиляции модуля они потребуются (куда конкретно - уже не помню, читайте readme).

    ОтветитьУдалить
  3. Вопрос один как компилировать приложение?

    ОтветитьУдалить
  4. Непосредственно на FreeNAS - никак. Эта система, как вы понимаете, "заточена" под определенную цель - быть простны и удобным в настройке сетевым хранилищем. Поэтому все средства разработки, типа компиляторов, оттуда вычищены.
    Для компиляции лично я использовал виртуальную машину с установленной туда полной FreeBSD 7.0. При необходимости туда же можно доустановить все, что необходимо.
    Сама компиляция - как обычно, "configure&&make".

    ОтветитьУдалить
  5. Ну все яино спасибо)

    ОтветитьУдалить