include(macroses.m4)dnl
/*
 * -----------------------------------------------------------
 *
 *   Dr.Web(R) Samba VFS SpIDer
 *
 * -----------------------------------------------------------
 */

1. Требования
2. О программе
3. Установка и удаление модуля Dr.Web Samba SpIDer
4. Подключение модуля Dr.Web Samba SpIDer
5. Запуск
6. Настройка
7. Контакты

           1. Требования

- запущенный Dr.Web Daemon (Демон) версии не ниже 4.44;
- подключаемый модуль Dr.Web Samba SpIDer;
- Samba версии 3.0.x или выше.

           2. О программе

Проблема защиты файловых серверов в UNIX-подобных операционных
системах (далее - UNIX системах) заключается в проверке их содержимого
на наличие вирусов и в обезвреживании вирусов, если таковые будут
обнаружены. При этом вирусы могут быть (и в большинстве случаев являются)
отнюдь не специфичными для UNIX систем. Через локальные сети распространяются
обычные Windows-вирусы, в том числе и макровирусы для Word, Excel и других
офисных приложений.

Проверка осуществляется при записи файлов с рабочих станций на сервер или
при открытии рабочими станциями файлов на сервере, т.е. в момент выполнения
сервером запроса рабочей станции на файловую операцию.

Модуль Dr.Web Samba VFS SpIDer используется как монитор файловых операций
для файлового сервера Samba. Он реализован как подключаемый модуль для
интерфейса VFS (Virtual File System) в Samba. Одновременно он является клиентом
Dr.Web Daemon.

           3. Установка и удаление модуля Dr.Web Samba SpIDer

Dr.Web Samba SpIDer поставляется в виде двух пакетов:
- drweb-smbspider: пакет содержит скомпилированные библиотеки для различных
версий серверов Samba.
- drweb-smbspider-src: пакет содержит исходные коды - чтобы пользователь сам
смог собрать необходимые библиотеки с учетом особенностей архитектуры своей
системы и/или для своей версии Samba.

Основной этап установки - запуск скрипта update-links.sh из директории
/opt/drweb/doc/samba/ по умолчанию, который проверяет, какая версия Samba
установлена в системе, и в директории /usr/lib/samba/vfs/ создаёт
символическую ссылку на библиотеку в директории /opt/drweb/lib/,
нужную для этой конкретной версии Samba.

Пожалуйста, обратите внимание, что если в один и тот же каталог были
установлены две разных версии Samba, то символическа ссылка будет создана
только для одной из них. Если разные версии Samba установлены в разные
каталоги, то для каждой из них будет создана соответствующая символическая
ссылка. При этом в отчет будут выведены следующие строки для каждой установленной
версии Samba:

--- cut ---
Update links for /usr/sbin/smbd
create symlink /opt/drweb/lib/libsmb_spider.so.3.X.X -->
/usr/lib/samba/vfs/smb_spider.so
Please, update your config /etc/samba/smb.conf
--- cut ---

Основным этапом удаления, соответственно, является запуск скрипта
update-links.sh с параметром --remove, который удаляет символическую ссылку
usr/lib/samba/vfs/smb_spider.so.

Пожалуйста, обратите внимание, что при наличии нескольких символических
ссылок для разных версий Samba, будут удалены все ссылки. При этом в отчет
будут выведены следующие строки:

--- cut ---
Remove link /usr/lib/samba/vfs/smb_spider.so
Please, update your config /etc/samba/smb.conf
--- cut ---

           4. Подключение модуля Dr.Web Samba SpIDer

К конфигурационному файлу Samba (/etc/samba/smb.conf по умолчанию)
необходимо добавить раздел, пример которого приведен ниже, и отредактировать
его в соответствии с используемыми путями.

   --- cut ---
   [drweb_audit]
      comment = Dr.Web protected directory
      path = /каталог/который/нужно/защитить/
      vfs objects = smb_spider
      writeable = yes
      browseable = yes
      guest ok = yes
      public = yes
   --- cut ---
