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

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

1. Что такое Dr.Web Daemon for Unix ?
2. Настройка Dr.Web Daemon
3. О ключах (ключевых файлах)
4. Запуск Dr.Web Daemon
5. Проверка работоспособности Dr.Web Daemon
6. Режимы проверки, реализуемые Dr.Web Daemon (локальное сканирование)
7. Контакты


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

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

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

$ /usr/local/drweb/drwebd -ini=/usr/local/drweb/drwebd.ini

Конфигурационный файл drweb32.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 (поисковый модуль). Этот параметр
        также используется модулем обновления для обновления поискового
        модуля.
        Значение по умолчанию:
                "/opt/drweb/lib/drweb32.dll" для Linux и Solaris
                "/usr/local/drweb/lib/drweb32.dll" для BSD

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

Key = { путь к файлу, обычное расширение - key }
        Расположение файла с регистрационным ключом.
        Значение по умолчанию:
                "/opt/drweb/drweb32.key" для Linux и Solaris
                "/usr/local/drweb/drweb32.key" для BSD

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

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

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

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

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

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

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

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

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

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, SH*, PIF, MSG, CHM, REG, XML, PRC, TBB, ASP"

MoveFilesTo = { каталог }
        Каталог для перемещения файлов, если для данного типа файлов задано
        действие Move (только для сканера).
        Значение по умолчанию:
                "/opt/drweb/infected" для Linux и Solaris
                "/usr/local/drweb/infected" для BSD

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

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

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"

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

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

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

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

LogEncoding = { koi8-r | windows-1251 }
       Задает кодировку файла отчета. Значение по умолчанию: "koi8-r".

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

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

Socket ПОРТ [интерфейсы]
Socket ФАЙЛ [доступ]

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

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

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

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

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

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

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

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

UserID = { числовой ID }
GroupID = { числовой ID }
        ID группы и пользователя, с чьими привилегиями будет работать
        демон. Параметры игнорируются, если задан параметр User.
        Значение по умолчанию: отсутствует

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

PreFork = { Yes | No }
	Устанавливает тип создания дочерних процессов.
        Значение "No" означает, что на каждое соединение будет 
        создаваться дочерний процесс. Значение "Yes" означает, что
	MacChildren процессов будет создано сразу при старте демона.
        Значение по умолчанию: No


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

FileTimeout = { value, seconds }
        Максимальное колличество времени, которое может быть потрачено
	на сканирование одного объекта.
	Значение по умолчанию: 30

StopOnFirstInfected = { Yes | No } 
	Заканчивать или нет сканирование после того, как найдет первый
	инфицированный объект. Значение "Yes" позволяет сэкономить некоторое
	колличество времени на почтовых серверах при обработке писем.
	Значение по умолчанию: No


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

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

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

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

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

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

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

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

- не проверяются архивы в традиционном понимании (ZIP, RAR, TAR, GZIP и
др.), но это НЕ касается "псевдоархивов" (MAIL, HTML, UUE и др.) и упакованных
файлов (упаковщиками DIET, PKLITE и др.);
- невозможно лечение зараженных файлов;
- в режиме локального сканирования к multipart-mime письмам
  дописывается evaluation banner.
- отсутствует эвристический анализ

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

Например, "Key = /opt/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), запустив его для получения служебной
информации о демоне. Для TCP сокета:

$ drwebdc -nHOSTNAME -pPORTNUM -sv -sb

Для Unix сокета:

$ drwebdc -uSOCKETFILE -sv -sb

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

--- cut ---
Dr.Web daemon version: 4.27
Virus base: /opt/drweb/drwtoday.vdb (56 records)
Virus base: /opt/drweb/drw42702.vdb (116 records)
Virus base: /opt/drweb/drw42701.vdb (90 records)
Virus base: /opt/drweb/drwebase.vdb (27860 records)
Total virusfinding records : 28467
--- cut ---

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

$ drwebdc -nHOSTNAME -pPORTNUM -sv -sb -w

Для Unix сокета:

$ drwebdc -uSOCKETFILE -sv -sb -w

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

--- cut ---
dwlib: startup: set timeout for whole session to -1 milliseconds (-1 means infinite)
dwlib: ipc: parse address string <inet:3001@localhost>
dwlib: tcp: call resolver for localhost
dwlib: tcp: resolver return 127.0.0.1
dwlib: tcp: connecting to 127.0.0.1:3001
dwlib: fd: connect() failed - Connection refused
Results: dwclient error -2 (internal transport subsystem)
Final code 0x10.
--- cut ---

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

$ drwebdc -w -nHOSTNAME -pPORTNUM -f eicar.com

Для Unix сокета:

$ drwebdc -w -uSOCKETFILE -f eicar.com

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

--- cut ---
dwlib: startup: set timeout for whole session to -1 milliseconds (-1 means infinite)
dwlib: ipc: parse address string <inet:3000@localhost>
dwlib: tcp: call resolver for localhost
dwlib: tcp: resolver return 127.0.0.1
dwlib: tcp: connecting to 127.0.0.1:3000
Results: daemon return code 0x20 (known virus is found)
Final code 0x1.
--- cut ---

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

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


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

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

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

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

                7. Контакты

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

http://www.antivir.ru
http://drweb.ru/
http://forum.drweb.ru/unix/
http://drweb.ru/unix/

Свои отзывы, предложения и замечания Вы можете присылать в антивирусный
отдел ЗАО "ДиалогНаука":

Адрес: 117786 Москва, ул.Вавилова 40, ВЦ РАН, офис 103.

Проезд: ст. метро "Ленинский проспект" (выход к ул. Орджоникидзе),
        далее любым трамваем до остановки "Улица Губкина"
        (4-я остановка в сторону ст. метро "Университет").

Тел.(095)135-6253, 137-0150
Тел/факс 938-2970, 938-2855

FidoNet: 2:5020/69

WWW: http://www.antivir.ru
FTP: ftp.antivir.ru, ftp2.antivir.ru, ftp3.antivir.ru

E-mail: Antivir@antivir.ru
         
Консультации для зарегистрированных пользователей осуществляются по
e-mail: Support@antivir.ru, support@drweb.ru

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

- название и версию дистрибутива Unix-системы;
- версию ядра и стандартной библиотеки libc;
- версии приложений и фильтров, с которыми интегрируется Dr.Web Daemon;
- версию программы Dr.Web Daemon.
