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

Что такое пользовательские правила, как они работают, как настроить для вашего ресурса.

  • Управлять правилами могут только пользователи с ролью Администратор и Инженер.

  • Настройка правил доступна для ресурсов с режимом защиты Антибот.

  • Для ресурсов с защитой Анти-DDoS функционал может быть скрыт. Фильтрация там включается только в момент атаки и работает по индивидуальным настройкам — добавлять правила вручную не нужно.

Что это

Пользовательские правила — инструмент для ручной настройки фильтрации трафика на уровне L7. Вы указываете, что делать с конкретными типом запросов, а наша система выполняет эти инструкции.

Пример правила: если запрос к разделу /admin пришёл не с вашего рабочего IP-адреса, заблокировать его.

Как работают

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

Система защиты проверяет запросы не по всему списку сразу, а идёт строго по порядку. Сначала она проверяет, попадает ли запрос под условия первого правила. Если нет — идёт ко второму, третьему и так далее, пока не найдёт совпадение.

Как только нужное правило нашлось, система применяет указанную в нём меру защиты: блокирует запрос, пропускает или отправляет на проверку (JavaScript, cookie или CAPTCHA). На этом фильтрация останавливается — оставшиеся правила применяться не будут.

Пример. Вы создали три правила:

  1. Запросы из Индии — блокировать.

  2. Запросы из Казахстана — отдавать в ответ cookie-челлендж.

  3. Запросы к /login — отдавать в ответ JavaScript-челлендж.

Пришёл запрос из Казахстана к /login. Система сначала проверяет, подходит ли он под первое правило. Ответ — нет. Потом проверяет второе правило. Ответ — да, подходит. Значит, клиенту будет отдан cookie-челлендж. Третье и последующие правила не проверяются.

Пользовательские правила занимают не первое место в иерархии механизмов защиты. Система фильтрует запросы поэтапно:

  1. Сначала применяются белые и чёрные списки. Если запрос пришёл с IP-адреса из чёрного списка — сразу блокируется, если из белого — пропускается к ресурсу без дополнительных проверок.

  2. Затем применяется список верифицированных ботов и геоограничения.

  3. Запросы, которые не попали под эти фильтры, проходят проверку на соответствие пользовательским правилам. Если нашлось подходящее правило, оно применяется.

  4. Если ни одно правило не подошло — запросы фильтруются с помощью индивидуального защитного профиля.

Как создать

Рекомендуем при настройке правил использовать разделы Лог запросов и Аналитика. В них содержатся сведения о входящем трафике, которые помогут выявить параметры атакующих или вашей полезной автоматизации.

Примеры настройки правил вы можете посмотреть ниже в этой статье.

Шаг 1. Перейдите к созданию правила

В панели управления перейдите в раздел Защита приложенийРесурсы.

Раздел со списком ресурсов

Найдите ресурс, для которого нужно задать правила. Нажмите на три точки () в конце строки и выберите Пользовательские правила.

Контекстное меню с действиями для ресурса

Нажмите + Создать правило.

Кнопка создания нового правила

Откроется окно для создания правила. Остальные шаги выполняйте в нём.

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

Шаг 2. Задайте номер и описание

Настройка номера и описания

Номер — определяет позицию правила в очереди. Нумерация начинается с нуля.

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

Помните: система проверяет правила по порядку. Как только запрос совпал с каким-то правилом, оно будет выполнено — а нижестоящие нет.

Ставьте конкретные правила (например, допуск партнёра по IP-адресу) выше масштабных (например, блокировки запросов из целой страны). Иначе, если партнёр отправит запрос из запрещённой страны, система заблокирует его раньше, чем доберётся до разрешающего правила.

Описание — текстовый комментарий. По сути, это название правила, которое вы прописываете для себя. По названию будет легко найти нужное правило в списке.

Примеры хорошего описания: «Разрешить API для партнёра X» или «Защита формы входа от брутфорса».

Шаг 3. Настройте условия для правила

Можно задать три типа условий: по трафику, лимитам запросов и статусу DDoS-атаки. Правило будет применяться к запросам, которые совпадают одновременно со всеми условиям, которые вы указали.