После этого необходимо перезапустить файловый сервер Samba.

          5. Запуск

Монитор Dr.Web Samba SpIDer активизируется, когда какой-нибудь из клиентов
пытается открыть ресурс общего доступа на сервере. При его инициализации
производятся следующие действия:

- проверяется версия интерфейса Dr.Web Samba SpIDer и сервера Samba;
- Dr.Web Samba SpIDer читает файл конфигурации (/etc/drweb/smb_spider.conf 
по умолчанию);
- Dr.Web Samba SpIDer отслеживает файловые операции, производимые клиентами.

На первом и втором этапах Dr.Web Samba SpIDer выводит информацию в системный
журнал (syslog). По умолчанию используются следующие значения параметров,
управляющих работой системного сервиса syslogd:

SyslogFacility = Daemon
SyslogPriority = Info

Рекомендуемым порядком запуска взаимодействующих элементов является следующий:

- Dr.Web Daemon;
- Dr.Web Samba VFS SpIDer.

Пожалуйста, обратите внимание, что если Демон запущен с правами, которые не
обеспечивают ему доступ на чтение (для поиска вирусов) и на запись (для
удаления, лечения и т.д.) к файлам на разделяемом ресурсе, то он по умолчанию
будет работать в режиме нелокального сканирования и получать нужные ему
файлы через сокет. Это, в свою очередь, значительно снизит скорость работы.

Соответственно, для обеспечения оптимальной продуктивности рекомендуется
обратить особое внимание на настройку прав доступа Демона к ресурсам.

          6. Настройка

Можно запустить Dr.Web Samba VFS SpIDer с настройками по умолчанию, но
лучше настроить его для соответствия необходимым требованиям и условиям
эксплуатации. Конфигурационный файл smb-spider.conf по умолчанию читается
из директории /etc/drweb/. Для использования другого конфигурационного файла
полный путь к нему необходимо указать в конфигурационном файле smb.conf,
добавив туда следующую строку:
	
smb_spider: config = /my/new/path/smb_spider.conf

	Address = {FAMILY : ADDRESS}
Список адресов сокетов для связи с Демоном Dr.Web. Адреса в списке
разделяются запятыми и задаются в специальном формате.
FAMILY может принимать одно из следующих значений:
inet - используется TCP-сокет, тогда ADDRESS - это PORT@HOST;
local - используется UNIX сокет, тогда ADDRESS - это SOCKETFILE;
pid - адрес Демона берется из его pid-файла, тогда ADDRESS - это PIDFILE.
	Значение по умолчанию:
			Address = pid:/var/drweb/run/drwebd.pid

	Cache = {Yes | No}
Позволяет хранить в памяти IP-адрес хоста, на котором работает Демон.
В противном случае IP-адрес хоста будет запрашиваться каждый раз при
возникновении необходимости проверить тот или иной файл на вирусы.
Этот параметр используется только в случае, когда связь с Демоном
осуществляется через TCP-сокеты.
	Значение по умолчанию:
			Cache = Yes

	Timeout = {значение в секундах}
Время, отведенное для сканирования одного файла. Если значение этого
параметра равно 0, то время сканирования не ограничено.
	Значение по умолчанию:
			Timeout = 120

	UseTcpNodelay = {Yes | No}
Возможность использовать опцию TCP_NODELAY для настройки работы TCP-сокета,
по которому осуществляется связь с Демоном. Этот параметр используется только
в случае каких-либо проблем с устойчивостью сетевого соединения.
	Значение по умолчанию:
			UseTcpNodelay = No

	HeuristicAnalysis = {Off | On}
