Создать профиль WAF
- В консоли управления
выберите каталог, в котором вы хотите создать профиль WAF. - Перейдите
в сервис Smart Web Security. - На панели слева выберите Профили WAF и нажмите Создать профиль WAF.
- Введите имя профиля.
- (Опционально) Введите описание.
- (Опционально) Добавьте профилю метки.
- Включите один или несколько наборов правил: OWASP Core Rule Set
, Yandex Ruleset, Yandex ML Ruleset. Чтобы посмотреть правила, которые входят в набор, нажмите на строку с набором правил. - Выберите версию набора правил.
-
Если включено несколько наборов:
-
Выберите условие срабатывания профиля:
Вердикт DENY получен хотя бы в одном выбранном наборе— запрос распознан как угроза хотя бы одним набором правил.Вердикт DENY получен в каждом выбранном наборе— запрос распознан как угроза всеми добавленными наборами правил.
-
Расположите наборы по приоритету, в котором правила набора будут анализировать запрос. Чем выше набор, тем выше приоритет.
-
- Нажмите Создать.
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
locals { # В базовом наборе будут активны правила этого уровня паранойи и ниже waf_paranoia_level = <уровень_паранойи> } # Источник данных — набор правил data "yandex_sws_waf_rule_set_descriptor" "source" { name = "<имя_набора>" version = "<версия_набора>" } # Профиль WAF resource "yandex_sws_waf_profile" "default" { name = "<имя_WAF_профиля>" # Набор правил rule_set { action = "<действие>" is_enabled = <true_или_false> priority = <приоритет> # Базовый набор правил core_rule_set { inbound_anomaly_score = <порог_аномальности> paranoia_level = local.waf_paranoia_level rule_set { name = "<имя_набора>" version = "<версия_набора>" id = "<идентификатор_набора>" type = "<тип_набора>" } } } # Активируем правила из базового набора, если их уровень паранойи не выше заданного в переменной waf_paranoia_level dynamic "rule" { for_each = [ for rule in data.yandex_sws_waf_rule_set_descriptor.source.rules : rule if rule.paranoia_level <= local.waf_paranoia_level ] content { rule_id = rule.value.id is_enabled = true is_blocking = false } } }Пример описания профиля WAF в конфигурации Terraform
# Объявление локальных переменных locals { # В базовом наборе будут активны правила этого уровня паранойи и ниже waf_paranoia_level = 1 # Идентификация набора правил OWASP Core Ruleset ruleset_name = "OWASP Core Ruleset" ruleset_version = "4.0.0" ruleset_id = "OWASP_CRS_4_0_0" ruleset_type = "CORE" } # Источник данных — набор правил data "yandex_sws_waf_rule_set_descriptor" "source" { name = local.ruleset_name version = local.ruleset_version } # Профиль WAF resource "yandex_sws_waf_profile" "default" { name = "waf-profile-owasp" # Набор правил rule_set { action = "DENY" is_enabled = true priority = 1 # Базовый набор правил core_rule_set { inbound_anomaly_score = 2 paranoia_level = local.waf_paranoia_level rule_set { name = local.ruleset_name version = local.ruleset_version id = local.ruleset_id type = local.ruleset_type } } } # Активируем правила из базового набора, если их уровень паранойи не выше заданного в переменной waf_paranoia_level dynamic "rule" { for_each = [ for rule in data.yandex_sws_waf_rule_set_descriptor.source.rules : rule if rule.paranoia_level <= local.waf_paranoia_level ] content { rule_id = rule.value.id is_enabled = true is_blocking = false } } }Где:
-
waf_paranoia_level— уровень паранойи классифицирует правила по степени агрессивности. Чем выше уровень паранойи, тем лучше уровень защиты, но и больше вероятность ложных срабатываний WAF. -
data "yandex_sws_waf_rule_set_descriptor"— источник данных Terraform для набора базовых правил. Из источника данных вы можете получить список правил и их идентификаторы. -
resource "yandex_sws_waf_profile"— ресурс Terraform для управления профилем WAF.-
name— имя профиля WAF. -
rule_set— блок правил:-
action— действие, которое нужно выполнить при срабатывании набора правил:RULE_SET_ACTION_UNSPECIFIED— разрешить запрос.DENY— заблокировать запрос.CAPTCHA— отправить запрос в SmartCaptcha.
-
is_enabled— флаг включения или отключения набора правил. -
priority— приоритет набора правил. Возможные значения от 1 до 1000000. -
core_rule_set— блок базовых правил:-
inbound_anomaly_score— порог аномальности. Это суммарная аномальность сработавших правил, при которой запрос будет заблокирован. Возможные значения от 2 до 10000. Чем выше заданное значение, тем больше вероятность того, что запрос, удовлетворяющий правилам, является атакой. -
paranoia_level— уровень паранойи, классифицирует правила по степени агрессивности. Чем выше уровень паранойи, тем лучше защита, но больше вероятность ложных срабатываний. Возможные значения от 1 до 4.Примечание
Уровень паранойи не влияет на включение или отключение правил, он используется только как рекомендация для пользователя включить все правила со значением
paranoia_levelменьше или равно заданному. -
rule_set— блок с указанием набора правил. Указывается идентификатор, имя, версия и тип набора правил.Возможные значения
name version id type OWASP Core Ruleset4.8.0OWASP_CRS_4_8_0COREOWASP Core Ruleset4.0.0OWASP_CRS_4_0_0COREYandex Ruleset0.1.1YARS_0_1_1YAYandex Ruleset0.1.0YARS_0_1_0YAYandex ML RulesetlatestYAMS_LATESTML
-
-
-
dynamic "rule"— динамическая активация правил из базового набора, если их уровень паранойи не выше заданного в переменнойwaf_paranoia_level. Для динамически настроенных правил можно вручную изменить параметры. Например, сделать правило блокирующим или сделать активным правило, у которого уровень паранойи выше, чем указан в переменной.rule_id— идентификатор правила.is_enabled— флаг включения или отключения правила.is_blocking— флаг, который назначает правило блокирующим.
-
Подробнее о параметрах ресурса
yandex_sws_waf_profileв документации провайдера. -
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
После создания профиля WAF вы можете изменить набор базовых правил и настроить набор правил-исключений.
Воспользуйтесь методом REST API create для ресурса WafProfile или вызовом gRPC API WafProfile/Create.