Настроить наборы правил WAF
-
В консоли управления
выберите каталог, в котором находится профиль WAF. -
Перейдите
в сервис Smart Web Security. -
На панели слева выберите Профили WAF.
-
Выберите профиль, в котором вы хотите настроить наборы правил.
-
Напротив нужного набора нажмите
Настроить. -
Чтобы настроить набор OWASP:
-
Установите Порог аномальности — суммарную аномальность сработавших правил, при которой запрос будет заблокирован.
Рекомендуется начинать с порога аномальности
25и постепенно снижать его до5. Чтобы снизить порог аномальности, отработайте ложные срабатывания WAF на легитимные запросы. Для этого подберите правила из базового набора и настройте правила-исключения.Для тестирования порогов аномальности используйте режим Только логирование (dry run). Режим включается при добавлении в профиль безопасности правила WAF.
-
Установите Уровень паранойи.
Уровень паранойи классифицирует правила по степени агрессивности. Чем выше уровень паранойи, тем лучше уровень защиты, но и больше вероятность ложных срабатываний WAF.
-
Проверьте правила, которые включены в набор. При необходимости включите дополнительные правила или уберите ненужные. При работе с правилами обращайте внимание на значение их аномальности и уровень паранойи.
Любое правило из набора можно сделать блокирующим. WAF заблокирует запрос, который соответствует такому правилу, независимо от порога аномальности. Чтобы сделать правило блокирующим, нажмите
справа от него. Если в профиле безопасности включен режим Только логирование (dry run), WAF не будет блокировать запросы.
-
-
Чтобы настроить набор Yandex Ruleset:
-
Включите группы правил, которые должны работать в наборе.
Yandex Ruleset позволяет настроить каждую группу правил индивидуально.
-
Раскройте и укажите параметры каждой включенной группы правил:
-
(Опционально) Измените Порог аномальности от
1до10000. По умолчанию установлено значение7, поскольку правила набора Yandex Ruleset дают наименьшее количество ложноположительных срабатываний. -
Выберите действие При превышении порога, которое будет выполняться с запросом. Сейчас доступна только блокировка запроса.
-
Отключите правила, которые не должны работать в наборе.
-
Если правило должно сразу блокировать запрос независимо от суммарной аномальности, нажмите
справа от него.
-
-
-
Чтобы настроить набор Yandex ML Ruleset:
- Включите правила, которые должны работать в наборе.
- (Опционально) Измените Порог аномальности от
1до100. По умолчанию установлено значение90. При низком пороге аномальности могут часто происходить ложные срабатывания.
-
Нажмите Сохранить настройки.
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
Вы можете динамически включить все правила из базового набора, если их уровень паранойи не выше значения пользовательской переменной. Для правил, которые настроены динамически, можно вручную изменить параметры. Например, сделать правило блокирующим и сделать активным правило, у которого уровень паранойи выше, чем задан в переменной.
-
Откройте файл конфигурации Terraform и измените фрагмент с описанием профиля WAF
yandex_sws_waf_profile: добавьте блокruleс правилом безопасности или блокdynamic "rule"с правилами, которые настраиваются динамически.# Объявление локальных переменных locals { # В базовом наборе будут активны правила этого уровня паранойи и ниже waf_paranoia_level = <уровень_паранойи> } # Источник данных — набор правил data "yandex_sws_waf_rule_set_descriptor" "source" { name = "<имя_набора>" } # Профиль WAF resource "yandex_sws_waf_profile" "default" { name = "default" ... # Назначаем правило блокирующим — запрос будет заблокирован независимо от порога аномальности rule { rule_id = "<идентификатор_правила_1>" is_enabled = true is_blocking = true } # Назначаем активным правило с уровнем паранойи 4 rule { rule_id = "<идентификатор_правила_2>" is_enabled = true is_blocking = false } # Активируем правила из базового набора, если их уровень паранойи не выше заданного в переменной 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" } # Источник данных OWASP Core Rule Set data "yandex_sws_waf_rule_set_descriptor" "source" { name = local.ruleset_name version = local.ruleset_version } # Профиль WAF resource "yandex_sws_waf_profile" "default" { name = "default" # Базовый набор правил 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 } } } # Назначаем правило блокирующим — запрос будет заблокирован независимо от порога аномальности rule { rule_id = "owasp-crs-v4.0.0-id942330-attack-sqli" is_enabled = true is_blocking = true } # Назначаем активным правило с уровнем паранойи 4 rule { rule_id = "owasp-crs-v4.0.0-id920202-protocol-enforcement" is_enabled = true is_blocking = false } # Активируем правила из базового набора, если их уровень паранойи не выше заданного в переменной 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 } } }Где:
-
rule— описание правила безопасности:rule_id— идентификатор правила.is_enabled— флаг включения или отключения правила.is_blocking— флаг блокировки правила. Если значениеtrue, правило становится блокирующим.
-
dynamic "rule"— динамическая активация правил из базового набора, если их уровень паранойи не выше значения переменнойwaf_paranoia_level. Для правил, которые настроены динамически, можно вручную изменить параметры. Например, сделать правило блокирующим или сделать активным правило, у которого уровень паранойи выше, чем указан в переменной.rule_id— идентификатор правила.is_enabled— флаг включения или отключения правила.is_blocking— флаг блокировки правила. Если значениеtrue, правило становится блокирующим.
Подробнее о параметрах ресурса
yandex_sws_waf_profileв документации провайдера. -
-
Примените изменения:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Вы можете проверить изменение ресурсов в консоли управления
Воспользуйтесь методом REST API update для ресурса WafProfile или вызовом gRPC API WafProfile/Update.
При каждом изменении или добавлении новых правил в профиле WAF включайте режим Только логирование. Активируйте правило только после того, как логи подтвердят его корректную работу. Это поможет избежать ложных срабатываний и обеспечит стабильную работу вашего сайта или веб-приложения.