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

Пользовательские правила (Custom Rules) — это мощный инструмент для тонкой настройки защиты. С их помощью вы можете создавать собственные условия для фильтрации трафика и даже переопределять стандартное поведение Servicepipe.

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

Принцип работы

Понимание порядка обработки правил — ключ к их правильной настройке.

  • Последовательная обработка. Система обрабатывает правила строго по порядку, сверху вниз.

  • Приоритет первого совпадения. Как только запрос соответствует всем условиям одного из правил, система немедленно применяет к нему указанное действие. Обработка на этом завершается, и нижестоящие правила игнорируются.

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

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


Обзор интерфейса

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

На вкладке «Пользовательские правила» вы управляете всеми созданными правилами.

  1. Кнопка «+ Добавить правило» открывает форму для создания нового правила.

  2. В таблице отображаются все правила и их параметры:

    • #: Порядковый номер, определяющий приоритет выполнения. Порядок можно изменить, перетаскивая правило за иконку «Переместить» (Move).

    • Enabled: Переключатель для быстрого включения или отключения правила.

    • ID правила: Уникальный системный идентификатор.

    • Имя правила: Название, которое вы задали.

    • Когда активно (Mode): Режим работы правила: Always (Всегда), Only without DDoS (Только без DDoS-атаки) или Only under DDoS (Только во время DDoS-атаки).


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

При нажатии на кнопку «+ Добавить правило» открывается форма редактора. Процесс состоит из четырёх шагов.

Форма создания нового правила

Шаг 1. Задайте имя правила

Введите в поле «Имя правила» понятное название, которое отражает его назначение. Например, «Разрешить API для партнёра X» или «Защита формы входа от брутфорса».

Шаг 2. Настройте условия срабатывания (Выражения матчинга)

Здесь вы определяете, на какие именно запросы будет реагировать правило. Правило сработает, только если запрос соответствует всем заданным условиям (логика «И»).

  1. Нажмите «Параметры +», чтобы добавить блок условия.

  2. В появившемся блоке настройте три элемента:

    • Переменная: Выберите параметр запроса, который нужно проверять (например, Country, URI Path или User agent).

    • Операция: Выберите, как сравнивать переменную со значением (EQUALS, CONTAINS, STARTS_WITH и т.д.).

    • Значение: Укажите значение для сравнения.

  3. Чтобы инвертировать условие, используйте флажок NOT.

  4. Чтобы добавить ещё одно обязательное условие, снова нажмите «+».

Шаг 3. Установите ограничение частоты (Rate Limit)

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

Вы можете настроить два типа ограничений:

  • Учитывать количество всех совпадающих запросов. Ограничение сработает, если общее число запросов, соответствующих условиям, превысит норму. Например, не более 1000 запросов в минуту на страницу входа со всех IP-адресов.

  • Учитывать количество запросов с одного IP-адреса. Ограничение сработает, если один и тот же IP-адрес будет слишком часто отправлять запросы, соответствующие условиям. Например, не более 5 запросов в минуту на страницу входа с одного IP.

Для настройки активируйте нужный переключатель, укажите количество запросов и выберите период (от 1 секунды до 10 минут).

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

На этом шаге вы определяете, что именно нужно сделать с запросом, если он подошёл под все условия. Для каждого класса источников (human, advanced_bot и т.д.) можно задать своё действие.

  • default: Применить стандартную логику Servicepipe. Правило не будет принимать решение для этого класса.

  • pass: Безусловно пропустить запрос.

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

  • js challenge: Отправить клиенту проверку JavaScript.

  • cookie challenge: Проверить, поддерживает ли клиент работу с cookie.

  • captcha: Показать пользователю CAPTCHA.

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


Практические примеры

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

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

Настройка:

  1. Имя правила: Brute-force login protection.

  2. Условия матчинга:

    • Переменная: URI path, Операция: EQUALS, Значение: /login

    • Переменная: Request Method, Операция: EQUALS, Значение: POST

  3. Rate Limit: Активировать «Учитывать количество запросов с одного и того же IP-адреса»:

    • Запросы: 5

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

  4. Действия:

    • simple_automation: block

    • advanced_bot: block

    • likely_human: captcha

    • human: captcha

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

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

Настройка:

  1. Имя правила: Allow Partner X API.

  2. Условия матчинга:

    • Переменная: URI path, Операция: STARTS_WITH, Значение: /api/partner/

    • Переменная: Source Subnets, Операция: IN, Значение: 1.2.3.4/32

  3. Rate Limit: Не настраивать.

  4. Действия:

    • simple_automation: pass

    • advanced_bot: pass

    • likely_human: pass

    • human: pass

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