Настройка правила ограничения скорости Брандмауэр веб-приложений

Правило ограничения скорости azure Брандмауэр веб-приложений для Azure Front Door управляет количеством запросов, разрешенных с определенного исходного IP-адреса к приложению в течение длительности ограничения скорости. Дополнительные сведения об ограничении скорости см. в статье Что такое ограничение скорости для Azure Front Door?.

В этой статье показано, как настроить правило ограничения скорости брандмауэра веб-приложения (WAF) на уровнях Azure Front Door "Стандартный" и "Премиум".

Сценарий

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

Вы решили создать правило ограничения скорости, которое ограничивает каждый исходный IP-адрес не более 1000 запросов в минуту. Это правило применяется только к запросам, содержащимся */promo* в URL-адресе запроса.

Совет

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Создание профиля Azure Front Door и политики WAF

  1. На портале Azure выберите Создать ресурс.

    Снимок экрана: кнопка

  2. Выполните поиск по запросу Front Door и выберите Профили Front Door и CDN.

    Снимок экрана: Marketplace с выделенным Элементом Front Door.

  3. Нажмите кнопку создания.

    Снимок экрана: профили Front Door и CDN с выделенной кнопкой

  4. Нажмите Продолжить создание Front Door, чтобы использовать процесс быстрого создания, доступный на портале.

    Снимок экрана: предложения Azure Front Door с выбранным параметром

  5. Введите необходимые сведения на странице Основные сведения:

    • Группа ресурсов. Выберите существующую группу ресурсов или создайте новую группу ресурсов для ресурсов Azure Front Door и WAF.
    • Имя. Введите имя профиля Azure Front Door.
    • Уровень: выберите Стандартный или Премиум. В этом сценарии оба уровня поддерживают ограничение скорости.
    • Имя конечной точки. Укажите уникальное имя конечной точки, так как конечные точки Azure Front Door должны иметь глобально уникальные имена.
    • Тип источника и имя узла источника. Выберите исходное приложение, которое необходимо защитить с помощью правила ограничения скорости.
  6. Рядом с пунктом Политика WAF выберите Создать.

    Снимок экрана: рабочий процесс создания Azure Front Door с выделенной кнопкой

  7. Введите имя политики WAF и нажмите кнопку Создать.

    Снимок экрана: запрос на создание политики WAF с выделенной кнопкой

  8. Выберите команду Просмотреть и создать>Создать.

    Снимок экрана: завершенная конфигурация профиля Azure Front Door.

  9. Когда развертывание будет завершено, выберите Перейти ресурсу.

Создание правила ограничения скорости

  1. Выберите Настраиваемые правила>Добавить настраиваемое правило.

    Снимок экрана: страница настраиваемых правил политики WAF.

  2. Введите сведения, необходимые для создания правила ограничения скорости:

    • Имя настраиваемого правила. Введите имя настраиваемого правила, например rateLimitRule.
    • Тип правила: выберите Ограничение скорости.
    • Приоритет. Введите приоритет правила, например 1.
    • Длительность ограничения скорости: выберите 1 минуту.
    • Пороговое значение ограничения скорости (запросы): введите 1000.
  3. В поле Условия введите сведения, необходимые для указания условия соответствия, чтобы определить запросы, в которых URL-адрес содержит строку */promo*:

    • Тип соответствия: выберите Строка.
    • Переменная match: введите RequestUri.
    • Операция: выберите значение .
    • Оператор: выберите Содержит.
    • Значения соответствия: введите /promo.
  4. В разделе Действие выберите Журнал или Блокировать.

    Правила ограничения скорости поддерживают Log только действия и Block . Allow не поддерживается.

    Снимок экрана: конфигурация настраиваемого правила.

  5. Выберите Добавить.

  6. Щелкните Сохранить.

    Снимок экрана: список настраиваемых правил, включая новое правило ограничения скорости.

Использование режима предотвращения в WAF

По умолчанию портал Azure создает политики WAF в режиме обнаружения. Этот параметр означает, что WAF не блокирует запросы. Дополнительные сведения см. в статье Режимы WAF.

Настройте WAF перед использованием режима предотвращения. Настройка помогает избежать ложноположительных обнаружений. Это также помогает предотвратить блокировку waf допустимых запросов.

Здесь вы перенастроите WAF для использования режима предотвращения.

  1. Откройте политику WAF.

    Обратите внимание, что режим политики установлен в разделе Обнаружение.

    Снимок экрана: политика WAF с выделенной кнопкой

  2. Выберите Переключиться в режим предотвращения.

Предварительные требования

Прежде чем приступить к настройке политики ограничения скорости, настройте среду PowerShell и создайте профиль Azure Front Door.

Настройка среды PowerShell

В Azure PowerShell доступен набор командлетов, которые используют модель Azure Resource Manager для управления ресурсами Azure.

Вы можете установить Azure PowerShell на локальном компьютере и использовать его в любом сеансе PowerShell. Здесь вы войдите с учетными данными Azure и установите модуль Azure PowerShell для Azure Front Door уровня "Стандартный" или "Премиум".

