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

В этом разделе

Общие сведения

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

Условия

Действия

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

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

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

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

Общие сведения

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

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

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

Правила имеют формат:

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

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

Условия

В правилах используются следующие условия:

Условие

Комментарий

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запись

Смысл

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

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

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

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

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

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

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

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

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

Если вы изменили файл Dr.Web для интернет-шлюзов UNIX, для применения внесенных изменений необходимо перезагрузить его, используя команду:

# drweb-ctl reload

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

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

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

Не для всех переменных можно получать значения через 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

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

Block as <reason>

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

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

В качестве <reason> для Block может быть использованы две стандартные причины:

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

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

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

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

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

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

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

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

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

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

Если в скобках ничего не указано, список значений переменных будет очищен, например:

SET <переменная> = ()

Если переменная имеет только одно значение, скобки не используются, например:

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

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

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

Переменная

Описание

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

условии

действии (SET)

protocol

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

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

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

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

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

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

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

Примеры:

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

Да

Нет

sni_host

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

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

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

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

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

Переменная может использоваться в паре с переменной proc (см. ниже).

Примеры:

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 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.

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

Может быть использована в паре с переменной proc (см. ниже).

Примеры:

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 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 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 (он не имеет информации о процессах, поэтому условие всегда будет ложным).

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

Может быть использована в паре с переменными sni_host, url, dst_address (см. ниже).

Примеры:

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")

Да

Нет

(proc, <переменная>)

Сетевая активность процесса, где proc – полный путь к исполняемому файлу процесса (см. выше), а <переменная> определяет тип сетевой активности, и может принимать одно из значений:

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

url — URL, запрошенный клиентом (см. выше);

dst_address — сетевой адрес (<IP-адрес>:<порт>), с которым процесс устанавливает соединение.

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

Используется только с условием match ({<Proc_reg><Var_reg>}[, …]), где <Proc_reg> — регулярное выражение для proc, а <Var_reg> — регулярное выражение для <переменная>.

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

Примеры:

(proc, url) match ({"/usr/bin/wget", "www\.ya\.*"})
(proc, dst_address) match ({"/usr/bin/.*", "192\.168\.1\.\d+:12345"})

Да

Нет

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

Путь к каталогу, в котором хранятся шаблоны страниц блокировки.

Если путь начинается с символа «/» — это абсолютный путь, если с любого другого символа, то это относительный путь. Корневым каталогом при этом считается путь из параметра 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

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

OnlineGames

Веб-сайты, на которых размещены игры, использующие постоянное интернет-соединение

Anonymizers

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

CryptocurrencyMiningPool

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

Jobs

Веб-сайты, предназначенные для поиска работы

В качестве значения переменных 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.