Включение использования эвристического анализатора. Эвристический анализ
делает возможным обнаружение неизвестных вирусов по априорным
соображениям об устройстве вирусного кода. Особенностью этого типа поиска
вирусов является вероятностный характер обнаружения заражения, что позволяет
говорить не о зараженных, а о подозрительных объектах. При отключении этого
режима осуществляется только поиск известных вирусов по вирусным базам
Dr.Web . Целый класс программ ввиду использования сходного с вирусами кода
может вызывать ложные срабатывания эвристического анализатора. Кроме того,
данный режим может незначительно увеличить время проверки. Данные
обстоятельства могут быть доводами в пользу отключения эвристического
анализа. Вместе с тем, включение этого типа анализа увеличивает надежность
антивирусной защиты. Все файлы, обнаруженные эвристическим анализатором,
лучше всего отправить разработчикам через сайт http://vms.drweb.com/sendvirus/
(предпочтительнее) или по электронной почте на адрес newvirus@drweb.com.
Отправку подозрительных файлов рекомендуется производить следующим
образом: запаковать файл в архив с паролем, пароль сообщить в теле письма,
при этом желательно приложить отчет Сканера.
	Значение по умолчанию:
			HeuristicAnalysis = On

	StripPath = {значение}
Позволяет удалить заданное количество сегментов из начала пути для
сканирования. Если задано значение 0, то используется полный путь.
При значении, равном 1, из пути убирается сегмент до первого разделителя
пути - символа "/" (слеш) - включительно.  При значении, равном 2, из пути
убирается сегмент до второго разделителя пути включительно.
Пример:
Допустим, в качестве пути для сканирования задан
	path = /некий/путь/к/file.ext
Тогда при StripPath = 1 путь примет следующий вид:
	 path = некий/путь/к/file.ext
Соответственно, при StripPath = 2 путь примет вид:
	 path = путь/к/file.ext.
	Значение по умолчанию:
			StripPath = 0

	PrefixPath = {Путь к файлу}
Задает сегмент пути, который добавляется к началу пути для сканирования,
после того как этот путь был обработан параметром StripPath. Пожалуйста,
обратите внимание, что значение данного параметра не должно оканчиваться
символом "/" (слеш). Необходимый разделитель пути будет добавлен программой
автоматически.
Пример:
Допустим, в качестве пути для сканирования задан
	path = /некий/путь/к/file.ext
Он был обработан параметром  StripPath со значением 2 и принял вид:
	path = путь/к/file.ext
Тогда после автоматической подстановки разделителя пути "/" и обработки
параметром PrefixPath = /совсем/другой, путь примет следующий вид:
	 path = /совсем/другой/путь/к/file.ext
	Значение по умолчанию:
			PrefixPath =

	MaxFileSizeToScan = {размер в Кбайтах}
Устанавливает максимальный размер файла для сканирования. При значении 0
сканироваться будут файлы любого размера.
	Значение по умолчанию:
			MaxFileSizeToScan = 0

ScanMode = {onWrite | onRead | onAccess}
Возможны следующие значения данного параметра:
- onAccess - файлы будут сканироваться при попытке открытия или запуска и при
закрытии (после создания или изменения).
- onRead - файлы будут сканироваться только при попытке открытия или запуска.
Этот путь позволяет увеличить скорость работы системы за счёт снижения уровня
антивирусной защиты (поскольку инфицированный файл может быть скопирован
в каталог общего доступа и запущен пользователем, который имеет локальный
доступ к данному каталогу, т.е. в обход Samba-сервера).
- onWrite - файлы будут сканироваться при закрытии после создания или
изменения. Этот путь позволяет ещё сильнее увеличить скорость работы системы,
но при этом уровень защиты снижается из-за того, что пользователь, имеющий
локальный доступ к общему каталогу, может скопировать туда зараженный файл
в обход Samba-сервера.
	Значение по умолчанию:
			ScanMode = onAccess

	RewriteDataBase = {Yes | No}
При значении Yes данного параметра базы заблокированных (инфицированных)
и разрешённых (чистых) файлов перезаписываются, как только к директории
общего доступа обращается новый пользователь.
	Значение по умолчанию:
			RewriteDataBase = Yes

	BlockedCacheSize = {размер в байтах}
