
              Демон Dr.Web для FreeBSD (версия 4.32).
             Руководство системного администратора

             Copyright (c) 1992-2004, Игорь Данилов
     Антивирусная лаборатория И.Данилова, ЗАО "ДиалогНаука"

1. Что такое Dr.Web Daemon for FreeBSD ?
2. Настройка Dr.Web Daemon
  2.1 Установка дистрибутива Dr.Web Daemon.
  2.2 Настройка конфигурационного файла drweb32.ini.
3. О лицензионных ключах (ключевых файлах)
  3.1 О получении ключа
  3.2 Установка ключа
4. Запуск Dr.Web Daemon
5. Проверка работоспособности Dr.Web Daemon
6. Режимы проверки, реализуемые Dr.Web Daemon (локальное сканирование)
7. Контакты


                1. Что такое Dr.Web Daemon for FreeBSD ?

Dr.Web Daemon - это антивирусный демон, представляющий собой, по сути,
усовершествованный антивирусный сканер. В отличие от сканера, который при
каждом новом задании заново загружает базы и поисковый модуль, демон
загружает эти компоненты при старте и всегда находится в памяти, готовый к
выполнению очередного задания. Кроме того, демон может выполнять параллельно
несколько разных заданий, что обеспечивает в среднем более быстрый отклик. В
остальном Dr.Web Daemon обладает такими же возможностями, что и другие
продукты семейства Dr.Web:

- использует то же ядро и вирусную базу, что и все сканеры семейства;
- способен обнаруживать и лечить все известные вирусы;
- проверяет упакованные файлы и архивы.

Кроме того, в Dr.Web Daemon имеются возможности по фильтрации почты на
основе анализа заголовков.

То, что демон всегда готов к выполнению своих функций и имеет понятный и
доступный протокол для запросов сканирования, делает его подходящим
компонентом для создания антивирусных фильтров для почтовых систем и
файловых серверов. Разработчики Dr.Web предлагают готовые решения по
интеграции Dr.Web Daemon с почтовыми системами CommuniGate Pro, Courier-MTA,
Exim, Mobico MIO Server, Postfix, QMail, Sendmail, ZMailer, а также решение
по интеграции c файловыми серверами Samba. Однако это могут быть не
единственные, хотя на данный момент и основные, области применения Dr.Web
Daemon. 

Установка демона производится из пакета Dr.Web и описана в руководстве
по использованию сканера Dr.Web. Там же описана процедура обновления
программы и вирусных баз.


                2. Настройка Dr.Web Daemon


  2.1 Установка дистрибутива Dr.Web Daemon для FreeBSD.

Дистрибутив Doctor Web распространяется в двух форматах:

- в виде bsd пакета drweb-VER-freebsdX.tgz, ориентированного на
использование системы управления пакетами FreeBSD;

- в виде tarball-архива (drweb-VER-freebsdX.tar.gz), для ручной установки.

Для установки из пакета используйте следующую команду:

> pkg_add drweb-4.32-freebsd4.tgz

