Поделиться через


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

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

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

Сценарий

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

Вы решили создать правило ограничения скорости, которое ограничивает каждый исходный 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*:

    • Тип совпадения: выбор строки.
    • Переменная сопоставления: ВВОД RequestUri.
    • Операция. Выберите.
    • Оператор: Select Contains.
    • Значения совпадений: ввод /промо.
  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, чтобы убедиться, что используется последняя версия.

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

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

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

Модуль используется для работы с ресурсами Azure Front Door уровня "Стандартный Az.Cdn " или "Премиум". 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 Установите расширение для работы с WAF Azure Front Door из 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 блокирует последующие запросы до следующей минуты.

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

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

В следующем примере сопоставляется запросы, в которых 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, см. краткое руководство по использованию Azure Front Door Standard или Premium с ограничением скорости Bicep.

Следующие шаги

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