Устанавливает размер базы заблокированных (инфицированных) файлов. При
значении параметра равном 0, база заблокированных файлов не создаётся.
При значении, отличном от нуля, в базу записываются md5 хеши уже проверенных
Демоном и признанных инфицированными файлов. При последующих попытках
открытия этих файлов их md5 хеши сверяются с хранящимися в базе, и в случае
совпадения файл признаётся инфицированным без отсылки его Демону на
проверку.
	Значение по умолчанию:
			BlockedCacheSize = 4096

AllowedCacheSize = {размер в байтах}
Устанавливает размер базы разрешённых (чистых) файлов. При значении
параметра равном 0, база разрешённых файлов не создаётся. При значении,
отличном от нуля, в базу записываются md5 хеши уже проверенных Демоном
и признанных чистыми файлов. При последующих попытках открытия этих файлов
их md5 хеши сверяются с хранящимися в базе, и в случае совпадения файл
признаётся чистым без отсылки его Демону на проверку.
	Значение по умолчанию:
			AllowedCacheSize = 4096

	LocalScan = {Yes | No}
Режим локального сканирования, когда Демону передается только путь к файлу
для проверки. Соответственно, при LocalScan =  Yes Демон будет сканировать
файлы в локальном режиме.
	Значение по умолчанию:
			LocalScan = yes

Dr.Web Samba VFS SpIDer может самостоятельно совершать действия с файлами
в случае, когда Демону по какой-либо причине не хватило прав, либо если
используется режим нелокального сканирования.

	LicenseLimit = {reject | pass}
Действие, совершаемое с файлами, при проверке которых произошла ошибка
лицензии (например, когда срок действия лицензии истек). Допустимые значения
параметра: pass - разрешить доступ к файлу, reject - запретить доступ к файлу.
	Значение по умолчанию:
			LicenseLimit = reject

	Infected = {reject | quarantine | discard | rename | cure}
Задает реакцию на обнаружение файла, зараженного известным вирусом.
Допустимые значения параметра: cure - попытаться вылечить файл,
rename - переименовать файл и запретить к нему доступ, discard - удалить файл,
quarantine - переместить файл в карантин и запретить к нему доступ,
reject - запретить доступ к файлу. При переименовании файла используется
маска #??, когда первая буква расширения файла заменяется на символ <#>,
а остальные буквы сохраняются. Если файл не имел расширения, оно будет
состоять из одного символа <#>.
	Значение по умолчанию:
			Infected = quarantine

	Suspicious = {reject | quarantine | discard | rename | pass}
Задает реакцию на обнаружение подозрительного файла (возможно, зараженного
неизвестным вирусом). Допустимые значения параметра: pass - разрешить доступ
к файлу, rename - переименовать файл и запретить к нему доступ,
discard - удалить файл, quarantine - переместить файл в карантин и запретить
к нему доступ, reject - запретить доступ к файлу.
	Значение по умолчанию:
			Suspicious = quarantine

	Incurable = {reject | quarantine | discard | rename}
Задает реакцию на обнаружение файла, который заражен и не может быть
вылечен. Допустимые значения параметра: rename - переименовать файл
и запретить к нему доступ, discard - удалить файл, quarantine - переместить
файл в карантин и запретить к нему доступ, reject - запретить доступ к файлу.
	Значение по умолчанию:
			Incurable = quarantine

	Adware = {reject | quarantine | discard | rename | pass}
Задает реакцию на обнаружение программы для показа рекламы (adware).
Допустимые значения параметра: pass - разрешить доступ к файлу,
rename - переименовать файл и запретить к нему доступ, discard - удалить файл,
quarantine - переместить файл в карантин и запретить к нему доступ,
reject - запретить доступ к файлу.
	Значение по умолчанию:
			Adware = quarantine

	Dialers = {reject | quarantine | discard | rename | pass}