Подключение к Azure с помощью интерактивного диалогового окна для входа

Войдите в Azure, выполнив следующую команду.

Connect-AzAccount

Установка PowerShellGet

Убедитесь, что установлена текущая версия PowerShellGet . Выполните следующую команду:

Install-Module PowerShellGet -Force -AllowClobber

Затем перезапустите PowerShell, чтобы убедиться, что используется последняя версия.

Установка модулей PowerShell Для Azure Front Door

Az.FrontDoor Установите модули и Az.Cdn PowerShell для работы с Azure Front Door уровня "Стандартный" или "Премиум" из PowerShell.

Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn

Модуль используется Az.Cdn для работы с ресурсами Azure Front Door уровня "Стандартный" или "Премиум". Az.FrontDoor Используйте модуль для работы с ресурсами WAF.

Создание группы ресурсов

Используйте командлет New-AzResourceGroup , чтобы создать группу ресурсов для профиля Azure Front Door и политики WAF. Обновите имя и расположение группы ресурсов в соответствии с вашими требованиями:

$resourceGroupName = 'FrontDoorRateLimit'

New-AzResourceGroup -Name $resourceGroupName -Location 'westus'

Создание профиля Azure Front Door

Используйте командлет New-AzFrontDoorCdnProfile , чтобы создать профиль Azure Front Door.

В этом примере создается стандартный профиль Azure Front Door с именем MyFrontDoorProfile:

$frontDoorProfile = New-AzFrontDoorCdnProfile `
  -Name 'MyFrontDoorProfile' `
  -ResourceGroupName $resourceGroupName `
  -Location global `
  -SkuName Standard_AzureFrontDoor

Создание конечной точки Azure Front Door

Используйте командлет New-AzFrontDoorCdnEndpoint , чтобы добавить конечную точку в профиль Azure Front Door.

Конечные точки Azure Front Door должны иметь глобально уникальные имена, поэтому измените $frontDoorEndpointName значение переменной на нечто уникальное.

$frontDoorEndpointName = '<unique-front-door-endpoint-name>'

$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
  -EndpointName $frontDoorEndpointName `
  -ProfileName $frontDoorProfile.Name `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Location $frontDoorProfile.Location

Определение условий соответствия URL-адреса

Используйте командлет New-AzFrontDoorWafMatchConditionObject , чтобы создать условие соответствия для идентификации запросов, к которым должно применяться ограничение скорости.

Следующий пример соответствует запросам, в которых RequestUri переменная содержит строку /promo:

$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
  -MatchVariable RequestUri `
  -OperatorProperty Contains `
  -MatchValue '/promo'

Создание настраиваемого правила ограничения скорости

Используйте командлет New-AzFrontDoorWafCustomRuleObject , чтобы создать правило ограничения скорости, которое включает условие соответствия, определенное на предыдущем шаге, и пороговое значение запроса.

В следующем примере устанавливается ограничение :1000

$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
  -Name 'rateLimitRule' `
  -RuleType RateLimitRule `
  -MatchCondition $promoMatchCondition `
  -RateLimitThreshold 1000 `
  -Action Block `
  -Priority 1

Если любой исходный IP-адрес отправляет более 1000 запросов в течение одной минуты, WAF блокирует последующие запросы до следующей минуты.

Создание политики WAF

Используйте командлет New-AzFrontDoorWafPolicy , чтобы создать политику WAF, которая включает созданное вами пользовательское правило.

$wafPolicy = New-AzFrontDoorWafPolicy `
  -Name 'MyWafPolicy' `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Sku Standard_AzureFrontDoor `
  -CustomRule $promoRateLimitRule

Настройка политики безопасности для связывания профиля Azure Front Door с политикой WAF

Используйте командлет New-AzFrontDoorCdnSecurityPolicy , чтобы создать политику безопасности для профиля Azure Front Door. Политика безопасности связывает политику WAF с доменами, которые необходимо защитить с помощью правила WAF.

В этом примере имя узла конечной точки по умолчанию связывается с политикой WAF:

$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
  -PatternsToMatch @("/*") `
  -Domain @(@{"Id"=$($frontDoorEndpoint.Id)})

$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
  -Association $securityPolicyAssociation `
  -WafPolicyId $wafPolicy.Id

