ID статьи: 1741
Последнее обновление: 19 ноя, 2024
Product: DCFW Version: 8.x
Условие (condition) в языке UPL является логической комбинацией триггеров. Триггеры — это отдельные тесты, которые можно выполнить с компонентами запроса, ответа, связанными пользователями или состоянием системы. Все триггеры условия сравниваются со значениями с помощью операторов "=" и "!=". В роли значения могут выступать константные значения, такие как строки, целочисленные значения, диапазоны значений, динамические значения. Синтаксис: condition ::= condition_name ('=' | '!=') condition_value condition_value ::= pattern | list list ::= '(' ((pattern ',')* pattern)? ')' pattern ::= word | string | integer | float | boolean| range | condition_name string ::= '"' произвольная строка '"' word ::= [a-zA-Z][0-9a-zA-Z_\-]* boolean ::= yes|no|true|false range ::= integer .. [integer] | [integer] .. integer | float .. [float] | [float] .. float numeric :: = integer | range http.connectПроверка наличия HTTP CONNECT. Синтаксис: http.connect = yes | no | true | false http.methodПроверка используемого HTTP-метода. Метод можно указывать как в кавычках, так и без. Синтаксис: http.method = GET | CONNECT | DELETE | HEAD | POST | PUT | TRACE | OPTIONS | TUNNEL | LINK | UNLINK | PATCH | PROPFIND | PROPPATCH | MKCOL | COPY | MOVE | LOCK | UNLOCK | MKDIR | INDEX | RMDIR | COPY | MOVE http.request.versionПроверка версии HTTP-запроса. Синтаксис: http.request.version = 0.9 | 1.0 | 1.1 http.response.versionПроверка версии HTTP-ответа. Синтаксис: http.response.version = 0.9 | 1.0 | 1.1 http.response.codeПроверка HTTP-кода ответа. Валидные значения: 100 - 999. Синтаксис: http.response.code = NNN %(где NNN число от 100 до 999) http.request.body, http.request.body.nocase, http.response.body и http.response.body.nocaseПроверка тела запроса/ответа HTTP на содержание определенной сигнатуры. Пример:
categoryПроверка домена на принадлежность к определенной категории сайтов (смотрите в Приложении список категорий ) Синтаксис: category = word | string | integer | list | lib lib ::= lib.category '(' list_libs ')' list_libs :: = lib_name ','' list_libs lib_name ::= word | string Пример: Запретить категории Job Search и Gambling:
Запретить все категории из библиотеки Restricted cats:
morphologyПроверка тела ответа морфологическими словарями. Синтаксис: morphology = word | string | list | lib lib ::= lib.morphology '(' list_libs ')' list_libs :: = lib_name ','' list_libs lib_name ::= word | string Пример: Запретить контент, если сработает категория морфологии из словаря BadWords:
Запретить морфологические категории из библиотек Special Words, BadWords
request.header.<h_name> и response.header.<h_name>Проверка HTTP-заголовка запроса/ответа. h_name может принимать одно из поддерживаемых значений (смотрите список поддерживаемых HTTP-заголовков в Приложении). Синтаксис: request.header.<h_name>[.base64][.nocase] = string Пример:
request.header.<h_name>.substring и response.header.<h_name>.substringПроверка HTTP-заголовка запроса/ответа на вхождение подстроки. h_name может принимать одно из поддерживаемых значений (смотрите список поддерживаемых HTTP-заголовков в Приложении). Синтаксис: request.header.<h_name>[.base64]substring[.nocase] = string Пример:
request.header.<h_name>.regex и response.header.<h_name>.regexПроверка HTTP-заголовка запроса/ответа на регулярное выражение PCRE. h_name может принимать одно из поддерживаемых значений (смотрите список поддерживаемых HTTP-заголовков в Приложении). Синтаксис: request.header.<h_name>[.base64].regex = string Пример:
request.header.<h_name>.re2 и response.header.<h_name>.re2Проверка HTTP-заголовка запроса/ответа на регулярное выражение RE2. h_name может принимать одно из поддерживаемых значений (смотрите список поддерживаемых HTTP-заголовков в Приложении). Синтаксис: request.header.<h_name>[.base64].re2 = string Пример:
request.header.<h_name>.count и response.header.<h_name>.countПроверка количества заголовков <h_name> в HTTP-запросе/ответе. h_name может принимать одно из поддерживаемых значений (смотрите список поддерживаемых HTTP-заголовков в Приложении). Синтаксис: request.header.<h_name>.count = integer | range Пример:
request.header.<h_name>.length и response.header.<h_name>.lengthПроверка длины значений всех заголовков <h_name> в HTTP-запросе/ответе. h_name может принимать одно из поддерживаемых значений (смотрите список поддерживаемых HTTP-заголовков в Приложении). Синтаксис: request.header.<h_name>.length = integer | range Пример:
request.header_names, request.header_values, response.header_values и response.header_valuesПроверка имени/значения всех HTTP-заголовков запроса/ответа на значение. Синтаксис: request.header_values[.base64].regex = string request.header_values[.base64].re2 = string request.header_values[.base64].substring[.nocase] = string request.header_values.count = integer | range request.header_values.length = integer | range request.x_header.<xh_name> и response.x_header.<xh_name>Проверка HTTP-заголовка запроса/ответа на значение. xh_name — произвольный HTTP-заголовок. Синтаксис: request.x_header.<xh_name>[.base64][.nocase] = string request.x_header.<xh_name>[.base64].regex = string request.x_header.<xh_name>[.base64].re2 = string request.x_header.<xh_name>[.base64].substring[.nocase] = string request.x_header.<xh_name>.count = integer | range request.x_header.<xh_name>.length = integer | range Пример:
Возможны также суффиксы length, count, regex, re2 как и в случае с <h_name>.
request.header.Cookie.<cookie_name>Проверка заголовка запроса Cookie на значение. Синтаксис: request.header.Cookie.<cookie_name>[.base64][.(nocase | substring | substring.nocase | regex | re2)] = string Пример:
time, day, hour, minuteПроверка соответствия текущего времени заданному условию. Если не указан суффикс utc, время берется локальное, иначе — по Гринвичу. Синтаксис: day[.utc] = monday | tuesday | wednesday | thursday | friday | saturday | sunday | DD | list time[.utc] = HH:MM | range | lib.time(<name>) hour[.utc] = HH | range minute[.utc] = MM | range HH ::= 00 - 23 MM ::= 00 - 59 DD ::= 1 - 31 Пример:
Открытые интервалы учитываются по границе суток/часа.
url, url.host и url.addressПроверка url или его части на значение. Проверка использует нормализованный URI c декодированными *%*. Синтаксис: url[.(prefix | substring | suffix | regex | re2)] = string url.host[.(prefix | substring | suffix | regex | re2)] = string url.domain[.(prefix | substring | suffix | regex | re2)] = string url.address = ip_address | subnet | subnet_label url.port = [low_port]..[high_port] | port url.path[.base64][.(prefix | substring | suffix | regex | re2)] = string url.is_absolute = yes | no % полный или нет URL prefix ::= string % начало строки substring ::= string % подстрока suffix ::= string % окончание строки regex ::= string % регулярное выражение PCRE re2 ::= string % регулярное выражение RE2 url.address — это, по сути, синоним dst.ip. Пример:
qparam.<name>, qparam.values и qparam.namesПроверка значения параметров запроса. Проверка использует имена и значения параметров c декодированными *%*. Синтаксис: qparam.length = numeric % проверить общую длину query-параметров qparam.count = numeric % проверить количество query-параметров qparam.<name>[.(length | count)] = numeric qparam.<name>[.base64][.(nocase | substring | substring.nocase | regex | re2)] = string qparam.values[.base64].substring[.nocase] = string % проверить все значения на вхождение подстроки qparam.names[.base64].substring[.nocase] = string % проверить все имена на вхождение подстроки qparam.values[.base64].regex = string % проверить все значения на регулярное выражение qparam.names[.base64].regex = string % проверить все имена на регулярные выражения qparam.values[.base64].re2 = string % проверить все значения на регулярное выражение qparam.names[.base64].re2 = string % проверить все имена на регулярные выражения numeric ::= integer | range % число либо диапазон regex ::= string % регулярное выражение PCRE re2 ::= string % регулярное выражение RE2 Пример:
user и groupПроверка текущего пользователя или его группы. Синтаксис: user = word | string | known | unknown group = word | string user.guid = string group.guid = string known — используется для указания авторизованного (известного) пользователя; Пример:
src и dstПроверка условия на IP-адрес, зону или GeoIP источника/назначения. Синтаксис: src.ip = ip_address | subnet | subnet_label | list | lib dst.ip = ip_address | subnet | subnet_label | list | lib src.zone = integer | zone_name dst.zone = integer | zone_name src.geoip = iso3166 | list dst.geoip = iso3166 | list src.mac = mac_address | list dst.mac = mac_address | list lib ::= lib.(network | url) '(' list_libs ')' list_libs :: = lib_name ','' list_libs lib_name ::= word | string iso3166 ::= [A-Z][A-Z] url.address — это, по сути, синоним dst.ip. scenarioПроверка активности определенного сценария. Синтаксис: scenario = string | word | list Пример:
virus_heuristic и virus_usergateПроверка тела ответа на вирусы. Синтаксис: virus_heuristic = yes | no | true | false % (по умолчанию false) virus_usergate = yes | no | true | false % (по умолчанию false) heuristic — эвристический анализатор (медленный); bridge_vlan_filterФильтрация трафика по VLAN-тегам для интерфейса в режиме моста (bridge). Синтаксис: bridge_vlan_filter '='|'!=' list | number | number..number Пример:
serviceДетектирование трафика определенного сервиса для межсетевого экрана. Синтаксис: service = string | word | list Пример:
applicationДетектирование трафика определенного приложения на уровне L7 для межсетевого экрана. Синтаксис: application = string | word | list Пример:
envelope_from и envelope_toПроверка email-адреса отправителя/адресата сообщения. Синтаксис: envelope_from '='|'!=' string | list envelope_to '='|'!=' string | list Пример:
response_timeПроверка времени ответа в миллисекундах. Синтаксис: response_time = integer hip_profileHIP-профили для проверки соответствия конечного устройства требованиям безопасности. Действительно только для правил межсетевого экрана. Синтаксис: hip_profile = string | word | list
Эта статья была:
Полезна |
Не полезна
Сообщить об ошибке
ID статьи: 1741
Последнее обновление: 19 ноя, 2024
Ревизия: 3
Просмотры: 3
Комментарии: 0
Теги
|