Правила проверки трафика

На главную  Назад  Вперед

Правила представляют собой цепочку продукций вида ЕСЛИ <условная часть> ТО <часть действий>. При этом в части <условная часть> перечисляются проверки вида «Переменная (не) имеет заданное значение» или «Значение переменной (не) входит в указанное множество», а в <часть действий> содержит набор (не менее одного) действий, каждое из которых представляет собой конечную резолюцию (пропустить или заблокировать проверяемый объект) или модифицирующее действие вида «Изменить свойства проверяемого объекта», «Присвоить указанной переменной заданное значение» или «Добавить заданное значение к множеству значений указанной переменной».

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

Формат правил

Формат продукции правила имеет вид:

[<условие>[, <условие>[, ]]] : <действие>[, <действие>[, …]]

Условная часть правила (перед символом ':') может отсутствовать, в этом случае часть действий выполняется безусловно. Если условная часть правила отсутствует, то разделитель ':' может быть опущен. Запятая между условиями в условной части и действиями в части действий играет роль конъюнкции (т.е. логического «И»): условная часть считается истинной, только если истинны все перечисленные в ней условия, а все действия, указанные в части действий, выполняются в порядке их перечисления слева направо до момента встречи конечной резолюции, прерывающая обработку правил. Ключевые слова, имена переменных и параметров из конфигурации в правилах не чувствительны к регистру.

Условия

В условной части правил могут встречаться следующие типы условий:

Условие

Смысл условия

<переменная> <значение>

Значение указанной переменной совпадает с заданным.

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

<переменная> [not] in <множество значений>

Значение указанной переменной содержится в указанном множестве значений (для not – не совпадает ни с одним из значений указанного множества).

<переменная> [not] match <множество значений>

Значение указанной переменной соответствует любому регулярному выражению из указанного набора (для not – не соответствует ни одному из выражений в указанном наборе).

Регулярные выражения записываются с использованием синтаксиса POSIX (BRE, ERE) или Perl (PCRE, PCRE2).

<переменная> [not] gt <значение>

Значение указанной переменной (не) больше заданного.

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

<переменная> [not] lt <значение>

Значение указанной переменной (не) меньше заданного.

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

*) Необязательное ключевое слово not обозначает отрицание.

Часть <множество значений>, с которым сравнивается переменная, может быть указано следующим способами:

Запись

Смысл

(<значение 1>[, <значение 2>[, ...]])

В скобках перечисляется непосредственно множество проверяемых значений (не менее одного). Для случая с одним значением и использованием условия in скобки можно опустить (получится случай <переменная> <значение>).

"<секция>.<параметр>"

Множество значений некоторого параметра конфигурации, где в кавычках указывается имя параметра из конфигурации (с указанием содержащей его секции), значение (или набор значений) которого проверяется.

Перечни параметров, которые можно использовать в условии, зависят от компонента, для которого заданы правила, и приведены ниже.

file("<имя файла>")

Перечень значений считывается из текстового файла <имя файла> (одна строка файла – один элемент списка, ведущие и завершающие пробелы в строках не учитываются). Путь к файлу должен быть абсолютным. Кавычки и апострофы, если они встречаются в <имя файла>, необходимо экранировать символом косой черты '\'.

Размер файла не должен быть больше 64 МБ.

Содержимое файла считывается и подставляется в правила один раз – при загрузке файла конфигурации. Если указанный файл отсутствует или его размер слишком велик, при загрузке настроек будет выдана ошибка x102.

В случае если содержимое файла изменено в процессе работы программного комплекса, для применения внесенных изменений необходимо после сохранения файла перезагрузить программный комплекс, используя команду drweb-ctl reload.

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

<тип_LOOKUP_запроса>@<тег>[@<значение>]

Множество значений запрашивается через Dr.Web LookupD у внешнего источника данных (LDAP, ActiveDirectory), где <тип_LOOKUP_запроса> – это тип источника (LDAP или AD); <тег> – это имя секции, описывающей подключение для выборки проверяемого параметра, а необязательное <значение> – значение, которое должно находиться в множестве значений, извлеченных из источника данных.