Задает реакцию на обнаружение программы автоматического дозвона. Допустимые
значения параметра: pass - разрешить доступ к файлу, rename - переименовать
файл и запретить к нему доступ, discard - удалить файл, quarantine - переместить
файл в карантин и запретить к нему доступ, reject - запретить доступ к файлу.
	Значение по умолчанию:
			Dialers = quarantine

	Jokes = {reject | quarantine | discard | rename | pass}
Задает реакцию на обнаружение программы-шутки, которая может пугать или
раздражать пользователя. Допустимые значения параметра: pass - разрешить
доступ к файлу, rename - переименовать файл и запретить к нему доступ,
discard - удалить файл, quarantine - переместить файл в карантин и запретить
к нему доступ, reject - запретить доступ к файлу.
	Значение по умолчанию:
			Jokes = quarantine

	Riskware = {reject | quarantine | discard | rename | pass}
Задает реакцию на обнаружение потенциально опасной программы, которая может
быть использована не только ее владельцем, но и злоумышленниками. Допустимые
значения параметра: pass - разрешить доступ к файлу, rename - переименовать
файл и запретить к нему доступ, discard - удалить файл, quarantine - переместить
файл в карантин и запретить к нему доступ, reject - запретить доступ к файлу.
	Значение по умолчанию:
			Riskware = quarantine

	Hacktools = {reject | quarantine | discard | rename | pass}
Задает реакцию на обнаружение программы, которая используется для взлома
компьютеров. Допустимые значения параметра: pass - разрешить доступ к файлу,
rename - переименовать файл и запретить к нему доступ, discard - удалить файл,
quarantine - переместить файл в карантин и запретить к нему доступ,
reject - запретить доступ к файлу.
	Значение по умолчанию:
			Hacktools = quarantine

	Archives = {reject | quarantine | discard | rename}
Задает реакцию на обнаружение архива, содержащего заражённые файлы. Для
того, чтобы получить возможность удалять эти архивы, необходимо указать
значение Yes для параметра EnableDeleteArchiveAction в главном конфигурационном
файле drweb32.ini.  Допустимые значения параметра: rename - переименовать
архив и запретить к нему доступ, discard - удалить архив, quarantine
- переместить архив в карантин и запретить к нему доступ, reject - запретить
доступ к архиву.
	Значение по умолчанию:
			Archives = quarantine

	SkipObject = {reject | pass}
Действие, совершаемое с файлами, которые не могут быть проверены Демоном
(защищенные паролем или испорченные архивы, символические ссылки, файлы
нестандартных форматов и т.п.). Допустимые значения параметра:
pass - разрешить доступ к файлу, reject - запретить доступ к файлу.
	Значение по умолчанию:
			SkipObject = pass

	ArchiveRestriction = {reject | pass}
Действие, совершаемое с архивами, которые не могут быть проверены Демоном
по причине превышения значений ряда параметров (степени сжатия, размера
запакованных объектов, степени вложенности), заданных в главном
конфигурационном файле. Допустимые значения параметра: pass - разрешить
доступ к файлу, reject - запретить доступ к файлу.
	Значение по умолчанию:
			ArchiveRestriction = pass

	ScanningErrors = {reject | pass}
Действие, совершаемое с файлами, вызывающими у Демона ошибки в процессе
проверки. Например, Демону может перестать хватать памяти или у него не
окажется нужных прав для дальнейшей работы. Допустимые значения параметра:
pass - разрешить доступ к файлу, reject - запретить доступ к файлу.
	Значение по умолчанию:
			ScanningErrors = reject

	ProcessingErrors = {reject | pass}
Действие, совершаемое с файлами, при проверке которых произошла ошибка
обработки (например, Samba SpIDer был неправильно настроен, либо истекло
время ожидания ответа от Демона). Допустимые значения параметра:
pass - разрешить доступ к файлу, reject - запретить доступ к файлу.
	Значение по умолчанию:
			ProcessingErrors = reject

	SendNotifyToUser = {Off | On}
