Синтаксис UPL-правил WAF

ID статьи: 1336
Последнее обновление: 04 апр, 2024
Documentation:
Version: 7.1.0

Правила WAF в межсетевом экране UserGate описываются с помощью языка UPL. 

Прежде всего, UPL контролирует следующее:

  •  требования к аутентификации пользователя;

  •  доступ к веб-ресурсам;

  • различные аспекты обработки запросов и ответов;

  • журналирование.

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

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

% Это комментарий
DENY("Too many Host headers") request.header.Host.count = 2..  % и это тоже

Правило состоит из условий (conditions) и некоторого количества действий (actions), записанных в любом порядке. Есть еще свойства (properties), которые синтаксически выглядят как действие, но при этом активных действий не производят. Например, свойство name просто ставит атрибут имя на правило. Правила обычно пишутся в одной строке, но могут быть разбиты на строки с помощью специального символа обратного слеша '\'. Когда правило выполняется, условие проверяется для текущей конкретной транзакции. Если условие оценивается как True (истина), выполняются все перечисленные действия (actions) и текущий слой (layer) заканчивается при наличии префиксов PASS/FORCE_PASS/DENY/FORCE_DENY/WARNING/OK. Ecли сработавшее правило не имеет префиксов PASS/FORCE_PASS/DENY/FORCE_DENY/WARNING/OK, то выполняются действия (actions) и дальше обрабатывается уже следующее правило . Если условие оценивается как False для этой транзакции, то дальше обрабатывается уже следующее правило.

Все условия в правиле проверяются по логическому 'И'. Если все условия выполняются, то к трафику применяются все перечисленные в правиле действия. 

В свою очередь, условие является логической комбинацией триггеров (triggers). Триггеры — это отдельные тесты, которые можно сделать над компонентами запроса (url= ), ответа (response.Header.Content-Type=), связанным пользователем (user=, group=) или состоянием системы (time=).

Действия — это настройки, которые управляют обработкой транзакции. Например, запретить (deny) или обработать объект, к примеру изменить заголовок (rewrite).

Rule ::= (PASS|FORCE_PASS|DENY|(DENY '(' string ')')|FORCE_DENY|FORCE_DENY'(' string ')'|WARNING|OK)? Conditions '\'? Actions
Conditions ::= condition '\'? Conditions
Actions ::= action '\'? Actions

Эта статья была:   Полезна | Не полезна
Сообщить об ошибке
ID статьи: 1336
Последнее обновление: 04 апр, 2024
Ревизия: 7
Просмотры: 3215
Комментарии: 0