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

  • Автор:

samba-clamav.png

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

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

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

sudo apt-get install clamav clamfs

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

sudo mkdir /clamfs
sudo mkdir /clamfs/data

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

 sudo chmod -R 777 /clamfs

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

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

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

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

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

 <!-- <log method="syslog" /> -->

Обращаем ваше внимание, что в xml комментарии заключаются в символы <!-- ... -->. И раскомментируем строку ниже:

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

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

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

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

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

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

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

clamfs /etc/clamav/clamfs.xml

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

sudo reboot

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

path = /data/ADM

будет:

 path = /clamfs/data/ADM

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

sudo /etc/init.d/smbd restart

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

samba-clamav-1.pngтак и скопировать зараженный файл:

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

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

sudo mkdir /data/quarantine
sudo 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Создадим скрипт для антивирусной проверки:

sudo touch /etc/clamav/clamscan

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

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

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

sudo chmod +x /etc/clamav/clamscan

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

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

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

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.


Loading Comments