INTEGRITY Документация

Обновление управляемых правил WAF

2022-05-04 Cloudflare начал обновление с предыдущая версия управляемых правил WAF на новую WAF Managed Rules, открыв миграцию для первой группы подходящих зон. Сейчас на WAF Managed Rules могут перейти все зоны, включая партнёрские аккаунты.

Cloudflare постепенно обновляет все зоны до новой версии WAF Managed Rules. Вы также можете запустить процесс обновления зоны вручную в панели управления Cloudflare или через API. Обновление необратимо — после перехода на новые WAF Managed Rules вернуться к предыдущей версии нельзя.

Если вы используете старый дашборд, после завершения обновления ваши правила будут отображаться в другом интерфейсе в Security > WAF > Управляемые правила вкладку. Если вы используете новый дашборд безопасности, ваши обновлённые правила будут показаны в Security > Правила безопасности.

Кроме того, после обновления API управляемых правил WAF перестанут работать.

Основные преимущества

Новая версия WAF Managed Rules даёт следующие преимущества по сравнению с предыдущей:

Подробнее о преимуществах WAF Managed Rules см. в нашем запись в блоге.


Влияние обновления

Вы сможете обновить все ваши зоны, у которых нет переопределений WAF на основе URI. После перехода на новый WAF к вашей зоне будет применяться та же защита.

Большинство настроек предыдущей версии управляемых правил WAF будет перенесено в новую версию, но некоторые специфические конфигурации, изначально определённые в OWASP ModSecurity Core Rule Set, будут потеряны — при необходимости их придётся создать заново в новых WAF Managed Rules.

Для пользователей API: API для управления предыдущей версией управляемых правил WAF перестанут работать после обновления. Для управления новыми WAF Managed Rules вы должны использовать Rulesets API.

Настройки, которые будут перенесены при обновлении

Процесс обновления создаст эквивалентную конфигурацию для следующих настроек управляемых правил WAF:

Конфигурация набора правил OWASP будет обновлена частично. Подробности см. в следующем разделе.

Настройки, которые будут потеряны при обновлении

Процесс обновления частично перенесёт настройки OWASP ModSecurity Core Rule Set, доступного в предыдущей версии управляемых правил WAF.

Будут перенесены следующие настройки OWASP:

Следующие настройки OWASP будут not перенесены, поскольку между правилами двух версий нет прямого соответствия:

Чтобы заменить эти настройки, вам потребуется заново настроить Cloudflare OWASP Core Ruleset в WAF Managed Rules под ваши нужды, а именно переопределения тегов/правил. Дополнительную информацию о настройке нового OWASP Core Ruleset см. в Cloudflare OWASP Core Ruleset.

Настройки, которые помешают обновлению

Если в зоне Переопределения WAF на основе URI (доступно только через API), у вас не будет возможности перейти на WAF Managed Rules. Чтобы перейти на WAF Managed Rules, необходимо:

  1. Удалите все существующие переопределения WAF на основе URI с помощью Удаление переопределения WAF (операция API).
  2. Следуйте описанному ниже процессу обновления.

Изменения в панели управления Cloudflare

После завершения обновления панель управления Cloudflare будет отображать ваши правила в:

В отличие от старых управляемых правил WAF, глобального переключателя включения WAF больше нет. Вместо этого каждый управляемый набор правил развёртывается в зоне отдельно.

Подробнее о развёртывании WAF Managed Rules в панели управления Cloudflare см. Развёртывание управляемого набора правил WAF в дашборде.

Изменения в API

После завершения обновления API для работы с управляемыми правилами WAF перестанут работать. Это следующие API:

Для работы с WAF Managed Rules необходимо использовать Rulesets API. Подробнее о развёртывании WAF Managed Rules через API см. Развёртывание управляемого набора правил WAF через API (зона).

Изменения в Terraform

После завершения обновления следующие ресурсы Terraform для настройки управляемых правил WAF перестанут работать:

Эти ресурсы поддерживались в Terraform-провайдере Cloudflare только до версии 3.35. Версия 4.x больше не поддерживает эти ресурсы.

Для управления конфигурацией новых WAF Managed Rules через Terraform необходимо использовать cloudflare_ruleset (ресурсы).


