Настройка правила ограничения скорости Брандмауэр веб-приложений
Правило ограничения скорости azure Брандмауэр веб-приложений для Azure Front Door управляет количеством запросов, разрешенных с определенного исходного IP-адреса к приложению в течение длительности ограничения скорости. Дополнительные сведения об ограничении скорости см. в статье Что такое ограничение скорости для Azure Front Door?.
В этой статье показано, как настроить правило ограничения скорости брандмауэра веб-приложения (WAF) на уровнях Azure Front Door "Стандартный" и "Премиум".
Сценарий
Предположим, вы обслуживаете общедоступный веб-сайт. Вы только что добавили страницу со сведениями о рекламной акции, которую проводит ваша организация. Вы обеспокоены тем, что если клиенты слишком часто посещают эту страницу, некоторые серверные службы могут не быстро масштабироваться и у приложения могут возникнуть проблемы с производительностью.
Вы решили создать правило ограничения скорости, которое ограничивает каждый исходный IP-адрес не более 1000 запросов в минуту. Это правило применяется только к запросам, содержащимся */promo*
в URL-адресе запроса.
Совет
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Создание профиля Azure Front Door и политики WAF
На портале Azure выберите Создать ресурс.
Выполните поиск по запросу Front Door и выберите Профили Front Door и CDN.
Нажмите кнопку создания.
Нажмите Продолжить создание Front Door, чтобы использовать процесс быстрого создания, доступный на портале.
Введите необходимые сведения на странице Основные сведения:
- Группа ресурсов. Выберите существующую группу ресурсов или создайте новую группу ресурсов для ресурсов Azure Front Door и WAF.
- Имя. Введите имя профиля Azure Front Door.
- Уровень: выберите Стандартный или Премиум. В этом сценарии оба уровня поддерживают ограничение скорости.
- Имя конечной точки. Укажите уникальное имя конечной точки, так как конечные точки Azure Front Door должны иметь глобально уникальные имена.
- Тип источника и имя узла источника. Выберите исходное приложение, которое необходимо защитить с помощью правила ограничения скорости.
Рядом с пунктом Политика WAF выберите Создать.
Введите имя политики WAF и нажмите кнопку Создать.
Выберите команду Просмотреть и создать>Создать.
Когда развертывание будет завершено, выберите Перейти ресурсу.
Создание правила ограничения скорости
Выберите Настраиваемые правила>Добавить настраиваемое правило.
Введите сведения, необходимые для создания правила ограничения скорости:
- Имя настраиваемого правила. Введите имя настраиваемого правила, например rateLimitRule.
- Тип правила: выберите Ограничение скорости.
- Приоритет. Введите приоритет правила, например 1.
- Длительность ограничения скорости: выберите 1 минуту.
- Пороговое значение ограничения скорости (запросы): введите 1000.
В поле Условия введите сведения, необходимые для указания условия соответствия, чтобы определить запросы, в которых URL-адрес содержит строку
*/promo*
:- Тип соответствия: выберите Строка.
- Переменная match: введите RequestUri.
- Операция: выберите значение .
- Оператор: выберите Содержит.
- Значения соответствия: введите /promo.
В разделе Действие выберите Журнал или Блокировать.
Правила ограничения скорости поддерживают
Log
только действия иBlock
.Allow
не поддерживается.Выберите Добавить.
Щелкните Сохранить.
Использование режима предотвращения в WAF
По умолчанию портал Azure создает политики WAF в режиме обнаружения. Этот параметр означает, что WAF не блокирует запросы. Дополнительные сведения см. в статье Режимы WAF.
Настройте WAF перед использованием режима предотвращения. Настройка помогает избежать ложноположительных обнаружений. Это также помогает предотвратить блокировку waf допустимых запросов.
Здесь вы перенастроите WAF для использования режима предотвращения.
Откройте политику WAF.
Обратите внимание, что режим политики установлен в разделе Обнаружение.
Выберите Переключиться в режим предотвращения.
Предварительные требования
Прежде чем приступить к настройке политики ограничения скорости, настройте среду 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.