Не для всех переменных можно получать значения через Dr.Web LookupD. Также не для всех переменных используется условие <проверка>. Для каждой переменной ниже указывается, можно ли использовать для проверки ее значений значения, получаемые через Dr.Web LookupD.

 

Если переменная имеет множественное значение, то условие <переменная> in <множество значений> истинно, если пересечение множества текущих значений указанной переменной <переменная> с указанным множеством <множество значений> не пусто. Условие not in истинно в противоположном случае. Например, пусть X – переменная, текущее значение которой – множество, содержащее значения a, b, c. Тогда:

X in (a, b) – истинно, так как значения а и b встречаются в обоих множествах;

X in (a, d, e) – истинно, так как значение а встречается в обоих множествах;

X in (d, e) – ложно, так как ни одно из значений переменной (a, b, c) не встречается в множестве (d, e).

X in () – ложно, так как множество значений переменной не пусто.

X not in () – истинно, множество значений переменной не пусто.

X not in (d, e) – истинно, так как ни одно из значений переменной (a, b, c) не встречается в множестве (d, e).

X not in (a, d, e) – ложно, так как значение а встречается в обоих множествах.

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

Действия

Действия делятся на конечные резолюции, определяющие запрет или разрешение на пропуск объекта и действия, изменяющие значения некоторой переменной, что может быть использовано при проверке условий в нижележащих правилах.

Конечные резолюции

Резолюция

Описание (смысл)

Общие резолюции

PASS

Пропустить трафик (разрешить создать соединение, передать объект получателю). Последующие правила (если имеются) не используются.

Для правил обработки почты имеет смысл команды пропуска письма к получателю, применив к нему все накопленные изменения (т.е. все сработавшие действия REPACK, ADD_HEADER, CHANGE_HEADER, см. ниже).

BLOCK as <reason>

Заблокировать трафик (отказать в создании соединения, передаче объекта получателю). Последующие правила (если имеются) не используются..

В журнале фиксируется, что блокировка случилась по причине <reason>. Эта же причина используется для определения, какую страницу с уведомлением показать пользователю в браузере. В качестве <reason> для BLOCK может быть использовано две стандартные причины:

BlackList – считается, что данные заблокированы по причине попадания в черный список пользователя.

_match – причиной блокировки является попадание веб-ресурса или файла с угрозой в категорию, из-за которой сработало правило (для условий *_category in (...)). Переменная _match хранит список блокируемых категорий, для которых сработало соответствие.

Особенности обработки конечных резолюций:

BLOCK as BlackList всегда отрабатывает как «попал в черный список» (вне зависимости от того, что за условие указано в правиле с данной резолюцией).

BLOCK as _match, если в _match не пусто, отрабатывает как «попал в _match категорию(и)».

BLOCK as _match, если в _match пусто, отрабатывает как «попал в черный список» (вне зависимости от того, что за условие указано в правиле с данной резолюцией).

Если были просмотрены все правила, а ни одно правило с резолюцией не сработало (или резолюции отсутствуют в правилах), то это равносильно применению к соединению действия PASS.

Для правил SpIDer Gate, управляющих не почтовыми соединениями, срабатывание почтовой резолюции равносильно BLOCK as BlackList (дополнительно в журнале будет зафиксировано сообщение о применении неизвестного действия).

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

Изменение значения переменной

Для изменения значения переменной используется инструкция

SET <переменная> = ([<значение 1>[, <значение 2>[, ...]]])

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

SET <переменная> = <значение>

Переменные, используемые в правилах

При указании переменных в правилах регистр символов не учитывается. Переменные, название которых состоит из нескольких слов, могут быть записаны с использованием подчеркивания для разделения слов, или записаны без подчёркивания. Таким образом, записи variable_name, VariableName и variablename представляют одну и ту же переменную. В данном разделе все переменные записаны с использованием подчеркивания (т.е. используется вариант написания variable_name).

