Samba плюс Clamav. Антивирусная проверка расшаренных через Самбу папок
Задача: организовать антивирусный мониторинг папок, расшареных по самбе. Желательно выдавать предупреждение юзерам, о наличии зараженного файла и перемещать подозрительные файлы в карантин. Этим и займемся.За основу взята [urlspan]статья у Лиссяры:[/urlspan]
порт /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/
Все, можно отдавать шару в пользование и начинать собирать в карантине базу вирусов.
[urlspan]Антивирус ClamAV: установка и настройка[/urlspan]
Руководствовался вот этоими двумя статьями: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