ID статьи: 1745
Последнее обновление: 19 ноя, 2024
Product: DCFW Version: 8.x
Действие (action) — это то, что будет выполнено, если условия в правиле истинны. В качестве параметров могут использоваться константные значения, или динамические значение там, где это предусмотрено. Синтаксис: action = action_name | action_name '(' list_params ')' action_name ::= warning | log_message | append | delete | set | replace | encrypt | inc|dec | reset | redirect | encrypt_body_url | decrypt_path | body_inject | set_cookie_token | body_replace | lookup_and_auth | encode_cookie | decode_cookie | sma | nat | dnat | route | port_mapping | netmap | forward | ignore | action_label action_label ::= 'action'.<action_label_name> action_label_name ::= atom list_params ::= value ',' list_params warningДействия, которые разрешаются без выхода из обработки правил на текущем слое. warning ставит отметку о том, что необходимо вставить код с предупреждением в тело ответа. Пример:
log_messageЗаписать сообщения в журнал. Пример:
appendДобавить заголовок к HTTP-запросу/ответу. Список поддерживаемых заголовков приведен в Приложении. Первый параметр может быть опущен, если заголовок относится к одной группе request или response. Синтаксис: append([request | response,] <headername>, value) headername — см. в Приложении. setПереписать значение конкретному HTTP-заголовку. Список поддерживаемых заголовков см. в Приложении. Синтаксис: set([request | response,] <headername>, value) headername — см. в Приложении. deleteУдалить HTT- заголовок. Список поддерживаемых заголовков см. в Приложении. Первый параметр может быть опущен, если заголовок относится к одной группе request или response. Синтаксис: delete([request | response,] <headername>) headername — см. в Приложении. replaceМодифицировать значение HTTP-заголовка. Список поддерживаемых заголовков см. в Приложении. Первый параметр может быть опущен, если заголовок относится к одной группе request или response. Синтаксис: replace([request | response,] <headername>, regex, value) regex ::= string % регулярное выражение value ::= string | condition_name headername — см. в Приложении. Пример 1: Добавить заголовок Referer:
Удалить заголовок:
Переписать заголовок:
Модифицировать заголовок Location:
Пример 2:
encryptШифровать часть пути в HTTP-заголовке. Список поддерживаемых заголовков см. в Приложении. Синтаксис: encrypt([request | response,] <headername>, <url>[, <user_key>[, <add_ip>]]) url ::= string % часть url для фильтрации user_key ::= string % пользовательский ключ шифрования (необязательный параметр) add_ip ::= boolean % добавлять ли IP к ключу шифрования (логическое значение, необязательный параметр) boolean ::= yes | no | true | false headername — см. в Приложении. encrypt_body_urlШифровать часть пути в ссылках тела ответа. Синтаксис: encrypt_body_url(<url>[, <user_key>[, <add_ip>]]) url ::= string % часть url для фильтрации user_key ::= string % пользовательский ключ шифрования (необязательный параметр) add_ip ::= boolean % добавлять ли IP к ключу шифрования (логическое значение, необязательный параметр) boolean ::= yes | no | true | false decrypt_pathДешифровать часть пути запроса. Первый параметр может быть опущен, если заголовок относится к одной группе request или response. Ключ шифрования и флаг "Использовать IP как часть ключа шифрования" — необязательные параметры. Синтаксис: decrypt_path(<path>[, <user_key>[, <add_ip>]]) path ::= string % часть пути для фильтрации user_key ::= string % пользовательский ключ шифрования (необязательный параметр) add_ip ::= boolean % добавлять ли IP к ключу шифрования (логическое значение, необязательный параметр) boolean ::= yes | no | true | false Пример: Шифровать все относительные пути в заголовке Location и теле ответа, и дешифровать путь запроса:
body_injectВставить скрипт в тело ответа. Синтаксис: body_inject(inject_text) inject_text ::= string set_cookie_tokenДобавить в ответ заголовок 'Set-Cookie' со сгенерированным токеном. Синтаксис: set_cookie_token(cookie_name, parameter, expires_date) cookie_name ::= string parameter ::= string expires_date ::= [DD_]HH:MM % время которое будет прибавлено к текущему времени Пример: Реализация CSRF защиты:
encode_cookieШифровать значения Cookie в заголовке Set-Cookie с заданным именем. Синтаксис: encode_cookie(cookie_name[, condition_name][, user_kry_string][, f_encrypt]) cookie_name ::= string condition_name % условие используемое для кодирования (по умолчанию src.ip) user_kry_string ::= string % пользовательский ключ шифрования (по умолчанию "") f_encrypt := true % необходимо шифрование (по умолчанию false) decode_cookieДешифровать токен в заголовке Cookie с заданным именем. Синтаксис: decode_cookie(cookie_name[, condition_key][, user_kry_string][, f_decript]) cookie_name ::= string condition_name % условие используемое для декодирования (по умолчанию src.ip) user_kry_string ::= string % пользовательский ключ шифрования (по умолчанию "") f_encrypt := true % необходимо шифрование (по умолчанию false) Пример: Шифрование и дешифрование Cookie с именем security:
body_replaceМодифицировать тело ответа. Выполняется не более двух (первых) модификаций для каждого ответа. Синтаксис: body_replace(<regex>, <value>) regex ::= string % регулярное выражение value ::= string Пример:
lookup_and_authАутентифицировать пользователя. В случае если IP не указан, запрос маркируется имением пользователя. Синтаксис: lookup_and_auth(<user_login>[, <ip_address>[, <session_timeout>]]) user_login ::= string | condition_name % Логин аутентификации ip_address ::= string | condition_name % IP адрес session_timeout ::= integer % тайм-аут сессии, по умолчанию 0. Пример:
redirectПри блокировке перенаправить пользователя на адрес, который указан в редиректе. Синтаксис: Redirect ::= redirect(RespCode[, RedirectText], Url) RespCode ::= 301 | 302 | 305 | 307 RedirectText ::= string Url ::= string Пример:
inc и decИспользуются для изменения значения переменных, объявленных как def var. Синтаксис: inc(var.<var_name>, integer) dec(var.<var_name>, integer) Пример: На каждый http.response.code = 500 увеличивается значение rps на 1. Если превысили 10 таких запросов за 5 минут, блокируем дальнейшие ответы. Через 5 минут переменная rps будет сброшена в 0:
resetСбросить значения переменных, объявленных как init в def var, в начальное значение. Синтаксис: reset(var.<var_name>) smaИспользуются для подсчета среднего значения в окне времени, которое определяется в переменной как window в def var. Синтаксис: sma(var.<var_name>, integer) Пример: Блокируются запросы, когда среднее время запроса за 30-секундный интервал превысит 2 секунды:
natNAT — подмена сетевых IP-адресов. Пример:
dnatDNAT — подмена IP-адреса назначения. Пример:
port_mappingПорт-форвардинг — перенаправление трафика на указанный IP-адрес c изменением номера порта публикуемого сервиса. Пример:
netmapNetwork mapping — позволяет произвести замену IP-адресов источника или назначения одной сети на другую. Пример:
routePolicy-based routing — позволяет маршрутизировать IP-пакеты на основе расширенной информации, например, сервисов, MAC-адресов или серверов (IP-адресов). Пример:
ignoreИгнорировать ответ от ICAP-сервера. В этом случае, вне зависимости от ответа ICAP-сервера, данные к пользователю уходят без модификации. Пример:
forwardПереслать. В случае успешной расшифровки трафика SSL/TLS копия трафика будет переслана в соответствии с правилом и профилем инспектирования SSL. Пример:
Эта статья была:
Полезна |
Не полезна
Сообщить об ошибке
ID статьи: 1745
Последнее обновление: 19 ноя, 2024
Ревизия: 3
Просмотры: 3
Комментарии: 0
Теги
|