Переменная

Описание

Может быть использована в

условной части

части действия (SET)

protocol

Тип сетевого протокола, используемого соединением.

Переменная может принимать множество значений.

Возможные значения: HTTP, SMTP, IMAP, POP3.

Особенности использования:

Значение переменной определено, только если не используется SSL/TLS или было разрешено вскрытие SSL.

В правилах для Dr.Web ICAPD не имеет смысл указывать значение, отличное от HTTP: для него протокол может быть только HTTP.

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

protocol in (HTTP, SMTP)
protocol in (POP3)
protocol in file("/etc/file")

Да

Нет

sni_host

SNI (адрес) узла, с которым устанавливается соединение через SSL/TLS.

Особенности использования:

Если SSL не используется, то значение переменной не определено, условие будет ложным.

Не имеет смысл использовать в правилах для Dr.Web ICAPD (он не обрабатывает SSL, поэтому условие всегда будет ложным).

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

sni_host not in ('vk.com', 'ya.ru')
sni_host in "LinuxFirewall.BlackList"
sni_host in file("/etc/file")

Да

Нет

sni_category

Список категорий, к которым в базах категорий веб-ресурсов относится узел (определенный по SNI), с которым устанавливается соединение через SSL/TLS (AdultContent, и т.п.).

Переменная может принимать множество значений.

Особенности использования:

Если SSL не используется, то значение переменной не определено, условие будет ложным.

Не имеет смысл использовать в правилах для Dr.Web ICAPD (он не обрабатывает SSL, поэтому условие всегда будет ложным).

Для правил, используемых компонентами Dr.Web MailD и Dr.Web ICAPD, условие с not in будет истинным, даже если по результатам проверки узел не принадлежит никакой из предопределенных категорий («безопасный» узел). Для правил компонента Dr.Web Firewall для Linux (SpIDer Gate) условие в этом случае будет ложным.

Если базы данных категорий веб-ресурсов не установлены, то переменную нельзя использовать в правилах (попытка проверить истинность условия в правиле будет приводить к ошибке x112).

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

sni_category not in (AdultContent, Chats)
sni_category in "LinuxFirewall.BlockCategory"
sni_category in (FreeEmail)
sni_category not in file("/etc/file")

Да

Нет

url

URL, запрошенный клиентом. Может быть сравнен с указанной строкой или регулярным выражением.

Особенности использования:

Можно использовать только в правилах для Dr.Web ICAPD.

Для проверки значения переменной можно использовать Dr.Web LookupD.

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

url match ("drweb.com", "example\..*", "aaa\.ru/")
url match "ICAPD.Adlist"
url not match LDAP@BadURLs
url match file("/etc/file")

Да

Нет

url_host

URL/узел, с которым устанавливается соединение.

Особенности использования:

Значение переменной определено, только если не используется SSL/TLS или было разрешено вскрытие SSL.

Для проверки значения переменной можно использовать Dr.Web LookupD.

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

url_host in ('vk.com', 'ya.ru')
url_host not in "ICAPD.Whitelist"
url_host in LDAP@hosts
url_host not in file("/etc/file")

Да

Нет

url_category

Список категорий, к которым (по базам категорий веб-ресурсов или по ответу из Dr.Web Cloud) относится URL/узел, с которым установлено соединение.

Переменная может принимать множество значений.

Особенности использования:

Значение переменной определено, только если не используется SSL/TLS или было разрешено вскрытие SSL.

Для правил, используемых компонентами Dr.Web MailD и Dr.Web ICAPD, условие с not in будет истинным, даже если по результатам проверки URL/узел не принадлежит никакой из предопределенных категорий («безопасный» URL/узел). Для правил компонента Dr.Web Firewall для Linux (SpIDer Gate) условие в этом случае будет ложным.

Если базы данных категорий веб-ресурсов не установлены, то переменную нельзя использовать в правилах (попытка проверить истинность условия в правиле будет приводить к ошибке x112).

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