Подходящие зоны

Фаза 2 (с 2022-09-19)

На этапе 2 обновление доступно всем зонам. Точная процедура обновления зависит от вашего тарифа Cloudflare.

Примечание: Зоны, в которых Переопределения WAF на основе URI, которыми можно было управлять только через API, не смогут сразу перейти на новые WAF Managed Rules. Перед миграцией необходимо удалить эти переопределения (overrides).

Фаза 1 (с 2022-05-04)

На фазе 1 обновление стало доступно части подходящих зон, которые должны были соответствовать следующим требованиям:


Запуск обновления

Запустить обновление WAF можно в панели управления Cloudflare или через API.

Через панель управления

  1. Войдите в дашборд Cloudflare, а затем выберите свой аккаунт и зону.

  2. A) Если вы используете старую панель управления:

    • Перейдите в Security > WAF > Управляемые правила вкладку.

    Б) Если вы используете новый дашборд безопасности:

    1. Перейдите в Правила безопасности .

      Перейдите в Правила безопасности ↗
    2. Выберите Перейти к обновлению Managed rules.

    Если вы клиент Enterprise, дашборд покажет следующий баннер:

    Баннер обновления, отображаемый клиентам Enterprise.

    Если вы клиент Professional/Business, панель управления покажет следующий баннер:

    Баннер обновления, отображаемый клиентам Pro/Business.
  3. В баннере обновления выберите Проверка конфигурации. Этот баннер отображается только в подходящих зонах.

  4. Просмотрите предложенную конфигурацию WAF. Вы можете скорректировать конфигурацию, например редактирование конфигурации WAF Managed Rules или создание исключения , чтобы пропустить выполнение наборов правил или отдельных правил.

  5. Закончив просмотр, выберите Deploy чтобы развернуть новую конфигурацию WAF Managed Rules.

    Если вы клиент Professional/Business, Cloudflare развернёт новую конфигурацию WAF, а затем отключит предыдущую версию WAF. Процесс обновления может занять пару минут.

    Если вы клиент Enterprise, обе реализации WAF будут включены одновременно, когда вы выберете Deploy, чтобы вы могли проверить новую конфигурацию. Дополнительные указания см. в шагах следующего раздела.

Проверьте новую конфигурацию WAF и завершите обновление (только для клиентов Enterprise)

Если вы клиент Enterprise, после развёртывания новой конфигурации WAF обе реализации WAF будут включены одновременно. На этом этапе (называемом режимом валидации) вы можете работать с обеими реализациями WAF Managed Rules в панели управления Cloudflare, которая будет показывать баннер обновления, пока вы не завершите переход. Новые WAF Managed Rules будут выполняться раньше предыдущей версии.

  1. Используйте текущий режим валидации, чтобы проверить поведение новой конфигурации WAF в Security Events. Дополнительную информацию см. в Анализ поведения нового WAF в Security Events.

  2. Когда вы закончите проверку конфигурации с обоими включёнными WAF, выберите Готово к обновлению в баннере обновления, а затем выберите Отключение предыдущей версии. Эта операция завершит обновление и отключит предыдущую версию WAF.

Когда обновление завершится, панель управления покажет все ваши обновлённые правила в:

Чтобы проверить, завершилось ли обновление, обновите страницу панели управления.

