Custom rules (Пользовательские правила)

Последние изменения: 08.08.2024

Custom Rules (Пользовательские правила)

Важно! Профиль защиты, созданный с помощью правил в разделе Custom Rules, работает только при активированной постоянной защите от ботов.
Данный функционал находится в меню редактирования настроек ресурса. Доступен он только для ресурсов работающих с включенной постоянной защитой от ботов. 


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

Пользовательские правила содержат:

  • Выражения, определяющие критерии, по которым система сопоставляет входящие к защищаемому приложению запросы.

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

Иерархия правил

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

Поэтому размещайте правила сверху вниз от частного к общему. Выше рекомендуется выносить «узкие» условия, а ниже должны располагаться правила более широкого действия. Для перемещения правил внутри списка используйте drag and drop.

Выражения сопоставления

Выражение может быть простым — учитывающим один параметр запроса (например, URI Path) или составным — учитывающим несколько параметров запроса.

Простые выражения

Простые выражения имеют следующую структуру:

    (<параметр_1> <оператор сравнения> <значение_1>)
    <логический оператор>
    (<параметр_1> <оператор сравнения> <значение_2>)
    ...
    

Где:

  • Параметры задают свойства, связанные с HTTP-запросом.

  • Операторы сравнения определяют, как значения должны соотноситься с фактическими данными запроса, чтобы выражение возвращало true.

  • Значения представляют собой данные, связанные с параметрами. При оценке правила эти значения сравниваются с фактическими данными, полученными из запроса.

Составные выражения

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

Составные выражения имеют следующую структуру:

    <простое выражение>
    <логический оператор AND>
    <простое выражение>
    <логический оператор AND>
    ...
    

Составные выражения позволяют генерировать сложные, узконаправленные правила.

Параметры

Когда HTTP-запрос достигает сети Сервиспайп, создается набор пар "параметр - значение", с которым и происходит сопоставление по критериям заданным с помощью выражений в правилах. Этот набор существует до тех пор, пока обрабатывается текущий запрос.

Пользовательские правила поддерживают следующий набор параметров запроса:

Параметр

Описание

Пример значения

URI path

Путь URI запроса. 

Важно: путь должен начинаться со слеша (/).

/path1/index

URI Query String

Вся query string без разделителя (?)

utm_referrer=about%3Ablank

Country

2-буквенный код страны в формате ISO 3166-1 Alpha 2.

RU

Cookie

Весь файл cookie в виде строки.

name=background value=light

User agent

Заголовок запроса, содержащий информацию об операционной системе клиента и веб-браузере.

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/65.0.3325.181 Safari/537.36

Hostname

Имя хоста, используемое в полном URI запроса.

www.example.ru

X-forwarded-for

Полный HTTP-заголовок X-Forwarded-For.

195.0.112.186

Source Subnets

Диапазон адресов в CIDR нотации.

1.2.3.0/24

From hosting subnets

Признак, определяемый с помощью аналитики Сервиспайп. 

Данный параметр имеет булевый тип.

MIME Type

Имя заголовка в HTTP-запросе - Content-Type.

text/javascript; charset=utf-8

Header

Заголовки HTTP-запросов в виде пары «произвольное имя заголовка - его значение».

name=custom1 value=sdFF235fdf

Request Method

HTTP метод, возвращаемый в виде строки заглавных символов.

GET

Referer

Заголовок запроса HTTP Referer, содержащий адрес веб-страницы, которая ссылается на текущую запрашиваемую страницу.

https://news.example.ru/article/onepager

Операторы сравнения

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

  1. Equals: Используется для точного совпадения значения параметра запроса.

  2. Contains: Используется для поиска по вхождению введенного значения в значение параметра запроса.

  3. Starts_with: Используется для поиска на соответствие началу значения параметра запроса.

  4. Ends_with: Используется для поиска на соответствие окончанию значения параметра запроса.

  5. Any: Используется, когда совпадение должно быть при любом значении параметра запроса.

Рейт-лимитное условие

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

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

Действия для классов

В каждом правиле для каждого класса источника трафика можно указать, какое действие должна применить система в случае, когда запрос, поступивший от этого класса, удовлетворяет выражению соответствия.

Доступны следующие действия:

  • pass: запрос будет пропущен на сервера оригинации.

  • block: запрос будет заблокирован.

  • js challenge: проверка заключается в отправке JavaScript-кода, содержащего задачу. Легитимные браузеры смогут решить задачу прозрачно. DDoS-боты, как правило, не могут пройти данную проверку.

  • cookie challenge: проверка заключается в отправке веб-кук, которые клиент должен проставить и вернуться с ними обратно (с помощью HTTP 302 Redirect).

  • captcha challenge: происходит редирект на страницу с капчей, при успешном прохождении которой пользователь возвращается на ресурс.

О классификации

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

Наш классификатор выделяет 4 класса источников запросов:

  1. simple_automation: запросы от ботов, кроме запросов от верифицированных ботов (Google, Yandex и пр.).

  2. advanced_bot: запросы с частичной или полной поддержкой стека браузера, но имеющие признаки ботов.

  3. likely_human: запросы от источника, похожего на легитимного пользователя, но не полностью соответствующие модели легитимного трафика.

  4. human: запросы от легитимных пользователей.

Включение правила

По умолчанию вновь созданные правила имеют статус «Выключено». Чтобы включить или выключить правило, используйте переключатель в строке с правилом на странице со списком правил.

Создание правила

По клику на кнопку «Новое правило» вы попадете на страницу создания правила. Страница делится на 4 блока которые нужно последовательно заполнить:

  1. Имя правила (Обязательное). 
    Дайте правилу описательное имя, чтобы потом было проще ориентироваться на странице со списком правил.

  2. Выражения матчинга (Не обязательное).
    С помощью имеющегося набора параметров опишите паттерн трафика для которого вы хотели бы изменить поведение системы.
    Важно! Если правило будет созданно без единого выражения оно будет распространяться на весь трафик поступающий на защищаемый ресурс. Таким образом, с помощью такого правила можно переопределить дефолтную политику системы фильтрации.

  3. Рейтлимитное условие (Не обязательное).
    При необходимости укажите с каких значений скорости поступающих совпадающих запросов к ним должны применяться действия.

  4. Действия для классов (Не обязательное).
    Важно! Если не выбрать действие для класса, а оставить default, то для этого класса данное правило не будет оказывать влияния. Соответственно, если для всех классов в правиле оставить default, то правило будет работать в режиме мониторинга. При котором запросы могут метчиться с этим правилом и в логах запросов это будет видно. При этом никаких действий в рамках этого правила к ним применяться не будет.

Помогла ли вам статья?