url_category not in (AdultContent, Chats)
url_category in "LinuxFirewall.BlockCategory"
url_category in (FreeEmail)
url_category in file("/etc/file")

Да

Нет

threat_category

Список категорий, к которым по информации из вирусных баз относится угроза, обнаруженная в передаваемых данных.

Переменная может принимать множество значений.

Особенности использования:

Значение переменной определено, только если не используется SSL/TLS или было разрешено вскрытие SSL.

Для правил, используемых компонентами Dr.Web MailD и Dr.Web ICAPD, условие с not in будет истинным, даже если по результатам проверки объект не содержит угроз ни из одной из предопределенных категорий («безопасный» объект). Для правил компонента Dr.Web Firewall для Linux (SpIDer Gate) условие в этом случае будет ложным.

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

threat_category in "LinuxFirewall.BlockThreat"
threat_category not in (Joke)
threat_category in file("/etc/file")

Да

Нет

user

Имя пользователя, с правами которого запущен процесс-отправитель (или получатель) трафика.

Особенности использования:

В правилах для Dr.Web ICAPD имеет смысл имени пользователя, прошедшего аутентификацию на прокси-сервере (если прокси-сервер поддерживает аутентификацию). Если прокси-сервер не аутентифицирует пользователей, переменная имеет пустое значение.

Для проверки значения переменной можно использовать Dr.Web LookupD.

Если требуется проверить вхождение пользователя в некоторую группу пользователей, используйте источник данных LDAP или Active Directory, возвращающий перечень групп. Также запрос должен содержать условие сравнения имени группы, которой принадлежит пользователь, с требуемым (используйте формат <тип источника LookupD>@<источник групп>@<требуемая группа>). Запросы к Active Directory (AD@) возвращают только перечни групп, поэтому для них использование части @<требуемая группа> обязательно.

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

user in ('user1', 'user2')
user in AD@Winusergroups@Admins
user in LDAP@AllowedUsers
user not in file("/etc/file")

Да

Нет

src_ip

IP-адрес узла, со стороны которого следует соединение.

Особенности использования:

Для проверки значения переменной можно использовать Dr.Web LookupD.

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

src_ip not in (127.0.0.1, 10.20.30.41, 198.126.10.0/24)
src_ip in LDAP@AllowedAddresses
src_ip not in file("/etc/file")

Да

Нет

proc

Процесс, устанавливающий соединение (полный путь к исполняемому файлу).

Особенности использования:

Не имеет смысл использовать в правилах для Dr.Web ICAPD (он не имеет информации о процессах, поэтому условие всегда будет ложным).

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

proc in ('/usr/bin/ls')
proc not in ('/home/user/myapp', '/bin/bin1')
proc in "LinuxFirewall.ExcludedProc"
proc in file("/etc/file")

Да

Нет

direction

Тип трафика, идущего по соединению.

Возможные значения: request (клиентский запрос), response (ответ сервера).

Переменная не может иметь множества значений, условия типа match и in неприменимы.

Примеры:

direction request
direction not response

Да

Нет

divert

Направление соединения.

Возможные значения: input (входящее – создано/инициировано извне локального узла), output (исходящее – создано/инициировано на локальном узле).

Переменная не может иметь множества значений, условия типа match и in неприменимы.

Примеры:

divert input
divert not output

Да

Нет

content_type

MIME-тип данных, передающихся по соединению.

Особенности использования:

Может быть определен, только если не используется SSL/TLS или было разрешено вскрытие SSL.

Выражению "*/*" соответствуют данные любого MIME-типа, а также HTTP-ответы без заголовка Content-Type.

Для проверки значения переменной можно использовать Dr.Web LookupD.

Множество значений для проверки значения переменной можно получать из файла.

Примеры:

content_type in ("multipart/byteranges", "application/octet-stream")
content_type not in ("text/*", "image/*")
content_type not in ("audio/*")
content_type in ("*/*")
content_type in LDAP@BlockedContent
content_type not in file("/etc/file")