Пример: вы задали условия по трафику Страна — Россия и Путь URL начинается с /login , а по лимиту запросов — После достижения лимита 100 запросов в минуту на один IP. Тогда правило:

  • Сработает для пользователей из России, которые уже прислали к странице входа больше 100 запросов за минуту. Выполняются все условия сразу.

  • Не сработает для пользователей из России, которые прислали к странице входа меньше 100 запросов за минуту. Не выполняется условие по лимиту запросов на один IP.

  • Не сработает, если на страницу авторизации пришёл запрос из Китая. Не выполняется условие Страна — Россия.

  • Не сработает, если запрос пришёл из России, но на главную страницу сайта. Не выполняется условие Путь URL начинается с /login.

Трафик

Пример настроек для трафика

Как добавить условие:

  1. Нажмите + Добавить условие.

  2. Выберите параметр запроса, который нужно проверять (например, Страна, Путь URL или Метод запроса).

  3. Выберите оператор сравнения (например, равно, содержит или начинается с).

  4. Укажите значение.

В таблице ниже мы собрали правила заполнения, ограничения и примеры для каждого параметра. Кликните по заголовку, чтобы раскрыть её.

Особенности работы с каждым параметром
Название параметра Описание параметра Доступные операторы Требования к значению Пример условия

Страна

Географическое местоположение IP источника

в/ не в

Выберите значение из выпадающего списка

Страна в Russian Federation

ASN

Номер автономной системы (ASN), которой принадлежит IP источника

Используйте число с префиксом AS (например, AS13335 или as13335).

Длина номера должна составлять от 1 до 10 цифр.

В одном поле можно указать до 100 уникальных номеров.

Один и тот же номер не может быть указан одновременно в списках в и не в.

ASN в AS13238

Query string

Параметры, которые указаны в URL после знака ?

равно, содержит

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Можно указать только ключ или пару «ключ-значение».

Длина строки — от 1 до 200 символов.

Не начинайте строку с пробела, символа / или ?.

Используйте только символы, допустимые для URL.

Query string содержит debug=true

Путь URL

Путь URL запроса (часть URL после домена и до знака ?)

равно, начинается с

Всегда начинайте строку с символа /.

Не указывайте доменное имя, например site.com.

Не указывайте протокол, например https://.

Не добавляйте параметры после знака ?.

Используйте только символы, допустимые для URL.

Путь URL начинается с /admin

Сегмент пути URL

Любая часть пути URL

равно, содержит, начинается с, заканчивается на

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Длина значения — от 1 до 200 символов.

Можно указать любую часть пути: название раздела (api), расширение (.php) или даже набор символов из середины адреса (1/use).

Используйте только символы, допустимые для URL.

Сегмент пути URL содержит backup

Referer

Значение заголовка Referer — то есть адрес страницы, с которой пользователь перешёл на ваш ресурс

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Длина значения — до 200 символов.

Укажите полный URL-адрес, домен или его часть.

Не начинайте строку с пробела.

Используйте только символы, допустимые для URL.

Referer начинается с google.com

Content-Type

Формат передаваемых в запросе данных, например: JSON, обычный текст, изображения или данные из веб-форм

равно / не равно, содержит / не содержит, начинается с / не начинается с,заканчивается на / не заканчивается на

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Длина значения — от 1 до 200 символов.

Не начинайте строку с пробела.

Укажит тип целиком или его часть.

Content-Type равно application/json

Имя хоста

Значение заголовка Host (доменное имя сервера, к которому обращается клиент)

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Длина значения — до 200 символов.

Не начинайте строку с пробела.

Укажите домен целиком или его часть.

Не указывайте протокол, например https://.

Не указывайте путь, например /main .

Имя хоста равно api.site.com

User-Agent

Значение заголовка User-Agent (идентификатор браузера, устройства или программного клиента, который делает запрос)

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Длина значения — до 200 символов.

Не начинайте строку с пробела.

Используйте нужный регистр (например, Chrome и chrome — это разные значения).

User-Agen равно BadBot/1.0

X-Forwarded-For

Значение заголовка X-Forwarded-For (цепочка IP-адресов прокси-серверов, через которые прошёл запрос до попадания на ваш ресурс)

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Длина значения — до 200 символов.

