Samba плюс Clamav. Антивирусная проверка расшаренных через Самбу папок

Опубликовано:

Задача: организовать антивирусный мониторинг папок, расшареных по самбе. Желательно выдавать предупреждение юзерам, о наличии зараженного файла и перемещать подозрительные файлы в карантин. Этим и займемся.За основу взята статья у Лиссяры:

порт /usr/ports/security/clamav у меня уже установлен.  Сначала ставим сам Clamav. После чего идем дальше. Ставим модуль для самбы samba-vscan

# cd /usr/ports/security/samba-vscan
# make && make install && make clean

Рихтуем /usr/local/etc/smb.conf

 

[my_share]

comment = Home Directories

path = /samba_shares/common/

read only = No

browseable = Yes

create mask = 0664   # maska sozdavaemih failov

directory mask = 0775   # maska sozdavaemih directoriy

#       Добавляем такие строки для антивирусного мониторинга

#       модулем samba-vscan

vfs object = vscan-clamav

vscan-clamav: config-file = /usr/local/etc/samba-vscan/vscan-clamav.conf

 

После чего приводим конфиг vscan к такому виду:

# cat /usr/local/etc/samba-vscan/vscan-clamav.conf

 

[samba-vscan]

max file size = 0

; После отладки необходимо поставить данную строчку в «no»

verbose file logging = yes

scan on open = yes

scan on close = yes

deny access on error = yes

deny access on minor error = yes

send warning message = yes

infected file action = quarantine

quarantine directory  = /tmp/clamsamba/

; не забыть создать эту папку и сделать ее владельцем юзера clamav:clamav