При установки из tarball-архива распакуйте архив, будет создан каталог
drweb-4.32-freebsdX внутри которого будет дерево каталогов, которое надо
перенести в корень диска (либо разложить, так как вы сами хотите, но тогда
вам необходимо отредактировать drweb32.ini. Пример:

> tar xzf drweb-4.32-freebsd4.tar.gz
> cp -a drweb-4.32-freebsd4/* /

Кроме этого, вы должны создать служебного пользователя drweb и потом
установить правильные права:

> chown -R drweb /usr/local/etc/drweb
> chown -R drweb /usr/local/drweb
> chown -R drweb /var/drweb


  2.2 Настройка конфигурационного файла drweb32.ini.

Конечно, вы можете запустить демона с настройками по умолчанию, но лучше
все же настроить его для соответствия вашим требованиям и условиям
эксплуатации. Файл drweb32.ini читается Dr.Web Daemon из каталога 
/usr/local/etc/drweb. Для использования другого файла конфигурации 
полный путь к нему необходимо указать ключом командной строки при запуске 
Dr.Web Daemon, например:

$ /usr/local/sbin/drwebd -ini=/usr/local/etc/drwebd.ini

Конфигурационный файл представляет из себя текстовый файл (что позволяет 
редактировать его вашим любимым редактором), построенный по следующему принципу:

--- начало файла ---
[Имя секции 1]
Параметр1 = значение1, ..., значениеK
.....
ПараметрM = значение1, ..., значениеK

.....

[Имя секции X]
Параметр1 = значение1, ..., значениеK
.....
ПараметрY = значение1, ..., значениеK
--- конец файла ---

Если строка начинается с символов ";" или "#", то это означает,
что эта строка закомментирована (содержит комментарии) - такие строки
пропускаются Dr.Web Daemon при чтении параметров из ini-файла. 

Крайне важно отметить, что если какой-то параметр Dr.Web Daemon не задан, 
то это не означает, что у параметра нет значения, - оно будет взято по 
умолчанию (частая ошибка при настройке). Лишь некоторые параметры 
являются необязательными или не имеют значений по умолчанию, о чем 
будет специально сказано. Значения могут быть заключены в кавычки (и
должны быть заключены в кавычки, если содержат пробелы). Некоторые
параметры могут иметь несколько значений, разделителем является ","
(запятая), при описании параметра это будет сказано явно. Если в поле
значения параметра в данном описании значения заключены в {}, то параметр
может принимать только одно из этих значений. 

Имя секции настроек для сканера - [Scanner], демона - [Daemon].

Параметры будут описываться следующим образом:

ИмяПараметра = ПсевдоЗначениеПараметра
        Описание параметра
        {Может ли иметь несколько значений}
        Значение по умолчанию: 
                { значение | отсутствует }

Описание параметров в порядке из следования в файле конфигурации, идущим
в дистрибутиве:

EnginePath = { путь к файлу, обычное расширение - dll }
        Расположение модуля drweb32.dll (поисковый модуль). Этот параметр
        также используется модулем обновления для обновления поискового
        модуля.
        Значение по умолчанию:
                /usr/local/drweb/lib/drweb32.dll

VirusBase = { список путей (масок) к файлам, обычное расширение - vdb }
        Маски для подключаемых вирусных баз. Этот параметр также
        используется модулем обновления для обновления баз антивируса.
        Допустимо перечисление нескольких масок.
        Значение по умолчанию:
                /var/drweb/bases

Key = { путь к файлу, обычное расширение - key }
        Расположение файла с регистрационным ключом (лицензией).
        Значение по умолчанию:
                /usr/local/drweb/drweb32.key
                
UpdatePath = { каталог }
        Этот параметр используется модулем обновления программы (update.pl) 
        и при его использовании должен быть задан обязательно.
        Значение по умолчанию: нет


LngFileName = { путь к файлу языковых ресурсов, обычное расширение - dwl }
        Расположение файла локализации.
        Значение по умолчанию:
                отсутствует (все сообщения выводятся на английском)

TempPath = { каталог }
        Этот каталог используется антивирусным модулем (поисковым движком) 
        для создания временных файлов. При нормальной работе этот каталог 
        практически не используется, он используется, для распаковки 
        некоторых видов архивов или когда в системе не хватает памяти.
        Значение по умолчанию:
                отсутствует (используется /tmp)

MailAddressesList = { путь к файлу }
        Этот параметр, используется только в том случае, если у вас адресная 
        лицензия на 15 и 30 адресов.
        В этом файле должен быть задан список адресов (но не более количества
        заданного в лицензии), которые будут проверяться (и входящая и исходящая
        корреспонденция). Формат файла простой - один адрес на строке. Альясы 
        (любого вида) считаются отдельными адресами.
        Значение по умолчанию:
                отсутствует

TrafficEqualPerHour = { Yes | No }
        Этот параметр используется только если вы приобрели трафиковую
        лицензию. 
        Несмотря на то что в лицензии указано ограничение на количество
        проверяемых сообщений в сутки, вы обязаны преобразовать ограничение
        к количеству сообщений в час. Сделать это можно двумя способами:
         1. Разделить суточное ограничение равномерно, тогда укажите Yes в
            качестве значения и тогда следующий параметр (TrafficPerHour) вам 
            не нужен.
         2. Можете задать собственный график расходования суточного ограничения.
            Для этого в качестве значения укажите No, и переходите к следующему
            параметру (TrafficPerHour)
        Значение по умолчанию:
                Yes

TrafficPerHour = { список из 24 целых чисел, разделенный запятой }
        Этот параметр используется только если вы приобрели трафиковую
        лицензию и предыдущий параметр (TrafficEqualPerHour) равен No.
        Каждое число в списке трактуется как ограничение для соответствующего часа
        (начиная с 0 и заканчивая 23). Сумма чисел должна быть не больше, чем
        число указанное в вашей лицензии.

OutputMode = { Terminal | Quiet }
        Режим вывода информации при старте: (Terminal) на консоль, (Quiet) отменяет вывод.
        Значение по умолчанию: 
                Terminal
        
RunForeground = { Yes | No }
        Значение параметра Yes запрещает Dr.Web Daemon переходить в режим 
        демона, т.е. становиться фоновым процессом без управляющего терминала. 
        Эта возможность может быть использована некоторыми средствами 
        мониторинга (например daemontools).
        Значение по умолчанию: 
                No

User = { имя пользователя }
        Пользователь, с привилегиями которого работает демон. Рекомендуется
        завести в системе специального пользователя drweb, который потом и
        будет использоваться демоном и некоторыми фильтрами. Использовать
        Dr.Web Daemon с привилегиями root нежелательно, хотя требует
        значительно меньше настройки (особенно в случае с Samba-серверами).
        ВНИМАНИЕ: Значение этого параметра не изменяется во время процедуры
        перечитывания конфигурации "на лету" (обработки сигнала SIGHUP).
        Значение по умолчанию:
                отсутствует (что означает, что демон будет использовать
                привилегии того пользователя, которым был запущен)

UserID = { числовой ID }
GroupID = { числовой ID }
        ID группы и пользователя, с чьими привилегиями будет работать
        демон. Параметры игнорируются, если задан параметр User.
        ВНИМАНИЕ: Значение этих параметров не изменяется во время процедуры
        перечитывания конфигурации "на лету" (обработки сигнала SIGHUP).
        Значение по умолчанию: 
                отсутствует

PidFile = { путь к файлу }
        Имя файла, в который при старте демона будет записана информация о
        его PID и о Unix-сокете (если параметр Socket задает использование Unix 
        сокета) или номер порта (если Socket задает использование TCP сокета). 
        Если задано более одного параметра Socket, то в данном файле будет 
        присутствовать информация обо всех заданных сокетах (по одному в строке).
        Значение по умолчанию:
                /var/drweb/drwebd.pid

BusyFile = { путь к файлу }
        Имя файла занятости демона: создается сканирующей "копией" демона
        при получении команды и уничтожается после передачи результата ее
        выполнения. Имя файла, создаваемого каждой "копией" демона,
        дополняется точкой и ASCIIZ представлением PID (например,
        /var/run/drwebd.bsy.123456).
        Значение по умолчанию: 
                отсутствует (файл не создается)

MaxChildren = { число }
	Устанавливает значение для максимального количества создаваемых
	дочерних сканирующих процессов. Основной процесс не занимается
        сканированием, соответственно максимальное количество процессов
        демона в системе будет на один больше. Рекомендуемое значение
        - от 3 до 16 процессов на процессор.
	Значение по умолчанию: 
                16        

PreFork = { Yes | No }
	Устанавливает тип создания дочерних процессов.
	Если параметр имеет значение "No", то в этом случае новый дочерний 
        процесс порождается для каждого сканируемого объекта. Если параметр 
        имеет значение "Yes", то в этом	случае Dr.Web Daemon создаст 
        количество дочерних процессов равное значению параметра MaxChildren 
        сразу же после старта.
        PreFork режим обладает более высокой произодительностью, но требует
        больше памяти (т.к. дочерние процессы загружены всегда).
        ВНИМАНИЕ: Значение этого параметра не изменяется во время процедуры
        перечитывания конфигурации "на лету" (обработки сигнала SIGHUP).
        Значение по умолчанию: 
                No

FileTimeout = { значение в секундах }
        Максимальное время проверки одного файла.
        Значение по умолчанию: 
                30

StopOnFirstInfected = { Yes | No }
        Прекращать ли проверку письма после первого обнаруженного
        вируса. Установка значения Yes может резко сократить нагрузку 
        на почтовый сервер и время проверки писем.
        Значение по умолчанию: 
                No

ScanPriority = { значение }
        Приоритет сканирующих процессов демона. Значение параметра должно
        быть в диапазоне от -20 (высший приоритет) до 20 (низший приоритет)
        Значение по умолчанию: 
                0

FilesTypes = { список расширений }
        Типы файлов, которые будут проверяться при сканировании по типу,
        т.е. параметр ScanFiles имеет значение ByType. Допускаются символы
        "*" и "?". 
        Значение по умолчанию:
                EXE,COM,SYS,OV?,BAT,BIN,DRV,PRG,BOO,SCR,CMD,VXD,386,DLL,FON,DO?
                XL?,WIZ,RTF,CL*,HT*,VB*,JS*,INF,AR?,ZIP,R??,PP?,OBJ,LIB,HLP,MD?
                INI,MBR,IMG,CSC,CPL,MBP,SHS,SHB,PIF,SO,CHM,REG,XML,PRC,ASP,LSP
                MSO,OBD,THE*,NWS,SWF,BMP,MPP,OCX,DVB,CPY,MSG,EML

ScanFiles = { All | ByType | ByFormat }
        Файлы, которые необходимо проверять при извлечении из архивов. При
        задании ByType учитываются так называемые расширения файлов (т.е.
        самый последний суффикс после "." в имени файла; если "."
        отсутствует, у файла отсутствует расширение), значения которых
        заданы или по умолчанию, или в параметре (параметрах) FilesTypes. При
        задании ByFormat проверяются только файлы, включенные в проверяемое
        множество, выявляется, могут ли они быть переносчиками вирусов,
        т.е. исполняемыми файлами (имя и расширение файла во внимание не
        принимаются), и после этого только для файлов, являющихся
        предположительно исполняемыми, будет выполнено антивирусное
        сканирование. Важно замечание: внутри почтовых файлов всегда
        действует режим All. Значения ByType и ByFormat могут быть
        использованы только в режимах "локального" сканирования. 
        Значение по умолчанию: 
                All

CheckPackedFiles = { Yes | No }
        Производить ли распаковку исполняемых файлов, упакованных утилитами
        DIET, PKLITE и т. д.
        Значение по умолчанию: 
                Yes

CheckArchives =  { Yes | No }
        Производить ли распаковку архивов форматов ZIP (WinZip, InfoZIP...),
        RAR, ARJ, TAR, GZIP и CAB.
        Значение по умолчанию: 
                Yes

CheckEMailFiles = { Yes | No }
        Производить ли проверку файлов в почтовых (e-mail) форматах.
        Значение по умолчанию: 
                Yes

ExcludePaths = { список путей (маск) для исключения их проверки }
        Маски для файлов, которые не должны быть проверены демоном.
        Значение по умолчанию:
                отсутствует

FollowLinks = { Yes | No }
        Следовать ли символическим ссылкам при сканировании.
        Значение по умолчанию: 
                No

RenameFilesTo = { маска }
        Маска для переименования файлов, если для данного типа файлов
        задано действие Rename (только для сканера).
        Значение по умолчанию:
                "#??" (это означает, что первая буква "расширения" файла
                      будет заменена на "#", а две следующие буквы сохранены. 
                      Если файл не имел "расширения", то оно будет состоять 
                      из одного символа "#".)

MoveFilesTo = { каталог }
        Каталог для перемещения файлов. Этот параметр используется только
        при интеграции демона и on-access сторожа для Samba.
        Значение по умолчанию:
                /var/drweb/infected

BackupFilesTo = { path }
        Этот каталог используется для сохранения инфицированных
        файлов, которые были вылечены.
        Значение по умолчанию:
                отсутствует (т.е. копия не создается)

LogFileName = { имя файла }
        Имя файла отчета. Можно в качестве имени указать "syslog", при этом
        отчет будет вестись средствами системного сервиса syslogd. При
        использовании syslog обратите внимание на опции
        SyslogFacility и SyslogPriority. Т.к. syslog имеет несколько файлов
        для протоколирования разных событий и разных степеней их важности, то
        основываясь на этих двух параметрах и содержимом конфигурационного
        файла syslog (обычно /etc/syslogd.conf), можно определить, куда будет
        писаться отчет демона.
        Значение по умолчанию: 
                "syslog"

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

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

LimitLog = { Yes | No }
        Опция указывает надо ли ограничивать размер файла отчета.
        Значение по умолчанию: 
                "No" 

MaxLogSize = { Значение в Кб }
        Этот параметр задает максимальный размер файла отчета. Имеет
        смысл только если LimitLog = Yes.
        Значение по умолчанию: 
                512 
  
LogScanned = { Yes | No }
        Выводить ли в файл отчета информацию о всех проверяемых объектах
        независимо от того, обнаружены вирусы или нет.
        Значение по умолчанию: 
                No

LogInfected = { Yes | No }
        Выводить ли в файл отчета информацию об инфицированных объектах.
        Значение по умолчанию: 
                Yes

LogPacked = { Yes | No }
        Выводить ли в файл отчета дополнительную информацию о файлах,
        упакованных утилитами DIET, PKLITE и т. д.
        Значение по умолчанию: 
                Yes

LogArchived = { Yes | No }
        Выводить ли в файл отчета дополнительную информацию об архиваторах.
        Значение по умолчанию: Y
                Yes

LogTime = { Yes | No }
        Выводить ли в файл отчета время каждой записи. Параметр не имеет
        смысла, если в имени LogFileName указано "syslog".
        Значение по умолчанию: 
                Yes

LogProcessInfo = { Yes | No }
        Выводить ли в лог перед каждой записью данные об pid сканирующего процесса 
        и адрес фильтра (имя хоста или IP) с которого иницирована проверка.
        Значение по умолчанию: 
                Yes

RecodeNonprintable = { Yes | No }
        Режим вывода в лог файл символов, не являющихся отображаемыми
        для данного терминала.
        Значение по умолчанию: 
                Yes
        
RecodeMode = { Replace | QuotedPrintable }
        Если значение RecodeNonprintable равно "Yes", то задает метод 
        перекодирования неотображаемых символов. Если равно значению 
        "Replace", то все такие символы заменяются на RecodeChar.        
        Значение по умолчанию: 
                Replace

RecodeChar = { "?" | "_" | ... }
        Если значение RecodeMode равно "Replace", то задает символ, на который
        будут заменены все неотображаемые символы.
        Значение по умолчанию:
                "_"

Socket = { ПОРТ [интерфейсы] | ФАЙЛ [доступ] }
        Описание сокета, который будет использован для коммуникации с демоном.
        Первая форма описывает TCP-сокет: параметр "ПОРТ" - десятичный номер
        порта, "интерфейсы" - список имен интерфейсов или IP-адресов, на которых
        демон будет принимать запросы. 
        Пример: Socket = 3000 127.0.0.1, 192.168.0.100
        Вторая форма описывает unix-сокет, "ФАЙЛ" - имя сокета, "доступ" -
        восьмеричное значение прав доступа к нему. 
        Пример: Socket = /var/drweb/.drwebd 0660
        Количество ключей "Socket ..." не ограничено, демон будет работать
        со всеми из описанных сокетов. 
        Значение по умолчанию: 
                3000 127.0.0.1

SocketTimeout = { значение в секундах }
        Время, отведенное для приема/передачи всех данных через сокет
        (время сканирования файла не учитывается).
        Значение по умолчанию: 
                10

ListeningQueue = "значение"
        Задает размер очереди для сокетов. Значение может находиться
        в диапазонах от 0 до константы SOMAXCONN (ее значение зависит от
        операционной системы)
        Значение по умолчанию: 
                подставляется значение SOMAXCONN

Следующие параметры могут быть использованы для предотвращения атак типа 
"отказ в обслуживании" (DoS) на демона. Как правило для этого используются
различные архивы сделаные специальным образом - например, маленький файл 
заархивированый много раз (демон может долго проверять такой файл) или 
большой однородный файл заархивированный с большим коэффициентом сжатия 
(при разархивации может кончится память или место на диске). Если объект
подпадает под ограничения созданные этими параметрами, то к нему применяется
действие ArchiveRestriction, которое задано в файлах конфигурации различных
фильтров.

MaxCompressionRatio = { значение }
        Максимальный коэффициент сжатия, т.е. отношение длины файла в
        распакованном виде к длине файла в запакованном виде, файла внутри
        архива. Если коэффициент превышает это значение, файл извлечен не
        будет - а значит не будет проверен. 
        Значение по умолчанию:
                отсутствует (коэффициентом сжатия игнорируется)

CompressionCheckThreshold = { значение в Kb }
        Минимальный размер файла внутри архива, начиная с которого будет
        производиться проверка коэффициента сжатия (если это разрешено
        ключом MaxCompressionRatio). 
        Значение по умолчанию:
                отсутствует (проверка параметра не производится)

MaxFileSizeToExtract = { значение в Kb }
        Максимальный размер файла, извлекаемого из архива. Если размер
        файла внутри архива превышает это значение, он будет пропущен.
        Значение по умолчанию:
                отсутствует (извлекаются файлы любого размера)

MaxArchiveLevel = { value }
        Максимальный уровень вложенности архивов (когда архив вложен в
        архив, которые тоже вложен в архив и т.д.)
        Значение по умолчанию:
                отсутствует (извлекаются архивы любой вложенности)

Как уже отмечалось ранее, Dr.Web Daemon имеет встроенные возможности по
фильтрации почтовых сообщений на основе системы анализа заголовков почтовых
сообщений. Правила фильтрации так же задаются в drweb32.ini, проверка
правил осуществляется в порядке их задания, т.е. правило, заданное первым, и
будет проверено первым. Задание правил фильтрации НЕ означает
автоматического их применения. Чтобы включить анализ по заголовкам,
необходимо задать соответствующие опции в поставляемых фильтрах или указать
специальные флаги при использовании собственных решений на базе Dr.Web
Daemon. Поиск соответствия правилу осуществляется до первого подходящего
правила - возвращается действие, заданное для этого правила. 

ScanEncodedHeaders = { Yes | No }
        Обрабатывать ли заголовки письма до их раcкодирования. Например,
        значение Yes и правило "RejectCondition Subject = "iso-8859-5"
        позволит отфильтровать все письма, поле Subject которых в
        кодировке iso-8859-5. Важно понимать, что при значении Yes
        все закодированные заголовки будут просканированы дважды:
        до и после раcкодирования.
        Значение по умолчанию: 
                No

RejectCondition { набор правил }, AcceptCondition { набор правил }
        Описание набора правил фильтрации по заголовкам писем. Правила
        состоят из имени заголовка и регулярного выражения, описывающего
        значания данного поля. Несколько правил могут быть объединены при
        помощи круглых скобок и операций OR или AND.
        Пример:
        RejectCondition Subject = "money" AND "Content-Type" = "text/html"
        Специальные правила фильтрации включают в себя условия 
        "No ЗАГОЛОВОК" (обозначает отсутствие данного поля, например, по
        правилу "RejectCondition No From" будут отфильтрованы письма, не
        содержащие поля "From"), "ЗАГОЛОВОК = 8bit" (поле содержит
        8-битные символы).
        Значение по умолчанию:
                отсутствует

MissingHeader { список полей }
        Описывает набор полей заголовков, при отсутствии которых письмо 
        будет отфильтровано. Например: MissingHeader "To", "From".
        Значение по умолчанию:
                отсутствует

FilterParts = { Yes | No }
        Значение "Yes" разрешает обработку правил, заданных ключами 
        RejectPartCondition и AcceptPartCondition. 
        Значение по умолчанию: 
                No

RejectPartCondition { набор правил }, AcceptPartCondition { набор правил }
       Ключи, аналогичные RejectCondition и AcceptCondition, но 
       работающие с заголовками отдельных частей писем. В наборе
       правил для этих ключей можно применять условие FileName = "маска",
       где "маска" - регулярное выражение, соответствующее стандарту 
       POSIX 1003.2. Фильтрация писем по этим правилам разрешена только
       в том случае, когда ключ FilterParts имеет значение "Yes" (см. ниже)
        Значение по умолчанию:
                отсутствует


                3. О ключах (ключевых файлах)

          3.1 О получении ключа

Для работы антивируса Dr.Web для FreeBSD необходим лицензионный ключевой файл
(drweb32.key). Вы можете получить ключевой файл одним из следующих способов:

ПРИОБРЕСТИ У ОФИЦИАЛЬНЫХ ПАРТНЕРОВ КОМПАНИИ "ДОКТОР ВЕБ"
Вы можете приобрести лицензию на право использования антивируса Dr. Web 
у официальных партнеров компании "Доктор Веб". При покупке вы получите 
именную лицензию с ключевым файлом, либо регистрационный номер, 
позволяющий Вам зарегистрироваться на веб-сайте и получить ключевой файл 
самостоятельно.

Адреса партнеров вы можете узнать в партнерском разделе сайта компании 
"Доктор Веб" (http://partners.drweb.com/)

Условия приобретения вы можете узнать на сайте компании "Доктор Веб" в 
разделе "Купить" (http://buy.drweb.com/)

ЗАРЕГИСТРИРОВАТЬСЯ НА САЙТЕ КОМПАНИИ "ДОКТОР ВЕБ"
Если у вас есть приобретенный серийный номер, вы можете сгенерировать 
ключ в разделе регистрации программ на сайте компании "Доктор Веб" 
(http://buy.drweb.com/register/), заполнив  соответствующую форму. 
При заполнении формы вам будет необходимо указать регистрационный
серийный номер. Ключ будет немедленно выслан на указанный 
адрес электронной почты, Вы также сможете скачать его по предоставленной
ссылке непосредственно с сайта.
Будьте внимательны при вводе адреса электронной почты!

ДЕМОНСТРАЦИОННЫЙ КЛЮЧЕВОЙ ФАЙЛ
Для того, чтобы протестировать продукт перед приобретением, вы можете 
запросить тестовый ключ на странице (http://download.drweb.com/demo/) или 
у официальных партнеров компании "Доктор Веб".

          3.2 Установка ключа

После покупки лицензии или получения пробной (demo) лицензии на Dr.Web Daemon 
вы получите ключевой файл (обычно имеет название drweb32.key), который может 
быть различным для демона и для сканера. Соответственно необходимо изменить 
настройки параметра Key в drweb32.ini в секции [Daemon]. 

Например, "Key = /usr/local/drweb/drweb32.key".

Важное замечание - ключевой файл НЕ является текстовым и не подлежит
редактированию в любом виде, в том числе и автоматической конвертации,
производимой некоторыми программами. Часто приходится сталкиваться с
проблемой, когда ключевой файл был конвертирован не в меру интеллектуальной
почтовой программой из DOS формата (с концами строк вида CR LF (в
шестнадцатиричном виде 0D 0A) в UNIX формат (с концами строк вида LF (в
шестнадцатиричном виде 0A)).


                4. Запуск Dr.Web Daemon

В процессе загрузки демона осуществляются следующие действия:

- ищется и загружается конфигурационный файл; если файл не найден, то
загрузка Dr.Web Daemon прекращается. Путь к конфигурационному файлу может
быть задан в параметрах запуска с помощью ключа 
-ini={path/to/your/drweb32.ini} или использовано значение по умолчанию
(/etc/drweb/drweb32.ini). При загрузке проверяется допустимость некоторых
параметров, и, если значение параметра недопустимо, берется значение по
умолчанию;

- производится загрузка файла локализации, если он задан; если неудачно -
используются английские сообщения;

- создается лог-файл. Замечание: каталог с лог-файлом должен быть доступен
пользователю, с чьими привилегиями работает демон, на запись;

- производится загрузка ключевого файла по пути, указанному в drweb32.ini.
Если ключ не найден, то загрузка демона прекращается.

- если задан параметр User (или UserID), то демон пытается изменить свои
привилегии;

- производится загрузка поискового модуля (drweb32.dll). Если модуль не
найден (ошибки в конфигурационном файле) или поврежден, то загрузка
прекращается;

- после этого начинают загружаться базы с вирусными определениями, поиск
баз осуществляется по заданным в конфигурационном файле путям, порядок
загрузки баз не регламентирован. Если база повреждена или отсутствуют базы -
загрузка будет продолжена;

- демон "отвязывается" от терминала, поэтому сообщения о дальнейших
проблемах не могут быть выведены на терминал, и выводятся только в лог-файл;

- создается сокет. В случае TCP, возможно, даже не один; если какой-то из них
создать не удалось - загрузка все равно продолжается. В случае UNIX сокета:
убедитесь, что каталог, его содержащий, доступен пользователю, с чьими
привилегиями работает демон, на запись и чтение. Для пользователей, от
которых будут работать интеграционные модули, каталог должен быть доступен
на выполнение, а сам файл сокета - на запись и чтение;

- после этого создается так называемый pid-файл, в котором хранится
информация об идентификаторе процесса демона и о транспортных адресах, по
которым доступен демон. Еще один крайне важный момент: каталог с pid-файлом
должен быть доступен пользователю, с чьими привилегиями работает демон, на
запись, поэтому, если у вас определен параметр User, то обязательно
переопределите и параметр pid-файл, т.к. каталог по умолчанию /var/run не
доступен пользователям на запись. Если создать pid-файл не удалось, то
загрузка прекращается.


                5. Проверка работоспособности Dr.Web Daemon

Если в ходе загрузки не возникло проблем, то в итоге мы получаем готовый к
работе демон - т.е. заданное число всегда готовых к работе сканеров.
Проверить, создан ли сокет, можно, выдав команду netstat -a. В случае TCP
сокетов:

--- cut ---
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:3000          *:*                     LISTEN      
raw        0      0 *:icmp                  *:*                     7           
raw        0      0 *:tcp                   *:*                     7           
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  0      [ ACC ]     STREAM     LISTENING     384    /dev/gpmctl
unix  0      [ ]         STREAM     CONNECTED     190    @0000001b
unix  1      [ ]         STREAM     CONNECTED     1091   @00000031
unix  0      [ ACC ]     STREAM     LISTENING     403    /tmp/.font-unix/fs7100
unix  4      [ ]         DGRAM                    293    /dev/log
unix  1      [ ]         STREAM     CONNECTED     1092   /dev/gpmctl
unix  0      [ ]         DGRAM                    450    
unix  0      [ ]         DGRAM                    433    
unix  0      [ ]         DGRAM                    416    
unix  0      [ ]         DGRAM                    308    
--- cut ---

В случае Unix сокетов:

--- cut ---
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
raw        0      0 *:icmp                  *:*                     7           
raw        0      0 *:tcp                   *:*                     7           
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  0      [ ACC ]     STREAM     LISTENING     384    /dev/gpmctl
unix  0      [ ]         STREAM     CONNECTED     190    @0000001b
unix  1      [ ]         STREAM     CONNECTED     1091   @00000031
unix  0      [ ACC ]     STREAM     LISTENING     1127   /opt/drweb/run/drwebd.skt
unix  0      [ ACC ]     STREAM     LISTENING     403    /tmp/.font-unix/fs7100
unix  4      [ ]         DGRAM                    293    /dev/log
unix  1      [ ]         STREAM     CONNECTED     1092   /dev/gpmctl
unix  0      [ ]         DGRAM                    450   
unix  0      [ ]         DGRAM                    433   
unix  0      [ ]         DGRAM                    416   
unix  0      [ ]         DGRAM                    308    
--- cut ---

Если созданных сокетов не видно, значит, имеются проблемы загрузки.

Для проверки работоспособности Dr.Web Daemon можно использовать консольного
клиента для демона (drwebdc), запустив его для получения служебной
информации о демоне. Кстати если запустить drwebdc без параметров, то
он выдаст список всех поддерживаемых опций. 
Для TCP сокета:

$ drwebdc -nHOSTNAME -pPORTNUM -sv -sb

Для Unix сокета:

$ drwebdc -uSOCKETFILE -sv -sb

Должна появиться следующая информация:

--- cut ---
- Version: DrWeb Daemon 4.31
- Loaded bases:
Base /var/drweb/bases/drwtoday.vdb contains 191 records.
Base /var/drweb/bases/drw43120.vdb contains 339 records.
Base /var/drweb/bases/drw43119.vdb contains 279 records.
Base /var/drweb/bases/drw43118.vdb contains 229 records.
Base /var/drweb/bases/drw43117.vdb contains 240 records.
Base /var/drweb/bases/drw43116.vdb contains 207 records.
Base /var/drweb/bases/drw43115.vdb contains 219 records.
Base /var/drweb/bases/drw43114.vdb contains 285 records.
Base /var/drweb/bases/drw43113.vdb contains 358 records.
Base /var/drweb/bases/drw43112.vdb contains 257 records.
Base /var/drweb/bases/drw43111.vdb contains 234 records.
Base /var/drweb/bases/drw43110.vdb contains 353 records.
Base /var/drweb/bases/drw43109.vdb contains 285 records.
Base /var/drweb/bases/drw43108.vdb contains 263 records.
Base /var/drweb/bases/drw43107.vdb contains 255 records.
Base /var/drweb/bases/drw43106.vdb contains 324 records.
Base /var/drweb/bases/drw43105.vdb contains 397 records.
Base /var/drweb/bases/drw43104.vdb contains 244 records.
Base /var/drweb/bases/drw43103.vdb contains 345 records.
Base /var/drweb/bases/drw43101.vdb contains 227 records.
Base /var/drweb/bases/drw43102.vdb contains 337 records.
Base /var/drweb/bases/drwebase.vdb contains 45256 records.
Total 51124 virus-finding records.
--- cut ---

Если соответствующей информации не появилось, то попробуйте включить
расширенную диагностику. Для TCP сокета:

$ drwebdc -nHOSTNAME -pPORTNUM -sv -sb

Для Unix сокета:

$ drwebdc -uSOCKETFILE -sv -sb

Более подробный вывод может прояснить ситуацию:

--- cut ---
dwlib: fd: connect() failed - Connection refused
dwlib: tcp: connecting to 127.0.0.1:3300 - failed
dwlib: cannot create connection with a DrWeb daemon
ERROR: cannot retrieve daemon version
Error -12
--- cut ---

Далее, взять тестовый файл readme.eicar (идущий в дистрибутиве), с помощью
текстового редактора изготовить из него программу eicar.com (см. указания об
этом внутри самого файла) и попытаться проверить его с помощью демона.
Для TCP сокета:

$ drwebdc -nHOSTNAME -pPORTNUM -f eicar.com

Для Unix сокета:

$ drwebdc -uSOCKETFILE -f eicar.com

Результатом такой команды должна быть соответствующая диагностика:

--- cut ---
Results: daemon return code 0x20 (known virus is found)
--- cut ---

Если ее не появилось, то надо
- посмотреть лог демона: есть ли запись о проверке этого файла;
- включить расширенную диагностику (см. выше).

Если проверка прошла правильно, то это означает, что демон находится в
рабочем состоянии.


                6. Режимы проверки, реализуемые Dr.Web Daemon
                   (локальное сканирование)

Dr.Web Daemon имеет два основных режима проверки:
- проверка фрагмента памяти, полученного из сокета;
- проверка файла на диске.

Остановимся подробнее на этих двух режимах. В первом режиме Dr.Web Daemon
получает данные для проверки из сокета, фактически, это некоторый фрагмент
данных. Этот фрагмент может быть поименованным или нет - это отразится
исключительно на форме записи Dr.Web Daemon в лог-файле. Пример работы
демона в таком режиме приведен в предыдущем пункте - клиент читал файл и
отсылал его демону для проверки. В принципе, демон может проверять любой
фрагмент данных, это не обязательно должен быть файл.

Значительно более эффективен режим, в котором демон проверяет указанный
файл на диске, - т.е. клиент (будь то консольный клиент или фильтр для
почты) сообщает демону лишь путь к файлу, а не передает весь файл.
Внимание !!! Важное замечание - путь задается относительно демона (т.к.
клиенты могут находится на других машинах и т.д.). В чем преимущества
такого режима? Во-первых, он более производителен, во-вторых, значительно
проще делать рабочие схемы с лечением (например, на файловых серверах). Но
такой режим требует более тщательной настройки прав, т.к. демону должен
быть доступен на чтение такой файл, а в случае почтовых файлов и использования
действий "лечение" и "удаление" еще и права на запись. В грамотно настроенной 
системе демону в большинстве случаев не требуется прав администратора (root). 
Но на это стоит обратить особое внимание при использовании с почтовыми системами 
- т.к. фильтры, как правило, работают от имени почтовой системы (которая также 
не использует root привилегий). В наиболее выгодном режиме фильтр создает файл 
с письмом (получая его от почтовой системы) и сообщает демону о его 
местоположении. Вот на этом этапе нужно грамотно распределить права на каталог,
в котором будут создаваться файлы фильтрами. Можно порекомендовать либо 
пользователя, чьи привилегии используются демоном, включать в группу почтовой 
подсистемы, либо запускать демона от пользователя почтовой системы.


                7. Контакты

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

http://www.drweb.com

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

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

- полное название и версию дистрибутива Unix-системы;
- версию программы Dr.Web;

- версии приложений и фильтров, с которыми интегрируется Dr.Web Daemon.