Не начинайте строку с пробела.

Укажите конкретные IP-адреса или их диапазоны.

X-Forwarded-For содержит 203.0.113.10

Cookie_any (OR)

Имена и значения cookie-файлов (правило сработает при наличии в запросе хотя бы одной из указанных связок «имя + значение»)

Для имени: равно / не равно

Для значения: равно, содержит, начинается с, заканчивается на, любое

Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку + Или).

Длина имени — до 200 символов.

Длина значения — до 4096 символов.

Имя равно user_type

Значение начинается с premium

ИЛИ

Имя равно partner_id

Значение равно any

Cookie_all (AND)

Имена и значения cookie-файлов (правило сработает при наличии в запросе всего набора указанных связок «имя + значение» одновременно)

Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку + И).

Длина имени — до 200 символов.

Длина значения — до 4096 символов.

Имя равно promo_code

Значение равно active

И

Имя равно is_subscriber

Значение равно yes

Заголовок

Имена и значения HTTP-заголовков

Особенности параметра

Для разных заголовков действует логика И: запрос должен содержать все указанные пары «имя + значение».

Для нескольких значений одного заголовка действует логика ИЛИ: достаточно совпадения с любым из них.

Эти условия работают одновременно: для разных заголовков действует И, для нескольких значений одного — ИЛИ.

Пример. Вы указали заголовки X-Env: prod, X-Region: ru и X-Region: us.

Правило сработает, если запрос содержит X-Env: prod и X-Region: ru или X-Env: prod и X-Region: us.

Правило не сработает, только для X-Env: prod и для X-Region: ru.

Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку + Или ).

Длина имени — до 200 символов.

Длина значения — до 200 символов.

Имя равно X-App-Version

Значение начинается с 2.0

Метод запроса

Тип используемого HTTP-метода

в

Выберите из выпадающего списка один или несколько методов

Метод запроса в POST

Хэши

Уникальный «цифровой отпечаток» устройства (хеш), одного из трёх уровней точности на выбор: Servicepipe hash (loose), Servicepipe hash (medium) или Servicepipe hash (strict)

Виды хэшей

SP hash (loose) — нестрогий хэш цифрового отпечатка клиента. Учитывает только базовые признаки TLS (набор шифров); совпадение по этому хэшу означает «похожий TLS-профиль». Подходит для первичного объединения трафика по «семействам» клиентов.

SP hash (medium) — хэш цифрового отпечатка клиента средней строгости. Учитывает TLS-профиль, параметры соединения и общий HTTP-отпечаток; совпадение по этому хэшу означает «похожий клиент и способ формирования запроса». Подходит для более точной, но достаточно устойчивой группировки трафика.

SP hash (strict) — строгий хэш цифрового отпечатка клиента. Учитывает TLS-профиль, параметры соединения, общий HTTP-отпечаток и набор HTTP-заголовков; совпадение по этому хэшу означает «почти одинаковый запрос», а любые заметные изменения в заголовках чаще всего приводят к новому значению хэша. Подходит для точного сопоставления конкретных сценариев и клиентов, но более чувствителен к вариациям.

Можно добавить до 100 значений в одно условие (используйте кнопку + Или).

Значение должно быть положительным числом от 1 до 200 символов.

Servicepipe hash (strict) в 1234567890

Исходные подсети

IP-адрес или подсеть отправителя

Можно добавить до 200 значений в одно условие (используйте кнопку + Или).

Укажите конкретные IP-адреса или их диапазоны (подсети).

Можно указывать адреса форматов IPv4 (например, 192.168.1.1) и IPv6 (например, 2001:db8::1).

Для указания диапазонов используйте формат CIDR — запись со слэшем (например, /24 для всей сети или /32 для одного адреса).

Исходные подсети в 192.168.1.0/24 или 2001:db8::1

Хостинговая подсеть

Трафик с IP-адресов, которые принадлежат хостинг-провайдерам или дата-центрам

Не задаются

Не задаются

Запрос от нового пользователя

Трафик от пользователей, которые зашли на ресурс впервые и чей «цифровой отпечаток» (хеш) пока не зафиксирован в нашей базе

