Пользовательские правила
Что такое пользовательские правила, как они работают, как настроить для вашего ресурса.
|
Что это
Пользовательские правила — инструмент для ручной настройки фильтрации трафика на уровне L7. Вы указываете, что делать с конкретными типом запросов, а наша система выполняет эти инструкции.
Пример правила: если запрос к разделу /admin пришёл не с вашего рабочего IP-адреса, заблокировать его.
Как работают
Вы создаёте правила в интерфейсе панели управления. Все они собираются в список, где у каждого есть свой номер.
Система защиты проверяет запросы не по всему списку сразу, а идёт строго по порядку. Сначала она проверяет, попадает ли запрос под условия первого правила. Если нет — идёт ко второму, третьему и так далее, пока не найдёт совпадение.
Как только нужное правило нашлось, система применяет указанную в нём меру защиты: блокирует запрос, пропускает или отправляет на проверку (JavaScript, cookie или CAPTCHA). На этом фильтрация останавливается — оставшиеся правила применяться не будут.
Пример. Вы создали три правила:
-
Запросы из Индии — блокировать.
-
Запросы из Казахстана — отдавать в ответ cookie-челлендж.
-
Запросы к
/login— отдавать в ответ JavaScript-челлендж.
Пришёл запрос из Казахстана к /login. Система сначала проверяет, подходит ли он под первое правило. Ответ — нет. Потом проверяет второе правило. Ответ — да, подходит. Значит, клиенту будет отдан cookie-челлендж. Третье и последующие правила не проверяются.
|
Пользовательские правила занимают не первое место в иерархии механизмов защиты. Система фильтрует запросы поэтапно:
|
Как создать
|
Рекомендуем при настройке правил использовать разделы Примеры настройки правил вы можете посмотреть ниже в этой статье. |
Шаг 1. Перейдите к созданию правила
В панели управления перейдите в раздел Защита приложений → Ресурсы.
Найдите ресурс, для которого нужно задать правила. Нажмите на три точки (…) в конце строки и выберите Пользовательские правила.
Нажмите + Создать правило.
Откроется окно для создания правила. Остальные шаги выполняйте в нём.
Шаг 2. Задайте номер и описание
Номер — определяет позицию правила в очереди. Нумерация начинается с нуля.
По умолчанию новое правило падает в низ списка и получает следующий свободный номер (+1). Вы можете отредактировать это поле, введя другое число.
|
Помните: система проверяет правила по порядку. Как только запрос совпал с каким-то правилом, оно будет выполнено — а нижестоящие нет. Ставьте конкретные правила (например, допуск партнёра по IP-адресу) выше масштабных (например, блокировки запросов из целой страны). Иначе, если партнёр отправит запрос из запрещённой страны, система заблокирует его раньше, чем доберётся до разрешающего правила. |
Описание — текстовый комментарий. По сути, это название правила, которое вы прописываете для себя. По названию будет легко найти нужное правило в списке.
Примеры хорошего описания: «Разрешить API для партнёра X» или «Защита формы входа от брутфорса».
Шаг 3. Настройте условия для правила
Можно задать три типа условий: по трафику, лимитам запросов и статусу DDoS-атаки. Правило будет применяться к запросам, которые совпадают одновременно со всеми условиям, которые вы указали.
Пример: вы задали условия по трафику Страна — Россия и Путь URL начинается с /login , а по лимиту запросов — После достижения лимита 100 запросов в минуту на один IP. Тогда правило:
-
Сработает для пользователей из России, которые уже прислали к странице входа больше 100 запросов за минуту. Выполняются все условия сразу.
-
Не сработает для пользователей из России, которые прислали к странице входа меньше 100 запросов за минуту. Не выполняется условие по лимиту запросов на один IP.
-
Не сработает, если на страницу авторизации пришёл запрос из Китая. Не выполняется условие
Страна — Россия. -
Не сработает, если запрос пришёл из России, но на главную страницу сайта. Не выполняется условие
Путь URL начинается с /login.
Трафик
Как добавить условие:
-
Нажмите
+ Добавить условие. -
Выберите параметр запроса, который нужно проверять (например,
Страна,Путь URLилиМетод запроса). -
Выберите оператор сравнения (например,
равно,содержитилиначинается с). -
Укажите значение.
В таблице ниже мы собрали правила заполнения, ограничения и примеры для каждого параметра. Кликните по заголовку, чтобы раскрыть её.
Особенности работы с каждым параметром
| Название параметра | Описание параметра | Доступные операторы | Требования к значению | Пример условия |
|---|---|---|---|---|
|
Географическое местоположение IP источника |
|
Выберите значение из выпадающего списка |
|
|
Номер автономной системы (ASN), которой принадлежит IP источника |
Используйте число с префиксом AS (например, AS13335 или as13335). Длина номера должна составлять от 1 до 10 цифр. В одном поле можно указать до 100 уникальных номеров. Один и тот же номер не может быть указан одновременно в списках |
|
|
|
Параметры, которые указаны в URL после знака |
|
Можно добавить до 100 значений в одно условие (используйте кнопку Можно указать только ключ или пару «ключ-значение». Длина строки — от 1 до 200 символов. Не начинайте строку с пробела, символа Используйте только символы, допустимые для URL. |
|
|
Путь URL запроса (часть URL после домена и до знака |
|
Всегда начинайте строку с символа /. Не указывайте доменное имя, например site.com. Не указывайте протокол, например https://. Не добавляйте параметры после знака ?. Используйте только символы, допустимые для URL. |
|
|
Любая часть пути URL |
|
Можно добавить до 100 значений в одно условие (используйте кнопку Длина значения — от 1 до 200 символов. Можно указать любую часть пути: название раздела ( Используйте только символы, допустимые для URL. |
|
|
Значение заголовка Referer — то есть адрес страницы, с которой пользователь перешёл на ваш ресурс |
Можно добавить до 100 значений в одно условие (используйте кнопку Длина значения — до 200 символов. Укажите полный URL-адрес, домен или его часть. Не начинайте строку с пробела. Используйте только символы, допустимые для URL. |
|
|
|
Формат передаваемых в запросе данных, например: JSON, обычный текст, изображения или данные из веб-форм |
|
Можно добавить до 100 значений в одно условие (используйте кнопку Длина значения — от 1 до 200 символов. Не начинайте строку с пробела. Укажит тип целиком или его часть. |
|
|
Значение заголовка Host (доменное имя сервера, к которому обращается клиент) |
Можно добавить до 100 значений в одно условие (используйте кнопку Длина значения — до 200 символов. Не начинайте строку с пробела. Укажите домен целиком или его часть. Не указывайте протокол, например Не указывайте путь, например |
|
|
|
Значение заголовка User-Agent (идентификатор браузера, устройства или программного клиента, который делает запрос) |
Можно добавить до 100 значений в одно условие (используйте кнопку Длина значения — до 200 символов. Не начинайте строку с пробела. Используйте нужный регистр (например, Chrome и chrome — это разные значения). |
|
|
|
Значение заголовка X-Forwarded-For (цепочка IP-адресов прокси-серверов, через которые прошёл запрос до попадания на ваш ресурс) |
Можно добавить до 100 значений в одно условие (используйте кнопку Длина значения — до 200 символов. Не начинайте строку с пробела. Укажите конкретные IP-адреса или их диапазоны. |
|
|
|
Имена и значения cookie-файлов (правило сработает при наличии в запросе хотя бы одной из указанных связок «имя + значение») |
Для имени: Для значения: |
Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку Длина имени — до 200 символов. Длина значения — до 4096 символов. |
ИЛИ
|
|
Имена и значения cookie-файлов (правило сработает при наличии в запросе всего набора указанных связок «имя + значение» одновременно) |
Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку Длина имени — до 200 символов. Длина значения — до 4096 символов. |
И
|
|
|
Имена и значения HTTP-заголовков Особенности параметраДля разных заголовков действует логика И: запрос должен содержать все указанные пары «имя + значение». Для нескольких значений одного заголовка действует логика ИЛИ: достаточно совпадения с любым из них. Эти условия работают одновременно: для разных заголовков действует И, для нескольких значений одного — ИЛИ. Пример. Вы указали заголовки Правило сработает, если запрос содержит Правило не сработает, только для |
Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку Длина имени — до 200 символов. Длина значения — до 200 символов. |
|
|
|
Тип используемого HTTP-метода |
|
Выберите из выпадающего списка один или несколько методов |
|
|
Уникальный «цифровой отпечаток» устройства (хеш), одного из трёх уровней точности на выбор:
|
Можно добавить до 100 значений в одно условие (используйте кнопку Значение должно быть положительным числом от 1 до 200 символов. |
|
|
|
IP-адрес или подсеть отправителя |
Можно добавить до 200 значений в одно условие (используйте кнопку Укажите конкретные IP-адреса или их диапазоны (подсети). Можно указывать адреса форматов IPv4 (например, 192.168.1.1) и IPv6 (например, 2001:db8::1). Для указания диапазонов используйте формат CIDR — запись со слэшем (например, /24 для всей сети или /32 для одного адреса). |
|
|
|
Трафик с IP-адресов, которые принадлежат хостинг-провайдерам или дата-центрам |
Не задаются |
Не задаются |
— |
|
Трафик от пользователей, которые зашли на ресурс впервые и чей «цифровой отпечаток» (хеш) пока не зафиксирован в нашей базе |
Лимиты запросов
Лимит запросов — это порог по количеству входящих запросов за определённый период (например, за минуту). Он позволяет ограничить работу правила.
Без лимита правило применяется ко всем запросам, которые подходят под заданные условия (их вы прописали на вкладке Трафик). С лимитом поведение системы меняется — она начинает учитывать количество таких запросов и работать по одному из двух сценариев:
Применять правило до достижения лимита
Правило применяется к запросам, которые подходят под ваши условия, пока не наберётся указанный лимит. Когда лимит будет исчерпан, система перестанет использовать это правило и отправит запросы на проверку к другим правилам.
Зачем это нужно: для обеления трафика — пропуска доверенных пользователей или полезной автоматизации к вашим ресурсам без дополнительных проверок. Лимит здесь выступает страховкой на случай, если злоумышленники научатся имитировать обеляемый трафик.
Пример: вы настроили условия Страна — Россия, User-Agent содержит MyBusinessBot/1.0 и лимит 100 запросов в минуту, чтобы пропускать такой трафик к ресурсу без проверок. Тогда:
-
Первые 100 запросов пройдут на ресурс свободно.
-
Начиная со 101-го правило перестанет применяться. Система направит все последующие запросы на проверку к другим правилам.
|
В счётчик попадают запросы, которые были пропущены к ресурсу или отправлены на проверку. Запросы, к которым правило применило блокирующее действие, в счётчике не учитываются. Если в этом режиме вы установите блокирующее действие, правило продолжит блокировать трафик без учёта установленного лимита. Пример: вы задали лимит 1000 запросов в минуту и действие «Блокировать». К вам пришло 1200 запросов, система заблокировала их по этому правилу — в счётчик попадёт 0 запросов. |
Применять правило после превышения лимита
Система не использует правило, пока количество запросов, подходящих под ваши условия, не превысит лимит. При достижении лимита правило начнёт применяться ко всем последующим запросам.
Зачем это нужно: для создания блокирующих правил. Этот режим позволяет не беспокоить обычных пользователей проверками, пока их активность в норме. Но когда запросов станет слишком много, система включит защиту (например, попросит пройти капчу).
Пример: вы настроили условие Страна — не Россия, включили параметр Хостинговая подсеть, лимит 100 запросов в минуту и действие — CAPTCHA.
-
На первые 100 запросов ваше правило не отреагирует.
-
Со 101-го запроса система начнёт показывать капчу всем, кто приходит от хостинг-провайдеров из других стран.
Как настроить:
-
Выберите тип лимита (или настройте оба сразу):
-
Общий— система суммирует все запросы, которые подходят под ваши условия по трафику. Как только их общее количество превысит лимит, правило сработает для всех запросов, независимо от того, с какого IP они пришли. -
На один IP— система считает подходящие под ваши условия запросы отдельно для каждого IP-адреса. Правило применится только к тем адресам, с которых пришло превышение.
-
-
Укажите параметры лимита:
-
Запросы— количество запросов, которое система должна зафиксировать. Максимальное значение — 5000. -
Период— время, за которое будут подсчитываться эти запросы (от 1 секунды до 10 минут).
-
-
Выберите режим применения правила:
-
До достижения лимита— правило работает всё время, пока лимит не достигнут. После достижения лимита перестаёт работать. Подходит для обеления трафка. -
После превышения лимита— правило включается только при достижении лимита. Подходит для блокировки трафика.
-
Статус DDoS-атаки
Выберите, когда должно работать правило:
-
Всегда— правило активно постоянно. -
Пока нет DDoS-атаки— пока нет DDoS-атаки, правило работает; как только началась атака, правило перестаёт работать. -
Во время DDoS-атаки— пока идёт атака, правило работает; как только атака закончилась, правило перестаёт работать.
Шаг 4. Выберите действия
Укажите, что система защиты должна сделать с запросом, который попал под условия правила. Всего есть два варианта, описанные ниже.
1. Блокировать всё (включая мобильное приложение) — полная блокировка любого трафика, попавшего под правило.
По умолчания система защиты пропускает запросы от вашего мобильного приложения без проверок. Настройка Блокировать всё отменяет этот автопропуск — блокироваться будет вообще весь трафик, попавший под правило.
Зачем это нужно: чтобы остановить злоумышленников, которые научились имитировать запросы вашего мобильного приложения и пытаются обойти защиту.
2. Настроить разные реакции системы для разных классов источника. Например, можно пропускать на ресурс людей, а ботам выдавать капчу.
|
Эта настройка не затрагивает запросы от мобильных приложений. Система продолжит пропускать их автоматически. |
Перед вами четыре класса источников:
-
Бот— запрос точно отправил бот -
Вероятно бот— с высокой вероятностью запрос отправил бот, но система не уверена на 100% -
Вероятно человек— с высокой вероятностью запрос отправил человек, но система не уверена на 100% -
Человек— запрос точно отправил человек
Установите для каждого нужное действие:
-
По умолчанию— правило не будет принимать решение для этого класса. Запрос будет проанализирован в рамках индивидуального профиля защиты. -
Пропустить— разрешить запрос без дополнительных проверок. -
Заблокировать— немедленно заблокировать запрос. -
JS-челлендж— отправить JavaScript проверку. -
Cookie-челлендж— проверить, поддерживает ли клиент работу с cookie. -
CAPTCHA— отправить капчу для подтверждения, что запрос отправлен человеком.
Как управлять
В разделе Пользовательские правила можно управлять правилами прямо из списка:
-
Переместить: используйте иконку
Move, чтобы изменить приоритет (номер). Правила в списке выполняются сверху вниз — просто перетащите строку на нужную позицию. -
Посмотреть детали: используйте иконку
>, чтобы увидеть все заданные условия и выбранные действия, не заходя в режим редактирования. -
Посмотреть статистику: нажмите на иконку графика, чтобы увидеть, сколько раз сработало правило за выбранный период (например, за последние 15 минут или сутки). Здесь отображается количество запросов, попавших под условия правила, и применённых к ним действий.
-
Редактировать: нажмите на три точки (
…) в конце строки и выберитеРедактировать. Здесь вы сможете изменить любые параметры правила. -
Удалить: нажмите на три точки (
…), выберитеУдалитьи подтвердите действие. Восстановить удалённое правило невозможно. -
Создать правило выше: нажмите на три точки (
…) и выберите пунктСоздать правило выше, чтобы быстро добавить новое правило над текущим. Это позволит задать новому правилу более высокий приоритет. -
Создать правило ниже: нажмите на три точки (
…) и выберите пунктСоздать правило ниже, чтобы добавить новое правило под текущим. У созданного правила будет более низкий приоритет.
Примеры правил
Защита формы входа от брутфорса
Задача: Ограничить количество попыток входа с одного IP-адреса до 5 в минуту.
Настройка:
-
Описание правила: Brute-force login protection.
-
Условия для трафика:
-
Переменная:
Путь URL, Операция:равно, Значение:/login -
Переменная:
Метод запроса, Операция:равно, Значение:POST
-
-
Лимиты запросов:
-
Активировать переключатель
На один IP -
Запросы:
5 -
Период:
1 минута
-
-
Действия:
-
Бот:
Заблокировать -
Вероятно бот:
Заблокировать -
Вероятно человек:
CAPTCHA -
Человек:
CAPTCHA
-
Разрешение доступа для API партнёра
Задача: Разрешить все запросы к /api/partner/ с IP-адреса 1.2.3.4.
Настройка:
-
Описание правила: Allow Partner X API.
-
Условия для трафика:
-
Переменная:
Путь URL, Операция:начинается с, Значение:/api/partner/ -
Переменная:
Исходные подсети, Операция:в, Значение:1.2.3.4/32
-
-
Лимиты запросов: не настраивать.
-
Действия:
-
Бот:
Пропустить -
Вероятно бот:
Пропустить -
Вероятно человек:
Пропустить -
Человек:
Пропустить
-
| Правило «Разрешение доступа для API партнёра» необходимо разместить в самом верху списка, чтобы оно сработало раньше любых блокирующих правил. |