[Документация Yandex Cloud](../../index.md) > [Yandex Smart Web Security](../index.md) > [Концепции](index.md) > Правила

# Правила

Правила позволяют группировать [условия](conditions.md) отбора HTTP-запросов с [действиями](#rule-action), которые будут выполнятся с этими запросами, а также ранжировать приоритет выполнения правил между собой.

Приоритет правила выставляется с помощью числового параметра от `1` до `1000000`.

{% note info %}

Чем меньше значение параметра, тем больший приоритет у правила. Приоритеты преднастроенных правил:
* базовое правило по умолчанию — `1000000`;
* правило Smart Protection с полной защитой — `999900`.

{% endnote %}

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

В сервисе предусмотрены следующие типы правил:
* [Базовые](#base-rules)
* [Smart Protection](#smart-protection-rules)
* [Web Application Firewall](#waf-rules)
* [Advanced Rate Limiter](#arl-rules)

Также существует внутреннее [сервисное правило](#service-rule), которое может срабатывать при атаках.

Подробнее в разделе [Управление правилами](../operations/index.md#rules).

## Базовые правила {#base-rules}

_Базовое правило_ — правило, которое по заданным условиям разрешает, запрещает или направляет трафик в [Yandex SmartCaptcha](../../smartcaptcha/index.md). Применяется для простой фильтрации трафика по определенным параметрам.

В каждом [профиле безопасности](profiles.md) предусмотрено _базовое правило по умолчанию_ с самым низким приоритетом (`1000000`), с помощью которого разрешается или запрещается весь трафик.

{% note info %}

Если для базового правила по умолчанию установлено действие `Запретить` и запросы отправляются на проверку в SmartCaptcha, добавьте базовое правило, разрешающее запросы к капче. Адрес разрешенного запроса соответствует регулярному выражению: `/tmgrdfrend.*`. Установите для правила приоритет выше, чем у правил, которые отправляют запросы на капчу.

{% endnote %}

## Правила Smart Protection {#smart-protection-rules}

_Smart Protection_ — правило, которое отправляет трафик по заданным условиям на автоматический анализ с помощью алгоритмов машинного обучения и поведенческого анализа. Это правило обеспечивает защиту от DDoS L7. Если правило отсутствует или работает в режиме `Только логирование`, защита не применяется и трафик поступает к защищаемому ресурсу. В зависимости от выбранного [действия](#rule-action) подозрительные запросы отправляются в SmartCaptcha для дополнительной верификации или блокируются.

## Правила WAF + Smart Protection {#waf-rules}

Правила Web Application Firewall задействуют [профиль WAF](waf.md) для анализа трафика на соответствие [наборам базовых правил WAF](waf.md#rules-set). Эти правила также включают защиту Smart Protection от DDoS L7. В зависимости от выбранного [действия](#rule-action) подозрительные запросы отправляются в [SmartCaptcha](../../smartcaptcha/index.md) для дополнительной верификации или блокируются.

Для проверки запросов, соответствующих правилам Smart Protection и Web Application Firewall, вы можете использовать следующие варианты капчи SmartCaptcha:

* `По умолчанию` — контролируется на стороне Yandex Cloud, параметры капчи:
  * [Основное задание](../../smartcaptcha/concepts/tasks.md#main-task) — **Чекбокс**.
  * [Дополнительное задание](../../smartcaptcha/concepts/tasks.md#additional-task) — ![image](../../_assets/console-icons/picture.svg) **Силуэты**.
  * Сложность дополнительного задания — **Легкая**.
  * Внешний вид — **Стандартный**.
        
  Плата за использование капчи `По умолчанию` включена в стоимость Smart Web Security.
* `Собственная капча` — вы можете [настроить](../../smartcaptcha/operations/create-captcha.md) сложность, типы основного и дополнительного заданий, а также внешний вид капчи.

  {% note info %}

  Чтобы использовать собственную капчу, выберите в ее настройках опцию **Отключить проверку домена**.

  {% endnote %}
   
  Плата за использование собственной капчи взимается в соответствии с [тарификацией](../../smartcaptcha/pricing.md) SmartCaptcha.

## Правила Advanced Rate Limiter {#arl-rules}

Правило [Advanced Rate Limiter](arl.md) вычисляет количество запросов, пришедших за определенный промежуток времени. Запросы считаются после того, как они были разрешены правилами Smart Protection и Web Application Firewall. Поэтому для правил ARL действует свой приоритет, который не зависит от приоритета других правил.

Правила ARL позволяют задать лимиты на весь трафик или на его сегменты.

В отличие от правил Smart Protection и WAF, правила ARL задаются в профиле ARL.

## Сервисное правило {#service-rule}

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

При срабатывании сервисного правила в [логах](logging.md) появится отметка `sws_service_rule`.

**Примеры логов**

* В сервисе Smart Web Security:

    ```text
    matched_rule_name: "sws_service_rule",
    matched_rule_type: "SMART_PROTECTION",
    matched_rule_verdict: "DENY",
    ```

* В сервисе [Yandex Application Load Balancer](../../application-load-balancer/index.md):

    ```json
    "matched_rule": {
      "dry_run": "false",
      "rule_name": "sws_service_rule",
      "rule_type": "SMART_PROTECTION",
      "verdict": "DENY"
    }
    ```

## Действие правил {#rule-action}

Действия для базовых правил:
* _Запретить_ трафик, параметры которого соответствуют условиям.
* _Разрешить_ трафик, параметры которого соответствуют условиям.

Действия для правил Smart Protection и Web Application Firewall:
* _Полная защита_ — трафик проверяется на основе ML-моделей и поведенческого анализа. Подозрительные запросы отправляются в SmartCaptcha.

     {% note warning %}

     Для корректной работы вашего приложения обрабатывайте HTTP-запросы с динамической загрузкой контента в режиме _Защита API_.

     {% endnote %}

* _Защита API_ используется для эндпоинтов:
     
     * мобильных приложений;
     * на которые совершаются автоматизированные вызовы;
     * на которых обрабатываются запросы с динамической загрузкой контента (например, `ajax`, `xhr`, `iframe` и так далее).
          
  Трафик проверяется на основе ML-моделей и поведенческого анализа. Запросы не отправляются в SmartCaptcha, что позволяет совершать легитимные API-вызовы к защищаемым ресурсам. Специальные политики DDoS-защиты блокируют только явные попытки атак. Если запрос в режиме полной защиты был перенаправлен на капчу, то для API он может быть пропущен к защищенному ресурсу.

Действия для правил Advanced Rate Limiter: 

* _Блокировать запросы свыше лимита_ — когда количество запросов превысит заданный лимит за определенное время, остальные запросы будут блокироваться до окончания периода лимита. Клиент, отправивший запрос, получит ошибку `429`.

* _Временно блокировать все запросы_ — когда количество запросов превысит заданный лимит за определенное время, остальные запросы будут блокироваться на фиксированный период времени, а не до конца периода лимита. Клиент, отправивший запрос, получит ошибку `429`. Период блокировки можно указать от 1 секунды до 24 часов.

* _Отправлять на капчу запросы свыше лимита_ — когда количество запросов превысит заданный лимит за определенное время, остальные запросы будут направляться в SmartCaptcha. 

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

    {% note warning %}

    Не используйте капчу для HTTP-запросов с динамической загрузкой контента (`ajax`, `xhr`, `iframe`) и запросов к мобильным приложениям.

    {% endnote %}
    
Для унификации страниц ответа клиентам при срабатывании правил можно создать собственные [шаблоны ответов](response-templates.md).

Запросы, которые были разрешены всеми правилами и пропущены к защищаемому ресурсу, называются _легитимными_.

## Общие принципы работы правил {#rules-order}

* Все правила в профиле срабатывают одновременно, при этом одному запросу могут соответствовать несколько правил. Итоговое действие для запроса определяется правилом с наивысшим приоритетом.
* Назначайте более высокий приоритет:
     * правилам, которые разрешают запросы;
     * правилам с условиями фильтрации по конкретным параметрам.

  Иначе к запросу могут примениться общие правила с более широкими условиями.
* Если для среза трафика вы используете WAF‑правило, отдельное правило Smart Protection от DDoS-атак для этого же среза не требуется, оно уже включено в WAF‑правило. Поэтому у WAF‑правил есть режимы полной защиты и защиты API.
* В режиме защиты API запросы в SmartCaptcha не отправляются. Используйте этот режим для автоматизированного трафика, мобильных приложений и запросов с динамической загрузкой контента (например, `ajax`, `xhr`, `iframe`).
* Правила профиля ARL применяется после профиля безопасности и могут блокировать часть легитимных запросов. Поэтому если вы настроили разрешающие правила в профиле безопасности, продублируйте их в профиле ARL.
* Правила в режиме `Только логирование` не влияют на обработку трафика — вместо них применяется следующее по приоритету правило в боевом режиме.

### Профиль безопасности {#security-profile-rules-order}

Правила в профиле безопасности применяются к трафику согласно приоритету: чем меньше число, тем выше приоритет.

**Рекомендуемый порядок приоритетов**

1. Разрешающее правило для служебных маршрутов капчи.
1. Разрешающие правила с условиями на трафик.
1. Блокирующие правила с условиями на трафик.
1. Правила Smart Protection и WAF + Smart Protection в режиме _Защита API_ с условиями на трафик для эндпоинтов, где нельзя показывать капчу.
1. Правила Smart Protection и WAF + Smart Protection в режиме _Полная защита_ с условиями на трафик.
1. Правила Smart Protection и WAF + Smart Protection в режиме _Полная защита_ на весь трафик.

**Пример настройки правил**

Приоритет | Имя правила | Действие | Описание правила
--- | --- | --- | ---
8000 | allow-captcha | Разрешить | Правило для разрешения служебных путей капчи
9000 | allow-by-list | Разрешить | Базовое для белых IP-адресов
9100 | block-by-list | Запретить | Базовое для черных IP-адресов
9200 | block-by-geo | Запретить | Базовое по регионам
900000  | api-protection | Защита API | Smart Protection для публичного API
999900 | sp-rule-1 | Полная защита | Smart Protection из готового шаблона
1000000 |  | Разрешить | Базовое по умолчанию

Для базового правила по умолчанию устанавливается действие `Разрешить`, пока остальные правила находятся в режиме `Только логирование`. При переключении правил в боевой режим установите базовому правилу по умолчанию действие `Запретить`.

### Профиль ARL {#arl-profile-rules-order}

Правила в профиле ARL применяются к трафику, который уже прошел проверку правилами профиля безопасности. Профиль ARL имеет собственную систему приоритетов, которая не зависит от приоритетов правил в профиле безопасности. Чем меньше число, тем выше приоритет правила ARL. Порядок выполнения правил приведен в таблице.

Приоритет | Имя правила | Действие | Описание правила
--- | --- | --- | ---
1000 | arl-rule-1 | Блокировать запросы свыше лимита | Ограничение общей нагрузки на ресурс
2000 | arl-rule-2 | Временно блокировать все запросы | Защита от ботов, парсеров, брутфорса, спама
3000 | arl-rule-3 | Отправлять на капчу запросы свыше лимита | Ограничение запросов к API

Правила ARL можно настраивать с любыми значениями приоритета. В режиме `Только логирование` правила ARL не блокируют запросы, но фиксируют информацию о превышении лимитов в логах.