Использование API

  1. Используйте Проверка совместимости обновления WAF для проверки того, может ли зона обновиться до нового WAF с учётом текущей конфигурации:

    curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/waf_migration/check?phase_two=1" \
    --header "Authorization: Bearer <API_TOKEN>"

    Пример ответа:

    {
    	"result": {
    		"compatible": true,
    		"migration_state": "start"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }

    Если ответ содержит "compatible": true, это означает, что зона может перейти на новый WAF и можно продолжать процесс обновления. Если ответ содержит "compatible": false, это означает, что ваша зона с её текущей конфигурацией не подходит для обновления. См. Подходящие зоны для получения подробностей.

  2. Чтобы получить новую конфигурацию WAF, соответствующую вашей текущей конфигурации, используйте Get new WAF configuration :

    curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/waf_migration/config?phase_two=1" \
    --header "Authorization: Bearer <API_TOKEN>"

    Пример ответа:

    {
    	"result": {
    		"name": "default",
    		"rules": [
    			{
    				"id": "",
    				"version": "",
    				"action": "execute",
    				"expression": "true",
    				"description": "",
    				"ref": "",
    				"enabled": true,
    				"action_parameters": {
    					"id": "efb7b8c949ac4650a09736fc376e9aee",
    					"overrides": {
    						"rules": [
    							{
    								"id": "23ee7cebe6e8443e99ecf932ab579455",
    								"action": "log",
    								"enabled": false
    							}
    						]
    					}
    				}
    			}
    		]
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }

Возвращённая конфигурация в примере выше, соответствующая существующей конфигурации предыдущей версии WAF, содержит:

  1. (Необязательно, только для клиентов Enterprise) Если вы обновляете зону Enterprise до WAF Managed Rules, вы можете перейти в режим валидации до завершения обновления. В этом режиме будут включены обе реализации WAF. Используйте Обновление набора правил точки входа зоны (операция), обязательно включив waf_migration=validation&phase_two=1 параметры строки запроса:

    curl --request PUT \
    "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint?waf_migration=validation&phase_two=1" \
    --header "Authorization: Bearer <API_TOKEN>" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "default",
      "rules": [
        {
          "action": "execute",
          "expression": "true",
          "description": "",
          "enabled": true,
          "action_parameters": {
            "id": "efb7b8c949ac4650a09736fc376e9aee",
            "overrides": {
              "rules": [
                {
                  "id": "23ee7cebe6e8443e99ecf932ab579455",
                  "action": "log",
                  "enabled": false
                }
              ]
            }
          }
        }
      ]
    }'

    После вызова этого эндпоинта API будут включены и старые управляемые правила WAF, и новые WAF Managed Rules. Проверьте сэмплированные журналы в Security Events, не блокируется ли легитимный трафик, и внесите необходимые корректировки в конфигурацию WAF Managed Rules. Например, вы можете добавьте переопределение для отдельного правила, которое отключает его или меняет его действие.

  2. Чтобы завершить обновление и отключить старые управляемые правила WAF, задайте конфигурацию нового WAF, используя настройки, полученные на шаге 2 и, возможно, скорректированные на шаге 3. Обязательно включите waf_migration=pending&phase_two=1 — параметры строки запроса.

    curl --request PUT \
    "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint?waf_migration=pending&phase_two=1" \
    --header "Authorization: Bearer <API_TOKEN>" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "default",
      "rules": [
        {
          "id": "",
          "version": "",
          "action": "execute",
          "expression": "true",
          "description": "",
          "ref": "",
          "enabled": true,
          "action_parameters": {
            "id": "efb7b8c949ac4650a09736fc376e9aee",
            "overrides": {
              "rules": [
                {
                  "id": "23ee7cebe6e8443e99ecf932ab579455",
                  "action": "log",
                  "enabled": false
                }
              ]
            }
          }
        }
      ]
    }'

После сохранения указанной конфигурации и включения новых WAF Managed Rules предыдущая версия управляемых правил WAF будет автоматически отключена благодаря наличию waf_migration=pending&phase_two=1 параметры. Это гарантирует, что во время процесса обновления ваша зона останется защищённой одной из версий WAF.


Анализ поведения нового WAF в Security Events

Для клиентов Enterprise

Если вы клиент Enterprise, используйте режим валидации процесса обновления WAF, чтобы проверить поведение новой конфигурации WAF Managed Rules. Cloudflare включает режим валидации после развёртывания новой конфигурации WAF. В этом режиме предыдущая версия WAF остаётся включённой, чтобы вы могли проверить поведение новой конфигурации во время обновления. Новые WAF Managed Rules будут выполняться перед предыдущей версией.

Перейдите в сэмплированные журналы в Security Events в режиме валидации и проверьте следующее:

Для клиентов Business/Professional

Клиенты Business и Professional не имеют доступа к режиму валидации, то есть они смогут проверить поведение нового WAF после перехода на новые WAF Managed Rules.

