Clamav Daemon

Ubuntu Server. Антивирусная защита для файлового сервера (Samba + ClamAV).

Samba-clamav.png

Мы не будем говорить, насколько важно обеспечить защиту файловому серверу организации. Это очевидно. Несмотря на то, что Ubuntu вирусы не страшны, оставленный без защиты сервер очень быстро может стать очагом распространения вредоносных программ в локальной сети предприятия. В качестве решения начального уровня можно использовать бесплатный антивирус ClamAV.

За основу решения мы взяли наш Samba-сервер, который был обновлен до Ubuntu 10.04. Нам необходимо настроить проверку “на лету” всех файлов в общих папках к которым обращаются пользователи. Собственно ClamAV ничего проверять в режиме реального времени не умеет, поэтому нужно воспользоваться сторонними модулями.

Наиболее современным способом является использование виртуальной файловой системы ClamFS, смонтировав в нее любой каталог, мы обеспечим ему антивирусную проверку при обращении к файлам.

Установим необходимые пакеты:

# apt-get install clamav clamav-daemon clamfs

Запуск обновлений:

# freshclam

Создадим каталоги для монтирования виртуальной файловой системы. Будем придерживаться существующей системы каталогов, если пользовательские данные хранятся у нас в /data, то в виртуальной ФС будем использовать /clamfs/data:

# mkdir /clamfs
# mkdir /clamfs/shares

Установим права на папку /clamfs и вложенные подпапки:

# chmod -R 777 /clamfs

Теперь займемся настройкой ClamFS. Заготовка конфигурационного файла находится в /usr/share/doc/clamfs/clamfs-sample.xml.gz, перейдем в данный каталог, распакуем файл и скопируем его в /etc/clamav под именем clamfs.xml:

# cd /usr/share/doc/clamfs/
# gunzip clamfs-sample.xml.gz
# cp /usr/share/doc/clamfs/clamfs-sample.xml /etc/clamav/clamfs.xml

Откроем clamfs.xml, найдем опцию File system settings и зададим ее следующим образом:

<filesystem root="/shares" mountpoint="/clamfs/shares" public="yes" nonempty="yes" />

Подробно разбирать формат строки мы не будем, все и так должно быть понятно. Теперь изменим параметр отвечающий за запись логов, по умолчанию ClamFS пишет логи в syslog, что неудобно, лучше если все события будут записываться в отдельный лог. Найдем и закомментируем строку (должно выглядеть следующим образом):
Обращаем ваше внимание, что в xml комментарии заключаются в символы . И раскомментируем строку ниже:

<log method="file" filename="/var/log/clamav/clamfs.log" verbose="no" />

Сохраняем настройки. Последовательно запускаем clamd и clamfs:

# /etc/init.d/clamav-daemon start
# clamfs /etc/clamav/clamfs.xml

Проверяем, каталог /shares должен смонтироваться в /clamfs/shares.

Теперь о ложке дегтя. Как выяснилось, в Ubuntu 10.04 ClamFS при включенном Apparmor полностью блокирует все файлы на чтение. Выходов из этой ситуации несколько, так как файловый сервер обычно является сугубо внутрисетевым ресурсом, то мы пойдем по наиболее простому пути и просто удалим профиль clamd для Apparmor:

# rm /etc/apparmor.d/usr.sbin.clamd

Осталось обеспечить автоматический запуск и монтирование ClamFS при загрузке системы. Распространённые в интернете рекомендации по монтированию ClamFS через fstab не приводят к желаемому результату, т.к. fstab обрабатывается гораздо раньше, чем загружаются модули ядра отвечающие за функционирование ClamFS. Поэтому поместим команду запуска ClamFS в скрипт автозапуска /etc/rc.local. Добавим в него следующую строку:

# clamfs /etc/clamav/clamfs.xml

P.S. Проблема: не монтировался clamfs при старте системы (Ubuntu server 11.10). Все было прописано в rc.local, но тем не менее, не монтировался. Проблема решилась так: в файле конфигурации clamfs.xml в узле “socket” надо заменить значение атрибута “check” на “no”.

Перезагружаемся:

# reboot

Убедившись, что все работает, перейдем к настройке Samba. Изменим пути к общим папкам так, чтобы они вели на ClamFS, например для папки ADM вместо:

path = /shares/obshaya$

будет:

path = /clamfs/shares/obshaya$

Изменив таким образом пути для всех общих ресурсов, которым требуется антивирусная защита, перезапускаем Samba:

# /etc/init.d/smbd restart

Скачиваем с сайта EICAR тестовые файлы (не забыв выключить антивирус), помещаем их в общую папку на сервере и пробуем получить к ним доступ. ClamAV сразу пресекает наши попытки как открыть (запустить):

Samba-clamav-1.png

так и скопировать зараженный файл:

Samba-clamav-2.png

Вредоносные программы блокируются, это хорошо, а вот то, что они остаются в общих папках не очень хорошо. Что делать? На помощь нам придет сканер clamscan, он может проверять нашу папку по расписанию и перемещать вредоносные объекты в папку карантина. Почему именно на карантин? Во первых ClamAV иногда ошибается, во вторых он не умеет лечить отдельные типы вирусов (только удалять), поэтому лучшим вариантом будет именно помещение подозрительных объектов на карантин с последующей проверкой коммерческим антивирусом.

Создадим карантинную папку и установим права на нее:

# mkdir /data/quarantine
# chmod 777 /data/quarantine

Данную папку следует опубликовать как общий ресурс, однако доступ к ней должен иметь только администратор отвечающий за антивирусную защиту. Заведем на сервере отдельного пользователя (допустим avadmin) и установим ему SMB пароль, пароль на доступ в систему ему устанавливать необязательно.

sudo useradd avadmin sudo smbpasswd -a avadmin

Теперь создадим в /etc/samba/smb.confследующую секцию:

[Quarantine] path = /data/quarantine read only = No valid user = avadmin

Перезапускаем Samba, папка Quarantine появилась в списке общих ресурсов, однако для доступа к ней нужно пройти авторизацию:

Samba-clamav-3.png

Создадим скрипт для антивирусной проверки:

# touch /etc/clamav/clamscan

Добавим в него следующие строки:

#!/bin/sh
/usr/bin/clamscan -r /data/ADM --move=/data/quarantine

Если нужно проверять несколько общих ресурсов добавляем несколько строк, ключ -r указывает на рекурсивную проверку (вместе с подпапками). Сохраним изменения и сделаем наш скрипт исполняемым:

# chmod +x /etc/clamav/clamscan

Теперь настроим расписание. Допустим мы хотим запускать проверку каждый день в 17:45, для этого добавим в файл /etc/crontabследующую строку:

45 17 * * * root /etc/clamav/clamscan

Выбирая время проверки следует учитывать загрузку сервера. Если нужно проверять разные ресурсы с разной периодичностью (например базы 1С реже, офисные документы чаще) то нужно создать несколько скриптов и несколько расписаний.

В указанное нами время скрипт выполнится и зараженные файлы будут перемещены в карантин. На этом настройку антивирусной защиты можно считать законченной.

Eicar-Test-File.com

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*