Лимиты запросов

Пример настроек для лимитов

Лимит запросов — это порог по количеству входящих запросов за определённый период (например, за минуту). Он позволяет ограничить работу правила.

Без лимита правило применяется ко всем запросам, которые подходят под заданные условия (их вы прописали на вкладке Трафик). С лимитом поведение системы меняется — она начинает учитывать количество таких запросов и работать по одному из двух сценариев:

Применять правило до достижения лимита

Правило применяется к запросам, которые подходят под ваши условия, пока не наберётся указанный лимит. Когда лимит будет исчерпан, система перестанет использовать это правило и отправит запросы на проверку к другим правилам.

Зачем это нужно: для обеления трафика — пропуска доверенных пользователей или полезной автоматизации к вашим ресурсам без дополнительных проверок. Лимит здесь выступает страховкой на случай, если злоумышленники научатся имитировать обеляемый трафик.

Пример: вы настроили условия Страна — Россия, User-Agent содержит MyBusinessBot/1.0 и лимит 100 запросов в минуту, чтобы пропускать такой трафик к ресурсу без проверок. Тогда:

  • Первые 100 запросов пройдут на ресурс свободно.

  • Начиная со 101-го правило перестанет применяться. Система направит все последующие запросы на проверку к другим правилам.

В счётчик попадают запросы, которые были пропущены к ресурсу или отправлены на проверку. Запросы, к которым правило применило блокирующее действие, в счётчике не учитываются.

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

Пример: вы задали лимит 1000 запросов в минуту и действие «Блокировать». К вам пришло 1200 запросов, система заблокировала их по этому правилу — в счётчик попадёт 0 запросов.

Применять правило после превышения лимита

Система не использует правило, пока количество запросов, подходящих под ваши условия, не превысит лимит. При достижении лимита правило начнёт применяться ко всем последующим запросам.

Зачем это нужно: для создания блокирующих правил. Этот режим позволяет не беспокоить обычных пользователей проверками, пока их активность в норме. Но когда запросов станет слишком много, система включит защиту (например, попросит пройти капчу).

Пример: вы настроили условие Страна — не Россия, включили параметр Хостинговая подсеть, лимит 100 запросов в минуту и действие — CAPTCHA.

  • На первые 100 запросов ваше правило не отреагирует.

  • Со 101-го запроса система начнёт показывать капчу всем, кто приходит от хостинг-провайдеров из других стран.

Как настроить:

  1. Выберите тип лимита (или настройте оба сразу):

    • Общий — система суммирует все запросы, которые подходят под ваши условия по трафику. Как только их общее количество превысит лимит, правило сработает для всех запросов, независимо от того, с какого IP они пришли.

    • На один IP — система считает подходящие под ваши условия запросы отдельно для каждого IP-адреса. Правило применится только к тем адресам, с которых пришло превышение.

  2. Укажите параметры лимита:

    • Запросы — количество запросов, которое система должна зафиксировать. Максимальное значение — 5000.

    • Период — время, за которое будут подсчитываться эти запросы (от 1 секунды до 10 минут).

  3. Выберите режим применения правила:

    • До достижения лимита — правило работает всё время, пока лимит не достигнут. После достижения лимита перестаёт работать. Подходит для обеления трафка.

    • После превышения лимита — правило включается только при достижении лимита. Подходит для блокировки трафика.

Статус DDoS-атаки

Настройки статуса DDoS-атаки

Выберите, когда должно работать правило:

  • Всегда — правило активно постоянно.

  • Пока нет DDoS-атаки — пока нет DDoS-атаки, правило работает; как только началась атака, правило перестаёт работать.

  • Во время DDoS-атаки — пока идёт атака, правило работает; как только атака закончилась, правило перестаёт работать.

Шаг 4. Выберите действия

Настройка действий

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

1. Блокировать всё (включая мобильное приложение) — полная блокировка любого трафика, попавшего под правило.

По умолчания система защиты пропускает запросы от вашего мобильного приложения без проверок. Настройка Блокировать всё отменяет этот автопропуск — блокироваться будет вообще весь трафик, попавший под правило.

