Russian English German Ukrainian

Компьютерная помощь

(066) 72-00-654     (098) 44-74-068

г. Днепр

ж/м Левобережный-3

Ubuntu: защита сервера SAMBA антивирусом ClamAV

Файловый сервер Samba используется для полноценного взаимодействия ОС Linux с рабочими станциями и серверами под управлением ОС Windows по протоколу SMB. Данный сервер как решает множество проблем с обменом файлами, так и создает целый ряд новых. Т.к. он заточен, в основном, для работы с операционными системами MS Windows, то тут возникает проблема с распространением вредоносного ПО через «расшаренные» сетевые папки. За файловый сервер Ubuntu, обычно, можно не волноваться, а вот виндовые рабочие станции, зачастую становятся источником заражения для остальных ПК.

Нам необходимо организовать антивирусную проверку, на лету, загружаемых на сервер файлов. Организовать проверку расшаренных папок, это пол дела, нам необходимо еще организовать, антивирусную защиту, домашних директорий пользователей.

Все пользовательские операции на запись и чтение файлов сервера, будут проходит через ClamFS т.к. сам ClamAV не умеет проверять файлы на лету. Работа ClamFS напоминает прослойку между пользователем и файловой системой файлового сервера т.е все файлы проходящие через нее, проходят обязательную проверку и если с ними все нормально, то они записывается в раздел /home, но если с ними не все в порядке, то они также будут сохранены на на сервере, но доступ к ним получить, будет нельзя.


Установка ClamAV и ClamFS

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

sudo apt-get install clamav clamfs clamav-daemon

теперь нам необходимо создать директорию /clamfs

sudo mkdir /clamfs

А в директории /home создать директорию /clamav

sudo mkdir /home/clamav

предоставим для директории clamfs полные права для всех:

sudo chmod -R 777 /clamfs

Теперь, нам понадобится пример конфигурационного файла ClamFS который находится в архиве, распакуем его:

sudo gunzip /usr/share/doc/clamfs/clamfs-sample.xml.gz

Скопируем его в директорию с ClamAV заодно переименовав в clam.xml

sudo cp /usr/share/doc/clamfs/clamfs-sample.xml /etc/clamav/clam.xml

Редактируем его, нас интересует пункт filesystem root, но то что в нем написано нас не устраивает, то что есть в файле мы закоментируем и добавим свою стоку:

sudo 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

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

Примонтируем содержимое директории /home/clamav в /clamfs

sudo clamfs /etc/clamav/clam.xml

Главный фокус в том что директория останется примонированной только до перезагрузки, после рестарта системы, монтирование необходимо восстановить, делать это в ручную-совершенно не правильно, по этому, этот скучный процесс мы автоматизируем, для этого отредактируем файл rc.local:

sudo nano /etc/rc.local

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

clamfs /etc/clamav/clam.xml

Сохраняем изменения и выходим.

Далее необходимо установить Samba сервер.

Установка Samba

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

sudo apt-get install samba samba-common libcups2

Редактируем файл smb.conf

sudo nano /etc/samba/smb.conf

Находим и снимаем комментарий со строки:

security = user

Добавим в конфигурационный файл строку, с ее помощью немного повышается скорость работы по протоколу SMB:

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192

Сохраняем изменения выходим из smb.conf

Создадим общие папки для наших пользователей и предоставим для них соответствующие права:

sudo mkdir -p /clamfs/public
sudo chown -R root:users /clamfs/public
sudo chmod -R ug+rwx,o+rx-w /clamfs/public

Снова беремся за редактирование smb.conf

sudo 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

Сохраняем все изменения и выходим.

Перезагружаем файловый сервер:

sudo /etc/init.d/smbd restart

В директории /home мы создали директорию /clamav/ в нее мы и будем добавлять домашние каталоги всех новых пользователей, а также сетевые папки, сделано это для того чтобы упорядочить проверяемые файлы.

Теперь нам необходимо добавить в систему нового пользователя с именем test:

sudo useradd test -b /home/clamav/ -m -G users

Где:test-имя пользователя
/home/clamav-место где будет находиться домашняя директория пользователя.
ключ -m — указывает на то, что будет создана одноименная домашняя директория.
-G users — добавим пользователя в группу users.

Добавим этого пользователя в базу Samba, для того, чтобы он мог подключаться в сетевым папкам:

sudo smbpasswd -a test

Что у нас получилось:

1) Сетевая, общая, папка-физически находится у нас по пути /home/clamav/public
2) Все запросы идут черед директорию /clamfs благодаря чему все файлы проверяются на наличие вредоносного ПО.
3) Домашние директории пользователей также проходят антивирусную проверку, но по расписанию и располагаются в /home/clamav/$USER_NAME

Проверка

Теперь нам необходимо его протестировать, то что мы тут наворотили. Файл для тестирования работоспособности антивирусов можно скачать ОТСЮДА. Выключаем антивирус на локальном ПК т.к. загружаемый архив будет быстро заблокирован.

Загружаем архив на наш, свеженький, файловый сервер в папку Public и после этого попытаемся скопировать его обратно себе на ПК, ClamFS пресекает наши попытки это и есть демонстрация работоспособности антивирусной системы. Но можно предположить, что вирус попал на сервер раньше, чем его сигнатура была добавлена в антивирусную базу, для решения этой проблемы нам необходимо выполнять регулярную проверку всех файлов на файловом сервере. Как часто ее проводить-личное дело каждого и зависит от параноидальности того, кто все это настраивает. Самым приемлемым вариантом, по моему личному мнению, после завершения рабочего дня, тогда и нагрузка на сервере поменьше и скорость доступа к файлам не имеет значения, ведь все ушли домой. И вот тут тоже возможны варианты, можно запускать проверку и чтобы все файлы в которых обнаружено подозрительное ПО немедленно удалялись, а можно сделать так, что все подозрительные файлы складывались в карантин, системный администратор потом будет разбираться с каждым индивидуально.

Рассмотрим оба варианта:

1. Принудительное удаление всех подозрительных файлов.

Работа по принципу: «Стреляй всех подряд, а господь разберется!» имеет право на жизнь, но лишь до поры до времени. Если в сетевой папке лежат файлы, потеря которых не критична, то можно смело его использовать и забыть о присмотре за данной сетевой шарой, а заняться более интересными вещами.

Создадим малюсенький скрипт, который можно запускать через крон:

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

  • Сборка ПК для дома и офиса

  • Бесплатная диагностика

  • Гарантия

  • Самые низкие цены