UserGate Policy Language (UPL)
Правила контентной фильтрацииПрефиксы
Условияcategory, morphology, scenario, time, url, user. request.header.Referer — Список URL, в котором указаны рефереры для текущей страницы. Свойстваname, desc, enabled, rule_log, virus_heuristic. Пример
Правила межсетевого экранаПрефиксы
Условияservice, scenario, time, url, user, hip_profile. Свойстваname, desc, enabled, rule_log, reject_with, ips_profile, l7_profile. Пример
Правила NAT и маршрутизацииПрефиксы
Тип правила определяется действием (Action):
Условияsrc.zone, src.geoip, src.ip, src.mac. service, scenario, time, url, user. Свойстваname, desc, enabled, rule_log, direction, target_ip, target_snat, snat_target_ip, Пример
Правила Captive-порталаПрефиксы
УсловияСвойстваname, desc, enabled, rule_log, profile. Пример
Правила инспектирования SSLПрефиксы
Пересылка определяется действием (Action):
Условияtime, service, user, category. Свойстваname, desc, enabled, rule_log, ssl_profile, ssl_forward_profile. block_invalid_cert, check_revoc_cert, block_expired_cert, block_self_signed_cert. Пример
Правила инспектирования SSHПрефиксы
УсловияСвойстваname, desc, enabled, rule_log, block_ssh_shell, block_ssh_exec, block_sftp, ssh_command. Пример
DNS-правилаПрефиксы
УсловияСвойстваname, desc, enabled, dns_server. Пример
DoS-правилаПрефиксы
Условияtime, service, user, scenario, Свойстваname, desc, enabled, rule_log, profile. Пример
ICAP-правилаПрефиксы
Действие (Action):
Условияurl, category, user, service, http.method, response.header.Content-Type. Свойстваname, desc, enabled, rule_log, profile. Пример
Правила защиты почтового трафикаПрефиксы
Условияuser, service, envelope_from, envelope_to. Свойстваname, desc, enabled, rule_log, mark_hdr, mark, antispam_usergate, dnsbl. Пример
Правила reverse-проксиПрефиксы
Условияsrc.zone, src.geoip, src.ip, src.mac. user, request.header.User-Agent, url.port. Свойстваname, desc, enabled, rule_log, profile, certificate, cert_auth_enabled, is_https, ssl_profile, Пример
Правила веб-безопасностиПрефиксы
Условияsrc.zone, src.geoip, src.ip, src.mac. Свойстваname, desc, enabled, rule_log. enable_adblock, safe_search, search_history_logging, social_sites_block, enable_injector, custom_injector, url_list_exclusions. Пример
Правила пропускной способностиПрефиксы
Условияsrc.zone, src.geoip, src.ip, src.mac. time, user application, service, scenario, Свойстваname, desc, enabled, rule_log, bandwidth_pool. Пример
Правила инспектирования туннелейПрефиксы
Условияsrc.zone, src.geoip, src.ip, src.mac. СвойстваПример
Правила веб-порталаПрефиксы
Условияurl, user, url.domain. Свойстваicon, ssl_profile, certificate, additional_url, rdp_check_session_alive, transparent_auth. Пример
Правила VPN-сервераПрефиксы
Условияsrc.zone, src.geoip, src.ip, src.mac. user, Свойстваprofile, auth_profile, vpn_network, interface. Пример
Правила VPN-клиентаПрефиксы
Свойстваprofile, interface, server_address. last_error, status, connection_time — информационные поля, недоступные для редактирования. Пример
Правила сценариевПрефиксы
УсловияСвойстваoperation_mode, trigger, duration. Условия сценарияКатегория URL (url_category)УсловияСвойстваcount_interval, max_event_count, scond_type Обнаружение вируса (virus_detection)СвойстваПриложение (app)УсловияСвойстваcount_interval, max_event_count, scond_type СОВ (ips)СвойстваТип котента (mime_type)УсловияСвойстваcount_interval, max_event_count, scond_type Размер пакета (net_packet_size)СвойстваСессий c одного IP (sessions_per_ip)СвойстваОбъем трафика (traffic)Свойстваtraffic_limit, period, scond_type Проверка состояния (health_check)УсловияСвойстваhealth_check_method, health_result, health_request_timeout, health_type_request, health_answer_timeout, count_interval, max_event_count, scond_type Пример
Правила балансировки нагрузки TCP/UDPПрефиксы
Условияsrc.zone, src.geoip, src.ip, src.mac. service, url.address, url.port. Свойстваscheduler, real_server, ipvs_fallback monitor_kind, monitor_service, monitor_request, monitor_response, monitor_interval, monitor_timeout, monitor_failurecount Пример
Правила балансировки ICAPПрефиксы
СвойстваПример
Правила балансировки reverse-проксиПрефиксы
СвойстваПример
Действие (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. Пример:
Свойства (properties) — это некие атрибуты правила, например, name или enabled. Они используются для предоставления дополнительной информации в процессе обработки правил. Синтаксис свойств точно такой же, как у действий. Синтаксис: property = prop_name | prop_name '(' list_params ')' prop_name ::= name | desc | id | rule_log | enabled | scenario list_params ::= value ',' list_params name и descАтрибуты имя и описание для правила. Синтаксис: Name ::= name '(' string|word ')' Description ::= desc '(' string ')' Пример:
enabledАтрибут, который включает или выключает работу правила. Синтаксис: Enable ::= enabled '(' boolean ')' boolean ::= yes | no | true | false % (по умолчанию false) rule_logУстанавливает атрибут журналирования правила. Значение session действительно только для правил межсетевого экрана, защиты от dos-атак и пропускной способности. Синтаксис: Logging ::= rule_log '(' boolean | session ')' LoggingFwRule ::= rule_log '(' boolean , interval, burst')' boolean ::= yes | no | true | false % (по умолчанию no) interval ::= "integer/[s,m,h,d]" burst ::= integer interval — среднее число пакетов, попадающих под условие limit в единицу времени (1/s, 1/m, 1/h, 1/d) , default = 3/h; profileУстанавливает профиль правила. Синтаксис: Profile ::= profile '(' string | word | list ')' certificateСертификат, используемый для поддержки HTTPS-соединения. Действительно только для правил reverse-прокси. Синтаксис: CertAuthEnabled ::= cert_auth_enabled '(' boolean ')' Certificate ::= certificate '(' certificate_name ')' certificate_name ::= string | word gatewayШлюз. Имя одного из существующих шлюзов. Действительно только для правил NAT и маршрутизации, и для условий сценария "Проверка состояния". Синтаксис: Gateway ::= gateway '(' string | word ')' Свойства правил межсетевого экранаreject_withУстанавливает способ, с помощью которого будет блокироваться трафик. Действительно только для правил межсетевого экрана. Синтаксис: Reject ::= reject_with '(' "tcp-reset-both" | "tcp-rst" | "host-unreach" ')' fragmentedПроверка на фрагментированность пакетов. Действительно только для правил межсетевого экрана. Синтаксис: Fragmented ::= fragmented '(' boolean ')' boolean ::= yes | no | true | false yes — проверяются только фрагментированные пакеты; ips_profileУстанавливает профиль IPS. Действительно только для правил межсетевого экрана. Синтаксис: IPS_Profile ::= ips_profile '(' string | word ')' l7_profileУстанавливает профиль приложения. Действительно только для правил межсетевого экрана. Синтаксис: L7_Profile ::= l7_profile '(' string | word ')' Свойства правил инспектирования SSL
|