В первые дни после обновления проверяйте сэмплированные журналы в Security Events, не блокируются ли легитимные запросы правилами WAF Managed Rules. Если вы обнаружите некорректно заблокированные запросы, измените действие соответствующего правила WAF на Log. Подробнее об изменении действия правила управляемого набора см. Настройка отдельных правил управляемого набора.

Дополнительно проверьте запросы, которые должны были быть заблокированы. В этой ситуации рассмотрите возможность создания правило файрвола или Пользовательское правило WAF чтобы заблокировать эти запросы.


Операции API

Переход на новые WAF Managed Rules через API требует вызова следующих операций API:

Имя Метод + конечная точка Описание
Проверка WAF
совместимость обновления
GET /zones/<ZONE_ID>/waf_migration/check?phase_two=1 Проверяет, можно ли обновить текущую зону до нового WAF с учётом её текущей конфигурации.
Get new WAF
конфигурация
GET /zones/<ZONE_ID>/waf_migration/config?phase_two=1 Получает новую конфигурацию WAF Managed Rules, эквивалентную текущей конфигурации (предыдущей версии управляемых правил WAF).
Обновление зоны
набор правил точки входа
PUT /zones/<ZONE_ID>/rulesets/ phases/http_request_firewall_managed/entrypoint?waf_migration=<VALUE>&phase_two=1 Обновляет конфигурацию набора правил точки входа зоны для фазы http_request_firewall_managed фазе.
Доступные значения для waf_migration параметр строки запроса:
pending / 1: Задаёт новую конфигурацию WAF Managed Rules и отключает предыдущую версию управляемых правил WAF сразу после сохранения предоставленной конфигурации и включения нового WAF.
validation / 2: (только зоны Enterprise) задаёт конфигурацию новых WAF Managed Rules и включает новые WAF Managed Rules параллельно с предыдущей версией, переводя зону в режим валидации. Чтобы выйти из режима валидации и завершить обновление, вызовите ту же конечную точку API с waf_migration=pending.
Получить статус WAF GET /zones/<ZONE_ID>/waf_migration/status Возвращает статус старых и новых управляемых правил WAF для зоны (включены/отключены). Ответ также содержит текущее состояние (режим) обновления.

Чтобы получить полную конечную точку, добавьте к перечисленным выше конечным точкам базовый URL Cloudflare API:

https://api.cloudflare.com/client/v4


Возможные ошибки обновления

Свяжитесь с Поддержка Cloudflare , чтобы получить помощь со следующими ошибками:


Дополнительные ресурсы

Настройка новых WAF Managed Rules с помощью Cloudflare API

Вместо прежних API для управления пакетами WAF, группами правил и правилами теперь необходимо использовать Rulesets API для программной настройки WAF Managed Rules.

Вы также можете создать переопределения , чтобы указать изменения, выполняемые поверх конфигурации WAF Managed Rules по умолчанию. Эти изменения будут иметь приоритет над поведением управляемого набора правил по умолчанию.

Дополнительную информацию см. в следующих ресурсах:

Настройка новых WAF Managed Rules с помощью Terraform

Вместо прежних ресурсов для управления пакетами WAF, группами правил и правилами теперь необходимо использовать cloudflare_ruleset (ресурс Terraform) для настройки WAF Managed Rules. Примеры конфигурации см. в Конфигурация WAF Managed Rules с помощью Terraform.

Замените конфигурацию с помощью cf-terraforming

Вы можете использовать cf-terraforming инструмент, чтобы после обновления сгенерировать конфигурацию Terraform для вашей новой конфигурации WAF Managed Rules. Затем импортируйте новые ресурсы в состояние Terraform.