$frontDoorSecurityPolicy = New-AzFrontDoorCdnSecurityPolicy `
  -Name 'MySecurityPolicy' `
  -ProfileName $frontDoorProfile.Name `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Parameter $securityPolicyParameters

Предварительные требования

Прежде чем приступить к настройке политики ограничения скорости, настройте среду Azure CLI и создайте профиль Azure Front Door.

Настройка среды Azure CLI

Azure CLI предоставляет набор команд, которые используют модель azure Resource Manager для управления ресурсами Azure.

Вы можете установить Azure CLI на локальном компьютере и использовать его в любом сеансе оболочки. Здесь вы войдите с учетными данными Azure и установите расширение Azure CLI для Azure Front Door уровня "Стандартный" или "Премиум".

Подключение к Azure с помощью интерактивного диалогового окна для входа

Войдите в Azure, выполнив следующую команду.

az login

Установка расширения Azure Front Door для Azure CLI

front-door Установите расширение для работы с Azure Front Door WAF из Azure CLI:

az extension add --name front-door

Команды используются az afd для работы с ресурсами Azure Front Door уровня "Стандартный" или "Премиум". az network front-door waf-policy Используйте команды для работы с ресурсами WAF.

Создание группы ресурсов

Используйте команду az group create , чтобы создать группу ресурсов для профиля Azure Front Door и политики WAF. Обновите имя и расположение группы ресурсов в соответствии с вашими требованиями:

resourceGroupName='FrontDoorRateLimit'

az group create \
  --name $resourceGroupName \
  --location westus

Создание профиля Azure Front Door

Используйте команду az afd profile create , чтобы создать профиль Azure Front Door.

В этом примере создается стандартный профиль Azure Front Door с именем MyFrontDoorProfile:

frontDoorProfileName='MyFrontDoorProfile'

az afd profile create \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

Создание конечной точки Azure Front Door

Используйте команду az afd endpoint create , чтобы добавить конечную точку в профиль Azure Front Door.

Конечные точки Azure Front Door должны иметь глобально уникальные имена, поэтому измените frontDoorEndpointName значение переменной на нечто уникальное.

frontDoorEndpointName='<unique-front-door-endpoint-name>'

az afd endpoint create \
  --endpoint-name $frontDoorEndpointName \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \

Создание политики WAF

Используйте команду az network front-door waf-policy create , чтобы создать политику WAF:

wafPolicyName='MyWafPolicy'

az network front-door waf-policy create \
  --name $wafPolicyName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

Подготовка к добавлению настраиваемого правила ограничения скорости

Используйте команду az network front-door waf-policy rule create , чтобы создать пользовательское правило ограничения скорости. В следующем примере устанавливается ограничение в 1000 запросов в минуту.

Правила ограничения скорости должны содержать условие соответствия, которое вы создадите на следующем шаге. В этой команде вы включаете --defer аргумент , который указывает Azure CLI пока не отправлять правило в Azure.

az network front-door waf-policy rule create \
  --name rateLimitRule \
  --policy-name $wafPolicyName \
  --resource-group $resourceGroupName \
  --rule-type RateLimitRule \
  --rate-limit-duration 1 \
  --rate-limit-threshold 1000 \
  --action Block \
  --priority 1 \
  --defer

Если любой исходный IP-адрес отправляет более 1000 запросов в течение одной минуты, WAF блокирует последующие запросы до следующей минуты.

Добавление условия соответствия

Используйте команду az network front-door waf-policy rule match-condition add , чтобы добавить условие соответствия в пользовательское правило. Условие соответствия определяет запросы, к которым должно быть применено ограничение скорости.

Следующий пример соответствует запросам, в которых RequestUri переменная содержит строку /promo:

az network front-door waf-policy rule match-condition add \
  --match-variable RequestUri \
  --operator Contains \
  --values '/promo' \
  --name rateLimitRule \
  --policy-name $wafPolicyName \
  --resource-group $resourceGroupName

При отправке этой команды Azure CLI создает правило ограничения скорости и условие соответствия.

Настройка политики безопасности для связывания профиля Azure Front Door с политикой WAF

Используйте команду az afd security-policy create , чтобы создать политику безопасности для профиля Azure Front Door. Политика безопасности связывает политику WAF с доменами, которые необходимо защитить с помощью правила WAF.

В этом примере имя узла конечной точки по умолчанию связывается с политикой WAF:

securityPolicyName='MySecurityPolicy'

wafPolicyResourceId=$(az network front-door waf-policy show --name $wafPolicyName --resource-group $resourceGroupName --query id --output tsv)
frontDoorEndpointResourceId=$(az afd endpoint show --endpoint-name $frontDoorEndpointName --profile-name $frontDoorProfileName --resource-group $resourceGroupName --query id --output tsv)

az afd security-policy create \
  --security-policy-name $securityPolicyName \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \
  --domains $frontDoorEndpointResourceId \
  --waf-policy $wafPolicyResourceId

Приведенный выше код ищет идентификаторы ресурсов Azure для политики WAF и конечной точки Azure Front Door, чтобы связать их с политикой безопасности.

Примечание

Всякий раз, когда вы вносите изменения в политику WAF, вам не нужно повторно создавать политику безопасности Azure Front Door. Обновления политики WAF автоматически применяются к доменам Azure Front Door.

Краткое руководство

Чтобы создать профиль Azure Front Door с правилом ограничения скорости с помощью Bicep, см. краткое руководство по Bicep для Azure Front Door уровня "Стандартный" или "Премиум" с ограничением скорости .

Дальнейшие действия

Узнайте больше о Azure Front Door.