Да

Нет

unwrap_ssl

Используется ли раскрытие защищенного трафика, передаваемого через SSL/TLS.

Возможные значения: true, false.

Особенности использования:

Переменная не может не иметь значения, т.е. инструкция SET unwrap_ssl = () недопустима.

Переменная не может использоваться в условиях, а нужна только для управления вскрытием SSL (например, чтобы продемонстрировать пользователю веб-страницу с уведомлением о блокировке от нашего имени).

Не имеет смысл использовать в правилах для Dr.Web ICAPD (он не обрабатывает SSL, изменение значения переменной никак не влияет на обработку правил).

Примеры:

SET unwrap_ssl = TRUE
set Unwrap_SSL = false

Нет

Да

http_templates_dir

Путь к каталогу, из которого брать шаблон страницы уведомления о блокировке HTTP-запроса/ответа.

Если путь начинается с / – это абсолютный путь, если с любого другого символа – то это относительный путь. Корнем при этом считается путь из параметра TemplatesDir.

Особенности использования:

Имеет смысл только для протокола HTTP(S).

Примеры:

SET http_templates_dir = "/etc/mytemplates"
set http_templates_dir = "templates_for_my_site"

Нет

Да

Категории нежелательных веб-сайтов и угроз

1.Категории нежелательных веб-сайтов (для переменных sni_category, url_category)

Обозначение

Категория веб-сайтов

InfectionSource

Сайты, содержащие вредоносное ПО («источники распространения вирусов»).

NotRecommended

Сайты, используемые для мошенничества («социальной инженерии») и не рекомендованные к посещению.

AdultContent

Сайты, содержащие материалы порнографического или эротического содержания, сайты знакомств и т. д.

Violence

Сайты, содержащие призывы к насилию, материалы о различных происшествиях с человеческими жертвами и т. д.

Weapons

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

Gambling

Сайты, на которых размещены онлайн-игры на деньги, интернет-казино, аукционы, а также принимающие ставки и т. д.

Drugs

Сайты, пропагандирующие употребление, изготовление или распространение наркотиков и т. д.

ObsceneLanguage

Сайты, на которых содержится нецензурная лексика (в названиях разделов, статьях и пр.).

Chats

Сайты для обмена сообщениями в режиме реального времени.

Terrorism

Сайты, содержащие материалы агрессивно-агитационного характера, описания терактов и т. д.

FreeEmail

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

SocialNetworks

Социальные сети общего характера, деловые, корпоративные и тематические социальные сети, а также тематические сайты знакомств.

DueToCopyrightNotice

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

В качестве значения переменных sni_category и url_category можно также использовать имена параметров, управляющих блокировкой (см. ниже).

2.Категории угроз (для переменной threat_category)

Обозначение

Категория угроз

KnownVirus

Известная угроза (вирус).

VirusModification

Модификация известной угрозы (вируса).

UnknownVirus

Неизвестная угроза, подозрительный объект.

Adware

Рекламная программа.

Dialer

Программа дозвона.

Joke

Программа-шутка.

Riskware

Потенциально опасная программа.

Hacktool

Программа взлома.

В качестве значения переменной threat_category можно также использовать имена параметров, управляющих блокировкой (см. ниже).

Параметры конфигурации, которые можно использовать в условиях правил

Параметры, используемые в правилах компонента Dr.Web Firewall для Linux (указываются с префиксом LinuxFirewall.):

Параметр

Описание и пример использования

Whitelist

Белый список. Хранит перечень доменов, доступ к которым разрешается, даже если эти домены находятся в базе категорий.

Примеры:

sni_host in "LinuxFirewall.Whitelist" : PASS
url_host not in "LinuxFirewall.Whitelist" : BLOCK as _match

Blacklist

Черный список. Хранит перечень доменов, доступ к которым запрещен самим пользователем (или администратором).

Примеры:

sni_host in "LinuxFirewall.Blacklist" : SET Unwrap_SSL = FALSE
url_host in "LinuxFirewall.Blacklist" : BLOCK as BlackList

BlockCategory

«Мета-параметр»: Его значениями является список названий категорий (Chats, AdultContent и т.д.), для которых соответствующие параметры Block* в секции [LinuxFirewall] установлены в Yes.

Примеры:

url_category in "LinuxFirewall.BlockCategory" : BLOCK as _match
sni_category in "LinuxFirewall.BlockCategory" : BLOCK as BlackList

BlockThreat

«Мета-параметр»: Его значениями является список названий типов угроз (KnownVirus, Joke и т.д.), для которых соответствующие параметры Block* в секции [LinuxFirewall] установлены в Yes.

Примеры:

threat_category in "LinuxFirewall.BlockThreat" : BLOCK as _match

ExcludedProc

Перечень доверенных процессов, трафик которых не должен проверяться.

Примеры:

proc in "LinuxFirewall.ExcludedProc" : PASS

Параметры, используемые в правилах компонента Dr.Web ICAPD (указываются с префиксом ICAPD.):

Параметр

Описание и пример использования

Whitelist

Белый список. Хранит перечень доменов, доступ к которым разрешается, даже если эти домены находятся в базе категорий.

Примеры:

url_host not in "ICAPD.Whitelist" : BLOCK as BlackList

Blacklist

Черный список. Хранит перечень доменов, доступ к которым запрещен самим пользователем (или администратором).

Примеры:

url_host in "ICAPD.Blacklist" : BLOCK as BlackList

Adlist

Рекламный список. Хранит перечень регулярных выражений, которые описывают рекламные сайты. Задается самим пользователем (или администратором).

Примеры:

url match "ICAPD.Adlist" : BLOCK as BlackList

BlockCategory

«Мета-параметр»: Его значениями является список названий категорий (Chats, AdultContent и т.д.), для которых соответствующие параметры Block* в секции [ICAPD] установлены в Yes.

Примеры:

url_category in "ICAPD.BlockCategory" : BLOCK as _match

BlockThreat

«Мета-параметр»: его значениями является список названий типов угроз (KnownVirus, Joke и т.д.), для которых соответствующие параметры Block* в секции [ICAPD] установлены в Yes.

Примеры:

threat_category in "ICAPD.BlockThreat" : BLOCK as _match

 

Особенности сохранения правил в файл конфигурации

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

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

Например, следующее правило, не содержащее условной части, и состоящее только из действия:

BLOCK as _match

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

: BLOCK as _match

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

Например, следующее правило, содержащее два действия в части действий:

user in ('user1', 'user2') : SET http_templates_dir = "/etc/mytemplates", BLOCK as _match

будет записано в файл конфигурации в виде последовательности двух правил:

user in ('user1', 'user2') : SET http_templates_dir = "/etc/mytemplates"
user in ('user1', 'user2') : BLOCK as _match

Так как в записи правил не предусмотрено дизъюнкции (логическое «ИЛИ») условий в условной части, для реализации логического «ИЛИ» следует записать цепочку правил, в условии каждого из которых будет указано единственное условие-дизъюнкт. Например, следующие два правила эквивалентны правилу «Осуществить блокировку, если обнаружен вредоносный объект типа KnownVirus или URL из категории Terrorism»:

threat_category in (KnownVirus) : BLOCK as _match
url_category in (Terrorism) : BLOCK as _match

так как следующие записи логически эквивалентны: (a –> xb –> x); ((a –> x) /\ (b –> x)); ((a \/ b) –> x).

Как и для любого параметра конфигурации, значения параметров типа RuleSet (т.е. правила) могут быть просмотрены и изменены при помощи команд cfshow и cfset утилиты управления Dr.Web Ctl (модуль drweb-ctl). Подробнее о синтаксисе команд cfshow и cfset консольной утилиты управления Dr.Web Ctl (модуль drweb-ctl) см. в разделе Dr.Web Ctl.