Зачем это нужно: чтобы остановить злоумышленников, которые научились имитировать запросы вашего мобильного приложения и пытаются обойти защиту.

2. Настроить разные реакции системы для разных классов источника. Например, можно пропускать на ресурс людей, а ботам выдавать капчу.

Эта настройка не затрагивает запросы от мобильных приложений. Система продолжит пропускать их автоматически.

Перед вами четыре класса источников:

  • Бот — запрос точно отправил бот

  • Вероятно бот — с высокой вероятностью запрос отправил бот, но система не уверена на 100%

  • Вероятно человек — с высокой вероятностью запрос отправил человек, но система не уверена на 100%

  • Человек — запрос точно отправил человек

Установите для каждого нужное действие:

  • По умолчанию — правило не будет принимать решение для этого класса. Запрос будет проанализирован в рамках индивидуального профиля защиты.

  • Пропустить — разрешить запрос без дополнительных проверок.

  • Заблокировать — немедленно заблокировать запрос.

  • JS-челлендж — отправить JavaScript проверку.

  • Cookie-челлендж — проверить, поддерживает ли клиент работу с cookie.

  • CAPTCHA — отправить капчу для подтверждения, что запрос отправлен человеком.

Шаг 5. Сохраните настройки

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

Кнопка для сохранения правила

Шаг 6. Включите правило

Созданное правило появится в общем списке в разделе Пользовательские правила. Чтобы оно начало работать, нажмите на переключатель в столбце Включено.

Переключатель для включения и отключения правила

Как управлять

В разделе Пользовательские правила можно управлять правилами прямо из списка:

  • Переместить: используйте иконку Move, чтобы изменить приоритет (номер). Правила в списке выполняются сверху вниз — просто перетащите строку на нужную позицию.

  • Посмотреть детали: используйте иконку >, чтобы увидеть все заданные условия и выбранные действия, не заходя в режим редактирования.

  • Посмотреть статистику: нажмите на иконку графика, чтобы увидеть, сколько раз сработало правило за выбранный период (например, за последние 15 минут или сутки). Здесь отображается количество запросов, попавших под условия правила, и применённых к ним действий.

  • Редактировать: нажмите на три точки (…​) в конце строки и выберите Редактировать. Здесь вы сможете изменить любые параметры правила.

  • Удалить: нажмите на три точки (), выберите Удалить и подтвердите действие. Восстановить удалённое правило невозможно.

  • Создать правило выше: нажмите на три точки () и выберите пункт Создать правило выше, чтобы быстро добавить новое правило над текущим. Это позволит задать новому правилу более высокий приоритет.

  • Создать правило ниже: нажмите на три точки () и выберите пункт Создать правило ниже, чтобы добавить новое правило под текущим. У созданного правила будет более низкий приоритет.

Действия над правилами

Примеры правил

Защита формы входа от брутфорса

Задача: Ограничить количество попыток входа с одного IP-адреса до 5 в минуту.

Настройка:

  1. Описание правила: Brute-force login protection.

  2. Условия для трафика:

    • Переменная: Путь URL, Операция: равно, Значение: /login

    • Переменная: Метод запроса, Операция: равно, Значение: POST

  3. Лимиты запросов:

    • Активировать переключатель На один IP

    • Запросы: 5

    • Период: 1 минута

  4. Действия:

    • Бот: Заблокировать

    • Вероятно бот: Заблокировать

    • Вероятно человек: CAPTCHA

    • Человек: CAPTCHA

Разрешение доступа для API партнёра

Задача: Разрешить все запросы к /api/partner/ с IP-адреса 1.2.3.4.

Настройка:

  1. Описание правила: Allow Partner X API.

  2. Условия для трафика:

    • Переменная: Путь URL, Операция: начинается с, Значение: /api/partner/

    • Переменная: Исходные подсети, Операция: в, Значение: 1.2.3.4/32

  3. Лимиты запросов: не настраивать.

  4. Действия:

    • Бот: Пропустить

    • Вероятно бот: Пропустить

    • Вероятно человек: Пропустить

    • Человек: Пропустить

Правило «Разрешение доступа для API партнёра» необходимо разместить в самом верху списка, чтобы оно сработало раньше любых блокирующих правил.