Файловый сервер Samba используется для полноценного взаимодействия ОС Linux с рабочими станциями и серверами под управлением ОС Windows по протоколу SMB. Данный сервер как решает множество проблем с обменом файлами, так и создает целый ряд новых. Т.к. он заточен, в основном, для работы с операционными системами MS Windows, то тут возникает проблема с распространением вредоносного ПО через «расшаренные» сетевые папки. За файловый сервер Ubuntu, обычно, можно не волноваться, а вот виндовые рабочие станции, зачастую становятся источником заражения для остальных ПК.
Нам необходимо организовать антивирусную проверку, на лету, загружаемых на сервер файлов. Организовать проверку расшаренных папок, это пол дела, нам необходимо еще организовать, антивирусную защиту, домашних директорий пользователей.
Собственно сама схема работы:
А теперь более развернуто, как все это будет работать. Все пользовательские операции на запись и чтение файлов сервера, будут проходит через ClamFS т.к. сам ClamAV не умеет проверять файлы на лету. Работа ClamFS напоминает прослойку между пользователем и файловой системой файлового сервера т.е все файлы проходящие через нее, проходят обязательную проверку и если с ними все нормально, то они записывается в раздел /home, но если с ними не все в порядке, то они также будут сохранены на на сервере, но доступ к ним получить, будет нельзя.
Переходим к практической части:
Установка ClamAV и ClamFS
sudo su
aptitude install clamav clamfs
теперь нам необходимо создать директорию /clamfs
mkdir /clamfs
А в директории /home создать директорию /clamav
mkdir /home/clamav
предоставим для директории clamfs полные права для всех:
chmod -R 777 /clamfs
Теперь, нам понадобится пример конфигурационного файла ClamFS который находится в архиве, распакуем его:
gunzip /usr/share/doc/clamfs/clamfs-sample.xml.gz
Скопируем его в директорию с ClamAV заодно переименовав в clam.xml
cp /usr/share/doc/clamfs/clamfs-sample.xml /etc/clamav/clam.xml
Редактируем его, нас интересует пункт filesystem root, но то что в нем написано нас не устраивает, то что есть в файле мы закоментируем и добавим свою стоку:
nano /etc/clamav/clam.xml
<filesystem root="/home/clamav" mountpoint="/clamfs" public="yes" nonempty="yes" />
Где:
filesystem root="/home/clamav" -как видно из названия, корень файловой системы, физическое расположение папки по пути/home/clamav
mountpoint="/clamfs" — точка монтирования, физическое расположение папки по пути /clamfs
Также в этом файле нам необходимо изменить настройки логирования работы работы ClamFS, по умолчанию, все записи попадают в syslog, это не правильно и для этих целей необходимо создавать свой журнал, для этого нам необходимо закоментировать строку
<log method="syslog" />
Она должна выглядеть:
<!-- <log method="syslog" /> -->
и раскоментировать следующую за ней строку:
<log method="file" filename="/var/log/clamfs.log" verbose="no" />
Сохраняем изменения, выходим.
запускаем ClamAV
/etc/init.d/clamav-daemon start
Примонтируем содержимое директории /home/clamav в /clamfs
clamfs /etc/clamav/clam.xml
Главный фокус в том что директория останется примонированной только до перезагрузки, после рестарта системы, монтирование необходимо восстановить, делать это в ручную-совершенно не правильно, по этому, этот скучный процесс мы автоматизируем, для этого отредактируем файл rc.local:
nano /etc/rc.local
Добавим в него, перед строкой exit 0, следующее:
clamfs /etc/clamav/clam.xml
Сохраняем изменения и выходим.
Далее нам необходимо установить Samba сервер:
Установка Samba сервера
Установим необходимые пакеты:
aptitude install samba samba-common libcups2
Редактируем файл smb.conf
nano /etc/samba/smb.conf
Находим и снимаем комментарий со строки:
security = user
Добавим в конфигурационный файл строку, с ее помощью немного повышается скорость работы по протоколу SMB:
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
Сохраняем изменения выходим из smb.conf
Создадим общие папки для наших пользователей и предоставим для них соответствующие права:
mkdir -p /clamfs/public
chown -R root:users /clamfs/public
chmod -R ug+rwx,o+rx-w /clamfs/public
Снова беремся за редактирование smb.conf
nano /etc/samba/smb.conf
Добавим туда следующие строчки:
[Public]
comment = All Users
path = /clamfs/public
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes
Далее находим секцию [homes]
И закомментируем все что в ней есть, обозначенное (; ) их заменяем на #
И вместо, всего что там есть, вставляем следующее.
[homes]
comment = Home Directories
browseable = no
valid users = %S
writable = yes
create mask = 0700
directory mask = 0700
Сохраняем все изменения и выходим.
Перезагружаем файловый сервер:
/etc/init.d/smbd restart
В директории /home мы создали директорию /clamav/ в нее мы и будем добавлять домашние каталоги всех новых пользователей, а также сетевые папки, сделано это для того чтобы упорядочить проверяемые файлы.
Теперь нам необходимо добавить в систему нового пользователя с именем test:
useradd test -b /home/clamav/ -m -G users
Где:test-имя пользователя
/home/clamav-место где будет находиться домашняя директория пользователя.
ключ -m — указывает на то, что будет создана одноименная домашняя директория.
-G users — добавим пользователя в группу users.
Добавим этого пользователя в базу Samba, для того, чтобы он мог подключаться в сетевым папкам:
smbpasswd -a test
Что у нас получилось:
1) Сетевая, общая, папка-физически находится у нас по пути /home/clamav/public
2) Все запросы идут черед директорию /clamfs благодаря чему все файлы проверяются на наличие вредоносного ПО.
3) Домашние директории пользователей также проходят антивирусную проверку, но по расписанию и располагаются в/home/clamav/$USER_NAME
Теперь нам необходимо его протестировать, то что мы тут наворотили. Файл для тестирования работоспособности антивирусов можно скачать ОТСЮДА. Выключаем антивирус на локальном ПК т.к. загружаемый архив будет быстро заблокирован.
Загружаем архив на наш, свеженький, файловый сервер в папку Public и после этого попытаемся скопировать его обратно себе на ПК, ClamFS пресекает наши попытки это и есть демонстрация работоспособности антивирусной системы. Но можно предположить, что вирус попал на сервер раньше, чем его сигнатура была добавлена в антивирусную базу, для решения этой проблемы нам необходимо выполнять регулярную проверку всех файлов на файловом сервере. Как часто ее проводить-личное дело каждого и зависит от параноидальности того, кто все это настраивает. Самым приемлемым вариантом, по моему личному мнению, после завершения рабочего дня, тогда и нагрузка на сервере поменьше и скорость доступа к файлам не имеет значения, ведь все ушли домой. И вот тут тоже возможны варианты, можно запускать проверку и чтобы все файлы в которых обнаружено подозрительное ПО немедленно удалялись, а можно сделать так, что все подозрительные файлы складывались в карантин, системный администратор потом будет разбираться с каждым индивидуально.
Рассмотрим оба варианта:
1. Принудительное удаление всех подозрительных файлов.
Работа по принципу: «Стреляй всех подряд, а господь разберется!» имеет право на жизнь, но лишь до поры до времени. Если в сетевой папке лежат файлы, потеря которых не критична, то можно смело его использовать и забыть о присмотре за данной сетевой шарой, а заняться более интересными вещами.Создадим малюсенький скрипт, который можно запускать через крон:
nano /home/clamav/virusdelete.sh
И добавим в него следующее:
#!/bin/sh
/usr/bin/clamscan -r /home/clamav --remove=yes
2. Перенос подозрительных файлов в Карантин.
Этот вариант, можно использовать в том случае, если важно не потерять ценные данные, ведь всегда есть возможность что антивирус, по ошибке, может удалить что-то ценное, да и clamav не умеет лечить зараженные файлы-только удалять. Все подозрительные фалы будем складывать в личную папку админа, для того чтобы он разобраться с этими файлами отдельно, например проверив их другим, «коммерческим» антивирусом.Создадим скрипт:
sudo nano /home/virusmove.sh
Следующего содержания:
#!/bin/sh
/usr/bin/clamscan -r /home/clamav --move=/home/srvadmin/quarantine
Домашнюю директорию пользователя srvadmin мы не помещаем в директорию /home/clamav т.к. все её содержимое проверяется автоматически по расписанию, а по этой причине нет необходимости проверять карантинную директорию, мы ведь и так знаем, что в ней находятся подозрительные файлы.