Рекомендуемые шаги замены старой конфигурации управляемых правил WAF в Terraform на новую конфигурацию на основе наборов правил для новых WAF Managed Rules:

  1. Выполните следующую команду, чтобы сгенерировать все конфигурации наборов правил для зоны:

    cf-terraforming generate --zone <ZONE_ID> --resource-type "cloudflare_ruleset"
    resource "cloudflare_ruleset" "terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31" {
      kind    = "zone"
      name    = "default"
      phase   = "http_request_firewall_managed"
      zone_id = "<ZONE_ID>"
      rules {
        [...]
      }
      [...]
    }
    [...]
  2. Предыдущая команда может вернуть дополнительные конфигурации наборов правил для других продуктов Cloudflare, также основанных на Ruleset Engine. Поскольку вам нужна конфигурация WAF Managed Rules, оставьте только ресурс Terraform для http_request_firewall_managed фазы и сохраните его в .tf (файл конфигурации). Полное имя ресурса понадобится вам на следующем шаге.

  3. Импортируйте cloudflare_ruleset ресурс, определённый вами ранее, в состояние Terraform с помощью terraform import . Например:

    terraform import cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31 zone/<ZONE_ID>/3c0b456bc2aa443089c5f40f45f51b31
     cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Importing from ID "zone/<ZONE_ID>/3c0b456bc2aa443089c5f40f45f51b31"...
     cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Import prepared!
       Prepared cloudflare_ruleset for import
     cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Refreshing state... [id=3c0b456bc2aa443089c5f40f45f51b31]
    
     Import successful!
    
     The resources that were imported are shown above. These resources are now in
     your Terraform state and will henceforth be managed by Terraform.
  4. Выполните terraform plan , чтобы убедиться, что Terraform теперь проверяет состояние новых cloudflare_ruleset ресурс в дополнение к другим существующим ресурсам, уже управляемым Terraform. Например:

    terraform plan
    
    cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Refreshing state... [id=3c0b456bc2aa443089c5f40f45f51b31]
    [...]
    cloudflare_waf_package.my_package: Refreshing state... [id=14a2524fd75c419f8d273116815b6349]
    cloudflare_waf_group.my_group: Refreshing state... [id=0580eb5d92e344ddb2374979f74c3ddf]
    [...]
  5. Удалите из состояния Terraform всё, что относится к предыдущей версии управляемых правил WAF:

    1. Выполните следующую команду, чтобы найти все ресурсы, относящиеся к предыдущей версии управляемых правил WAF:

      terraform state list | grep -E '^cloudflare_waf_(package|group|rule)\.'
      cloudflare_waf_package.my_package
      cloudflare_waf_group.my_group
    2. Запустите terraform state rm ... в режиме dry-run, чтобы понять последствия удаления этих ресурсов без внесения каких-либо изменений:

      terraform state rm -dry-run cloudflare_waf_package.my_package cloudflare_waf_group.my_group
      Would remove cloudflare_waf_package.my_package
      Would remove cloudflare_waf_group.my_group
    3. Если влияние выглядит корректно, выполните ту же команду без -dry-run, чтобы действительно удалить ресурсы из состояния Terraform:

      terraform state rm cloudflare_waf_package.my_package cloudflare_waf_group.my_group
      Removed cloudflare_waf_package.my_package
      Removed cloudflare_waf_group.my_group
      Successfully removed 2 resource instance(s).
  6. После удаления ресурсов пакетов, групп и правил WAF из состояния Terraform удалите cloudflare_waf_package, cloudflare_waf_group и cloudflare_waf_rule ресурсы из .tf (файлы конфигурации).

  7. Выполните terraform plan , чтобы убедиться, что удалённые из файлов конфигурации ресурсы больше не отображаются. Ожидающих изменений быть не должно.

    terraform plan
    cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Refreshing state... [id=3c0b456bc2aa443089c5f40f45f51b31]
    [...]
    
    No changes. Your infrastructure matches the configuration.
    
    Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

Подробности об импорте ресурсов Cloudflare в Terraform и использовании cf-terraforming , обратитесь к следующим ресурсам:


Заключительные замечания

Понятие уровень паранойи отсутствовал в версии OWASP (2.x), использовавшейся в управляемых правилах WAF. Согласно рекомендациям руководства OWASP, процесс миграции WAF установит уровень паранойи Cloudflare OWASP Core Ruleset равным PL2.

Новую версию WAF Managed Rules нельзя отключить с помощью Page Rules, поскольку Web Application Firewall: Off в Page Rules применяется только к предыдущей версии управляемых правил WAF. Чтобы отключить новые WAF Managed Rules, вы должны настроить исключения (также известны как правила пропуска, skip rules).