Блог ИТ склеротика. Защита файлового сервера SAMBA антивирусом ClamAV в Ubuntu 11.04

Страницы

Расширенный поиск в статьях блога

20 февраля 2012 г.

Защита файлового сервера SAMBA антивирусом ClamAV в Ubuntu 11.04

Файловый сервер 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 т.к. все её содержимое проверяется автоматически по расписанию, а по этой причине нет необходимости проверять карантинную директорию, мы ведь и так знаем, что в ней находятся подозрительные файлы.

.

Счетчик тИЦ и PR Яндекс.Метрика Msn bot last visit powered by MyPagerank.NetYahoo bot last visit powered by MyPagerank.Net ping fast  my blog, website, or RSS feed for Free