Позволяет уведомлять пользователей, осуществляющих доступ к разделяемой
директории с Windows-машин, о найденом в запрашиваемом файле вирусе.
Уведомления рассылаются с помощью Windows Messenger (WinPopup). При
использовании UNIX-подобных операционных систем уведомления могут
рассылаться с помощью LinPopup (для Linux), если у пользователя настроена
служба получения сообщений.
	Значение по умолчанию:
			SendNotifyToUser = off

	SendNotifyToAdmin = {Off | On}
Позволяет уведомлять Администратора о событиях возникающих во время
сканирования (например, об обнаружении вируса). В случае использования
ОС Windows уведомления рассылаются с помощью Windows Messenger
(WinPopup). При использовании UNIX-подобных операционных систем
уведомления могут рассылаться с помощью LinPopup (для Linux), либо
отправляться на почту Администратору. Для того, чтобы подключить последнюю
возможность, необходимо в конфигурационный файл smb.conf добавить
следующую строку:

message command = /usr/bin/mail -s 'Messages from %f on %m' {address} < %s ;
 rm %s

где {address} - это адрес электронной почты Администратора.
	Значение по умолчанию:
			SendNotifyToAdmin = off

	AdminAddress = {Address}
IP-адрес компьютера Администратора.
	Значение по умолчанию:
			AdminAddress = "127.0.0.1"

	ShellScriptForBlockedFile = {путь к файлу}
Путь к шелл-скрипту, который будет запускаться в ответ на блокировку файла.
Dr.Web Samba VFS SpIDer передает скрипту следующие параметры: FileName
- имя заражённого файла; UserName - имя под которым залогинился пользователь,
который пытается получить доступ к заблокированному файлу; UserHost - хост с
которого залогинился пользователь, который пытается получить доступ к
заблокированному файлу; DaemonReport - отчёт Демона.
	Значение по умолчанию:
			ShellScriptForBlockedFile = 

	Quarantine = {путь к директории}
Путь к директории карантина.
	Значение по умолчанию:
			Quarantine = /var/drweb/infected/

	QuarantineFilesMode = {права доступа}
Права доступа к файлам, находящимся в карантине.
	Значение по умолчанию:
			QuarantineFilesMode = 0660

	Level = {Debug | Verbose | Info | Alerts | Errors | Quiet}
Уровень подробности ведения файла отчета.
	Значение по умолчанию:
			Level = Info

	SyslogFacility = {Local7 | ... | Local0 | Daemon | Mail}
Тип записи при использовании системного сервиса syslogd.
	Значение по умолчанию:
			SyslogFacility = Daemon

	SyslogPriority = {Alert | Notice | Info | Debug}
Приоритет записи при использовании системного сервиса syslogd.
	Значение по умолчанию:
			SyslogPriority = Info

Dr.Web Samba VFS SpIDer может также получать необходимые настройки от
модуля Dr.Web Agent. Для подключения этой возможности в конфигурационном
файле smb.conf строку с путём к конфигурационному файлу smb_spider.conf
необходимо заменить на следующую:

	smb_spider: config = /var/drweb/ipc/.agent

           7. Контакты

Программа Dr.Web находится в постоянном развитии. Наиболее свежую
информацию о ее обновлениях можно получить на сайте:
  http://www.drweb.com.

Отдел продаж:
  http://buy.drweb.com
  e-mail: sales@drweb.com

Консультации пользователей осуществляются по следующим адресам:
  http://support.drweb.com
  e-mail: support@drweb.com

В письме желательно указать следующую дополнительную информацию, которая
поможет лучше разобраться в ситуации:

- полное название и версию дистрибутива Unix-системы;
- версию программы Dr.Web;
- версии приложений и фильтров, с которыми интегрируется Dr.Web Daemon;
- конфигурационные файлы: демона (drweb32.ini), smb_spider.conf;
- логи: демона и smb_spider (обычно, messages).
