Konfigurace pravidla omezení rychlosti firewallu webových aplikací
Pravidlo omezení rychlosti firewallu webových aplikací Azure pro Službu Azure Front Door řídí počet požadavků povolených z konkrétní zdrojové IP adresy do aplikace během doby trvání omezení rychlosti. Další informace o omezování rychlosti najdete v tématu Co je omezování rychlosti pro Azure Front Door?.
Tento článek ukazuje, jak nakonfigurovat pravidlo omezení rychlosti firewallu webových aplikací (WAF) na úrovních Azure Front Door Standard a Premium.
Scénář
Předpokládejme, že zodpovídáte za veřejný web. Právě jste přidali stránku s informacemi o povýšení, které vaše organizace provozuje. Máte obavy, že pokud klienti navštíví tuto stránku příliš často, nemusí se některé z vašich back-endových služeb rychle škálovat a aplikace může mít problémy s výkonem.
Rozhodnete se vytvořit pravidlo omezení rychlosti, které omezí každou zdrojovou IP adresu na maximálně 1 000 požadavků za minutu. Toto pravidlo použijete jenom na požadavky, které obsahují */promo*
adresu URL požadavku.
Tip
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Vytvoření profilu služby Azure Front Door a zásad WAF
Na webu Azure Portal vyberte Vytvořit prostředek.
Vyhledejte službu Front Door a vyberte profily služby Front Door a CDN.
Vyberte Vytvořit.
Výběrem možnosti Pokračovat vytvoříte službu Front Door a použijete proces rychlého vytvoření portálu.
Na stránce Základy zadejte požadované informace:
- Skupina prostředků: Vyberte existující skupinu prostředků nebo vytvořte novou skupinu prostředků pro prostředky Azure Front Door a WAF.
- Název: Zadejte název profilu služby Azure Front Door.
- Úroveň: Vyberte Standard nebo Premium. V tomto scénáři obě úrovně podporují omezování rychlosti.
- Název koncového bodu: Zadejte jedinečný název koncového bodu, protože koncové body služby Azure Front Door musí mít globálně jedinečné názvy.
- Typ zdroje a název hostitele Origin: Vyberte aplikaci původu, kterou chcete chránit pomocí pravidla omezení rychlosti.
Vedle zásad WAF vyberte Vytvořit novou.
Zadejte název zásady WAF a vyberte Vytvořit.
Vyberte Zkontrolovat a vytvořit>Vytvořit.
Po dokončení nasazení vyberte Přejít k prostředku.
Vytvoření pravidla omezení rychlosti
Vyberte Vlastní pravidla>Přidat vlastní pravidlo.
Zadejte informace potřebné k vytvoření pravidla omezení rychlosti:
- Název vlastního pravidla: Zadejte název vlastního pravidla, například rateLimitRule.
- Typ pravidla: Vyberte limit rychlosti.
- Priorita: Zadejte prioritu pravidla, například 1.
- Doba trvání limitu rychlosti: Vyberte 1 minutu.
- Prahová hodnota limitu rychlosti (požadavky):Zadejte 1 000.
V části Podmínky zadejte informace potřebné k zadání podmínky shody pro identifikaci požadavků, ve kterých adresa URL obsahuje řetězec
*/promo*
:- Typ shody: Vyberte řetězec.
- Shoda proměnné: Zadejte Identifikátor RequestUri.
- Operace: Select is.
- Operátor: Vybrat obsahuje.
- Hodnoty shody: Zadejte /promo.
V případě akce vyberte Protokol nebo Blokovat.
Pravidla omezení rychlosti podporují
Log
pouze akce aBlock
akce.Allow
není podporováno.Vyberte přidat.
Zvolte Uložit.
Použití režimu prevence ve WAF
Azure Portal ve výchozím nastavení vytvoří zásady WAF v režimu detekce. Toto nastavení znamená, že WAF neblokuje požadavky. Další informace najdete v tématu Režimy WAF.
Před použitím režimu prevence vylaďte WAF . Ladění pomáhá vyhnout se falešně pozitivním detekcím. Pomáhá také zabránit firewallu WAF v blokování legitimních požadavků.
Tady překonfigurujete WAF tak, aby používal režim prevence.
Otevřete zásadu WAF.
Všimněte si, že režim zásad je nastavený při detekci.
Vyberte Přepnout do režimu prevence.
Požadavky
Než začnete nastavovat zásady omezení rychlosti, nastavte prostředí PowerShellu a vytvořte profil služby Azure Front Door.
Nastavení prostředí PowerShell
Prostředí Azure PowerShell poskytuje sadu rutin, které ke správě vašich prostředků Azure využívají model Azure Resource Manager.
Azure PowerShell můžete nainstalovat na místní počítač a používat v jakékoli relaci PowerShellu. Tady se přihlásíte pomocí přihlašovacích údajů Azure a nainstalujete modul Azure PowerShellu pro Azure Front Door Standard nebo Premium.
Připojení k Azure pomocí interaktivního dialogového okna pro přihlášení
K Azure se přihlásíte spuštěním následujícího příkazu:
Connect-AzAccount
Instalace modulu PowerShellGet
Ujistěte se, že je nainstalovaná aktuální verze modulu PowerShellGet . Spusťte následující příkaz:
Install-Module PowerShellGet -Force -AllowClobber
Potom restartujte PowerShell, abyste měli jistotu, že používáte nejnovější verzi.
Instalace modulů Azure Front Door PowerShellu
Nainstalujte moduly PowerShellu Az.FrontDoor
pro Az.Cdn
práci se službou Azure Front Door Standard nebo Premium z PowerShellu.
Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn
Tento Az.Cdn
modul používáte k práci s prostředky Azure Front Door Standard nebo Premium. Az.FrontDoor
Pomocí modulu můžete pracovat s prostředky WAF.
Vytvoření skupiny zdrojů
Pomocí rutiny New-AzResourceGroup vytvořte novou skupinu prostředků pro váš profil služby Azure Front Door a zásady WAF. Aktualizujte název skupiny prostředků a umístění podle vlastních požadavků:
$resourceGroupName = 'FrontDoorRateLimit'
New-AzResourceGroup -Name $resourceGroupName -Location 'westus'
Vytvoření profilu služby Azure Front Door
Pomocí rutiny New-AzFrontDoorCdnProfile vytvořte nový profil služby Azure Front Door.
V tomto příkladu vytvoříte standardní profil služby Azure Front Door s názvem MyFrontDoorProfile
:
$frontDoorProfile = New-AzFrontDoorCdnProfile `
-Name 'MyFrontDoorProfile' `
-ResourceGroupName $resourceGroupName `
-Location global `
-SkuName Standard_AzureFrontDoor
Vytvoření koncového bodu služby Azure Front Door
Pomocí rutiny New-AzFrontDoorCdnEndpoint přidejte koncový bod do profilu služby Azure Front Door.
Koncové body služby Azure Front Door musí mít globálně jedinečné názvy, proto aktualizujte hodnotu proměnné na něco jedinečného $frontDoorEndpointName
.
$frontDoorEndpointName = '<unique-front-door-endpoint-name>'
$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
-EndpointName $frontDoorEndpointName `
-ProfileName $frontDoorProfile.Name `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Location $frontDoorProfile.Location
Definování podmínky shody adresy URL
Pomocí rutiny New-AzFrontDoorWafMatchConditionObject vytvořte podmínku shody k identifikaci požadavků, které by měly mít použitý limit rychlosti.
Následující příklad odpovídá žádostem, ve kterých RequestUri
proměnná obsahuje řetězec /promo:
$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable RequestUri `
-OperatorProperty Contains `
-MatchValue '/promo'
Vytvoření vlastního pravidla omezení rychlosti
Pomocí rutiny New-AzFrontDoorWafCustomRuleObject vytvořte pravidlo limitu rychlosti, které zahrnuje podmínku shody definovanou v předchozím kroku a prahovou hodnotu požadavku.
Následující příklad nastaví limit na 1000
:
$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
-Name 'rateLimitRule' `
-RuleType RateLimitRule `
-MatchCondition $promoMatchCondition `
-RateLimitThreshold 1000 `
-Action Block `
-Priority 1
Když jakákoli zdrojová IP adresa během jedné minuty odešle více než 1 000 požadavků, waf zablokuje následné požadavky až do další minuty.
Vytvoření zásad WAF
Pomocí rutiny New-AzFrontDoorWafPolicy vytvořte zásadu WAF, která zahrnuje vlastní pravidlo, které jste vytvořili.
$wafPolicy = New-AzFrontDoorWafPolicy `
-Name 'MyWafPolicy' `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Sku Standard_AzureFrontDoor `
-CustomRule $promoRateLimitRule
Konfigurace zásad zabezpečení pro přidružení profilu služby Azure Front Door k zásadám WAF
Pomocí rutiny New-AzFrontDoorCdnSecurityPolicy vytvořte zásadu zabezpečení pro profil služby Azure Front Door. Zásady zabezpečení přidružují zásady WAF k doménám, které chcete chránit pravidlem WAF.
V tomto příkladu přidružíte výchozí název hostitele koncového bodu k zásadám 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
Požadavky
Než začnete nastavovat zásady omezení rychlosti, nastavte prostředí Azure CLI a vytvořte profil služby Azure Front Door.
Nastavení prostředí Azure CLI
Azure CLI poskytuje sadu příkazů, které používají model Azure Resource Manageru ke správě prostředků Azure.
Azure CLI můžete nainstalovat na místní počítač a použít ho v libovolné relaci prostředí. Tady se přihlásíte pomocí přihlašovacích údajů Azure a nainstalujete rozšíření Azure CLI pro Azure Front Door Standard nebo Premium.
Připojení k Azure pomocí interaktivního dialogového okna pro přihlášení
K Azure se přihlásíte spuštěním následujícího příkazu:
az login
Instalace rozšíření Azure Front Door pro Azure CLI
front-door
Nainstalujte rozšíření pro práci s WAF služby Azure Front Door z Azure CLI:
az extension add --name front-door
Pomocí příkazů můžete az afd
pracovat s prostředky Azure Front Door Standard nebo Premium. az network front-door waf-policy
Pomocí příkazů můžete pracovat s prostředky WAF.
Vytvoření skupiny zdrojů
Pomocí příkazu az group create vytvořte novou skupinu prostředků pro profil služby Azure Front Door a zásady WAF. Aktualizujte název skupiny prostředků a umístění podle vlastních požadavků:
resourceGroupName='FrontDoorRateLimit'
az group create \
--name $resourceGroupName \
--location westus
Vytvoření profilu služby Azure Front Door
Pomocí příkazu az afd profile create vytvořte nový profil služby Azure Front Door.
V tomto příkladu vytvoříte standardní profil služby Azure Front Door s názvem MyFrontDoorProfile
:
frontDoorProfileName='MyFrontDoorProfile'
az afd profile create \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Vytvoření koncového bodu služby Azure Front Door
Pomocí příkazu az afd endpoint create přidejte koncový bod do profilu služby Azure Front Door.
Koncové body služby Azure Front Door musí mít globálně jedinečné názvy, proto aktualizujte hodnotu proměnné na něco jedinečného frontDoorEndpointName
.
frontDoorEndpointName='<unique-front-door-endpoint-name>'
az afd endpoint create \
--endpoint-name $frontDoorEndpointName \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
Vytvoření zásad WAF
Pomocí příkazu az network front-door waf-policy create vytvořte zásadu WAF:
wafPolicyName='MyWafPolicy'
az network front-door waf-policy create \
--name $wafPolicyName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Příprava na přidání vlastního pravidla omezení rychlosti
Pomocí příkazu az network front-door waf-policy rule create vytvořte vlastní pravidlo rate-limit. Následující příklad nastaví limit na 1 000 požadavků za minutu.
Pravidla omezení rychlosti musí obsahovat podmínku shody, kterou vytvoříte v dalším kroku. V tomto příkazu zahrnete --defer
argument, který říká Rozhraní příkazového řádku Azure, aby pravidlo ještě neodesílalo do 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
Když jakákoli zdrojová IP adresa během jedné minuty odešle více než 1 000 požadavků, waf zablokuje následné požadavky až do další minuty.
Přidání podmínky shody
Pomocí příkazu az network front-door waf-policy rule match-condition add přidejte podmínku shody do vlastního pravidla. Podmínka shody identifikuje požadavky, u kterých by se měl použít limit rychlosti.
Následující příklad odpovídá žádostem, ve kterých RequestUri
proměnná obsahuje řetězec /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
Když odešlete tento příkaz, Azure CLI vytvoří pravidlo omezení rychlosti a podmínky shody společně.
Konfigurace zásad zabezpečení pro přidružení profilu služby Azure Front Door k zásadám WAF
Pomocí příkazu az afd security-policy create vytvořte zásadu zabezpečení pro profil služby Azure Front Door. Zásady zabezpečení přidružují zásady WAF k doménám, které chcete chránit pravidlem WAF.
V tomto příkladu přidružíte výchozí název hostitele koncového bodu k zásadám 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
Předchozí kód vyhledá identifikátory prostředků Azure pro zásady WAF a koncový bod Služby Azure Front Door, aby je mohl přidružit k vašim zásadám zabezpečení.
Poznámka:
Kdykoli v zásadách WAF provedete změny, nemusíte znovu vytvářet zásady zabezpečení služby Azure Front Door. Aktualizace zásad WAF se automaticky použijí na domény služby Azure Front Door.
Rychlé zprovoznění
Pokud chcete vytvořit profil služby Azure Front Door s pravidlem omezení rychlosti pomocí bicep, podívejte se na rychlý start k Azure Front Door Standard nebo Premium s limitem rychlosti Bicep.
Další kroky
Přečtěte si další informace o službě Azure Front Door.