; и расшарить на запись всем юзерам (#chmod 777 /tmp/clamsamba)!!!

; ибо файлы, помещаемые в эту папку, принадлежат разным юзерам, юзающим самбу.

; в противном случае в карантин ничего не пишется.

; prefix for files in quarantine

quarantine prefix = virus-

max lru files entries = 100

lru file entry lifetime = 5

exclude file types =

exclude file regexp =

clamd socket name = /var/run/clamav/clamd

libclamav max files in archive = 1000

libclamav max archived file size = 10485760

libclamav max recursion level = 5

 

Теперь обеспечим автозапуск демона samba-vscan, внеся необходимые правки в файл /etc/rc.conf

# Стартуем антивирус Clamav и почтовый демон ClamSMTP

# Вместе с автообновлением баз

clamav_clamd_enable="YES"

clamav_freshclam_enable="YES"

clamsmtpd_enable="YES"

Здесь у меня запускается сам демон clamav, проверка почты и обновление антивирусных баз.

 

Все, осталось перезапустить самбу:

# /usr/local/etc/samba restart

Дальше проверяем работу демона. Подключаемся к шаре my_share и пытаемся скопировать в нее файл с вирусом. В результате получаем предупреждающее сообщение. Файл не скопировался. Что и следовало ожидать. Зато он благополучно оказался в карантине — папке /tmp/clamsamba/

Все, можно отдавать шару в пользование и начинать собирать в карантине базу вирусов.

 

Антивирус ClamAV: установка и настройка

Руководствовался вот этоими двумя статьями:http://pcbsd.su/docs/clamavhttp://ben.org.ua/manual/unix/freebsd_server/mail/turbo/postfix/postfix_2.htm#clamav
Привожу практически целиком с небольшими изменениями.

Ставим из портов:# cd /usr/ports/security/clamav # make install clean # rehash
Программа будет находиться в: /usr/local/bin/, а файлы настройки в: /usr/local/etc/ Антивирус установлен.
Настройка:
Открываем файл /usr/local/etc/clamd.conf (с привилегиями root'a) в текстовом редакторе, убираем строчку: «Example». То же самое делаем и в файле /usr/local/etc/freshclam.conf
Теперь антивирус будет обновляться командой # freshclam. Запуск антивируса: # clamscan / -ri. О дополнительных опциях всегда можно узнать выполнив команду: # clamscan -h.
Как было подсказано на сайтах, можно сделать автоматическое обновление антивируса. Для этого в файл /etc/crontab добавляются строка: 1 * * * * /usr/local/bin/freshclam -quiet. Теперь антивирус будет при таких параметрах обновляться каждую первую минуту каждого часа. Параметры обновления всегда можно поправить, настроить под себя. ИМХО, не вижу смысла обновлять чаще раза в неделю...

Чтобы антивырь запускался при старте системы вносим следующие поправки в файл /etc/rc.conf:
# echo 'clamav_clamd_enable="YES"' >> /etc/rc.conf
# echo 'clamav_freshclam_enable="YES"' >> /etc/rc.conf clamd — непосредственно сам антивирус
freshclam — программа, которая обновляет антивирусные базы данных
Настройка: #
# /usr/local/etc/clamd.conf
#

# Указываем где у нас будет расположен лог файл.
LogFile /var/log/clamav/clamd.log

# Максимальный размер лог файла
LogFileMaxSize 2M

# Отображать время возле каждого события в лог файле
LogTime yes

# Включает информативность в логе. На время отладки лучше включить.
# После настройки можно выключить, чтобы не засорялся лог файл.
LogVerbose yes

# Указываем где у нас будет расположен pid файл.
PidFile /var/run/clamav/clamd.pid

# Путь к временной директории зависит от системы.
# Как правило /tmp или /var/tmp
TemporaryDirectory /tmp

# Путь к директории с антивирусной базой данных
DatabaseDirectory /var/db/clamav

# Путь к локальному сокету, который слушает демон clamd
LocalSocket /var/run/clamav/clamd

# Удалять stale сокет после некорректного завершения.
FixStaleSocket yes

# Maximum length the queue of pending connections may grow to.
# Максимальная длина очереди соединений
MaxConnectionQueueLength 30

# Закрыть соединения, если размер данных превысил допустимое значение.
# Данное значение должно соответсвовать максимальному размеру письма
# вашего MTA. В postfix данный параметр задается с помощью message_size_limit
# StreamMaxLength 10M

# Время ожидания данных от сокета клиента. Задается в секундах.
# ReadTimeout 300

# Время ожидания нового задания
# IdleTimeout 60

# Максимальный уровень вложенности директорий при сканировании
# MaxDirectoryRecursion 20

# Следовать симлинкам директорий
# FollowDirectorySymlinks

# Следовать симлинкам файлов
# FollowFileSymlinks

# Через какой период времени производить внутренюю проверку на целостность
# SelfCheck 600

# От какого пользователя будет запущен clamd
User clamav

# Остановить демон, когда libclamav сообщает о нехватке памяти
ExitOnOOM yes

# Сканировать PE (Portable Executable) — это формат исполняемых файлов,
# использующийся на всех 32 битных версиях ОС Windows. Включение этой
# опции позволяет производить более глубокий аналих исполняемых файлов.
ScanPE yes

# Clamav будет пытаться определить поврежденные выполняемые файлы.
DetectBrokenExecutables yes

# Сканировать документы Microsoft Office на наличие макросов
ScanOLE2 yes

# Включить внутренний сканер e-mail
ScanMail yes

# Производить HTML нормализацию и анализ кода MS Script Encoder.
ScanHTML yes

# Сканировать архивы и сжатые файлы
ScanArchive yes

# Файлы в архивах больше этого размера не будут сканироваться
# ArchiveMaxFileSize 15M

# Вложенные архивы сканируются рекурсивно.
# Эта опция задает сколько
# уровеней вложенности необходимо сканировать
# ArchiveMaxRecursion 9

# Максимальное количество файлов сканируемых в архиве
# ArchiveMaxFiles 1500

# Если файл в архиве сжат больше,
# чем указано в ArchiveMaxCompressionRatio,
# то такой архив будет распознан как вирус.
# ArchiveMaxCompressionRatio 300

******************************************
Запускаем clamav
# /usr/local/etc/rc.d/clamav-clamd start
Starting clamav_clamd.
При этом в логах должно быть следующее:
# cat /var/log/clamav/clamd.log
+++ Started at Mon Jan 9 20:29:47 2006
clamd daemon 0.87.1 (OS: freebsd5.4, ARCH: i386, CPU: i386)
Log file size limited to 2097152 bytes.
Verbose logging activated.
Running as user clamav (UID 106, GID 106)
Reading databases from /var/db/clamav
Protecting against 40931 viruses.
Unix socket file /var/run/clamav/clamd
Setting connection queue length to 30
Listening daemon: PID: 16692
Archive: Archived file size limit set to 15728640 bytes.
Archive: Recursion level limit set to 9.
Archive: Files limit set to 1500.
Archive: Compression ratio limit set to 300.
Archive support enabled.
Archive: RAR support enabled.
Portable Executable support enabled.
Detection of broken executables enabled.
Mail files support enabled.
OLE2 support enabled.
HTML support enabled.
Self checking every 600 seconds.
Настраиваем freshclam
#
# /usr/local/etc/freshclam.conf
#

# Путь к директории с антивирусной базой данных. Здесь необходимо
# указывать точно такой же путь как и в файле clamd.conf
DatabaseDirectory /var/db/clamav

# Указываем где у нас будет расположен лог файл.
UpdateLogFile /var/log/clamav/freshclam.log

# Включает информативность в логе (после отладки лучше отключить)
LogVerbose yes

# Указываем где у нас будет расположен pid файл.
PidFile /var/run/clamav/freshclam.pid

# Владелец антивирусной база данных
DatabaseOwner clamav

# Зеркало откуда будем обновлять нашу БД
DatabaseMirror db.ua.clamav.net

# Количество попыток подключения к зеркалу
MaxAttempts 5

# Количество обновлений в день. 24 — производить обновление каждый час.
Checks 24

# Послать команду RELOAD (перезагрузка) демону clamd.
# NotifyClamd
Это перевод основных настроек в конфиге. У себя я все оставил по умолчанию, только разрешил на время настройки LogVerbose

Запускаем freshclam

# /usr/local/etc/rc.d/clamav-freshclam start
Starting clamav_freshclam
*******************************************************************
********************************************************************

Примеры работы с антивирусом:

Проверим архив MAX.RAR
# clamscan MAX.RAR
# MAX.RAR: Eicar-Test-Signature FOUND

Проверим папку ~/temp/folder/with/viruses рекурсивно:
# clamscan ~/temp/folder/with/viruses/*.*
или же так:
# cd ~/temp/folder/with/viruses/*.*
# clamscan

Некоторые примеры в использовании ClamAV.

Перемещение инфицированых файлов.

Для этого ClamAV необходимо запустить с параметром: --move=/path_with_infected_files
# clamscan --move=/home/admin/temp/infected
/usr/home/admin/temp/folder/with/viruses/virus: Eicar-Test-Signature FOUND
/usr/home/admin/temp/folder/with/viruses/virus:
moved to '/home/admin/temp/infected//virus'
Удаление инфицированых файлов.
Для этого ClamAV необходимо запустить с параметром: --remove
# clamscan -remove
/usr/home/admin/temp/folder/with/viruses/virus:
Eicar-Test-Signature FOUND
/usr/home/admin/temp/folder/with/viruses/virus:
removed

Также хотелось бы использовать антивирус и для проверки почты.
Настройка KMail, входящего в состав Kontact. Тут всё тривиально просто.
В строке меню KMail нажимаем на «Сервис»->"Мастер антивируса...".
KMail автоматически определит установленый антивирус, и покажет его нам.
Жмакаем на Вперёд.
Отмечаем что нам надо делать с инфицироваными письмами, нажимаем на «Готово».
Вот и всё.

Как интегрировать ClamAV в Mozilla Thunderbird я пока не нашел.
А как сделать хорошую почтовую систему
с антивирусной проверкой и фильтрованием спама
очень подробно написано в этой статье:
http://ben.org.ua/manual/unix/freebsd_server/mail/turbo/postfix/postfix_1.htm#clamav

Понравилась статья, расскажи о ней друзьям, нажми кнопку!