Konfigurace pravidla Web Application Firewall omezení rychlosti
Pravidlo omezení četnosti azure Web Application Firewall pro Službu Azure Front Door řídí počet požadavků povolených z konkrétní zdrojové IP adresy na aplikaci během doby trvání omezení rychlosti. Další informace o omezování rychlosti najdete v tématu Co je omezování rychlosti u služby Azure Front Door?.
Tento článek ukazuje, jak nakonfigurovat pravidlo omezení rychlosti Firewallu webových aplikací (WAF) na úrovních Standard a Premium služby Azure Front Door.
Scenario
Předpokládejme, že zodpovídáte za veřejný web. Právě jste přidali stránku s informacemi o propagační akci, kterou vaše organizace provozuje. Máte obavy, že pokud klienti tuto stránku navštíví příliš často, některé back-endové služby se nemusí 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 pouze u požadavků, 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
V Azure Portal vyberte Vytvořit prostředek.
Vyhledejte Front Door a vyberte Profily Front Door a CDN.
Vyberte Vytvořit.
Vyberte Pokračovat a vytvořte službu Front Door , abyste mohli použít proces rychlého vytvoření portálu.
Zadejte požadované informace na stránce Základy :
- Skupina prostředků: Vyberte existující skupinu prostředků nebo vytvořte novou skupinu prostředků pro prostředky Služby 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 původu a Název hostitele původu: Vyberte aplikaci původu, kterou chcete chránit pomocí pravidla omezení rychlosti.
Vedle zásady 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í četnosti
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 přenosové rychlosti.
- Priorita: Zadejte prioritu pravidla, například 1.
- Doba trvání limitu přenosové rychlosti: Vyberte 1 minutu.
- Prahová hodnota limitu rychlosti (požadavky): Zadejte 1000.
V části Podmínky zadejte informace potřebné k zadání podmínky shody k identifikaci požadavků, ve kterých adresa URL obsahuje řetězec
*/promo*
:- Typ shody: Vyberte Řetězec.
- Proměnná shody: Zadejte RequestUri.
- Operace: Vyberte je.
- Operátor: Vyberte Obsahuje.
- Hodnoty shody: Zadejte /promo.
V části Akce vyberte Protokol nebo Blokovat.
Pravidla omezení rychlosti pouze podporují
Log
aBlock
akce.Allow
se nepodporuje.Vyberte Přidat.
Vyberte Uložit.
Použití režimu prevence na WAF
Ve výchozím nastavení vytváří Azure Portal zásady WAF v režimu zjišťování. 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 blokování legitimních požadavků wafem.
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ý na 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 PowerShell 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
Pak restartujte PowerShell, abyste měli jistotu, že používáte nejnovější verzi.
Instalace modulů PowerShellu služby Azure Front Door
Nainstalujte moduly PowerShellu Az.FrontDoor
a Az.Cdn
pro práci se službou Azure Front Door Standard nebo Premium z PowerShellu.
Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn
Tento modul použijete Az.Cdn
k práci s prostředky Azure Front Door Standard nebo Premium. Pomocí modulu Az.FrontDoor
můžete pracovat s prostředky WAF.
Vytvoření skupiny prostředků
Pomocí rutiny New-AzResourceGroup vytvořte novou skupinu prostředků pro profil služby Azure Front Door a zásady WAF. Aktualizujte název a umístění skupiny prostředků podle svých 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 hodnotu proměnné aktualizujte 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 pro identifikaci požadavků, u kterých by se měl použít limit četnosti.
Následující příklad odpovídá požadavkům, kde RequestUri
proměnná obsahuje řetězec /promo:
$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable RequestUri `
-OperatorProperty Contains `
-MatchValue '/promo'
Vytvoření vlastního pravidla omezení četnosti
Pomocí rutiny New-AzFrontDoorWafCustomRuleObject vytvořte pravidlo omezení 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
Pokud jakákoli zdrojová IP adresa odešle během jedné minuty více než 1 000 požadavků, waf zablokuje následující požadavky až do příští minuty.
Vytvoření zásady WAF
Pomocí rutiny New-AzFrontDoorWafPolicy vytvořte zásadu WAF, která obsahuje 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ží 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é ke správě prostředků Azure používají model Azure Resource Manager.
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
Příkazy az afd
slouží k práci s prostředky Azure Front Door Standard nebo Premium. Pomocí příkazů az network front-door waf-policy
můžete pracovat s prostředky WAF.
Vytvoření skupiny prostředků
Pomocí příkazu az group create vytvořte novou skupinu prostředků pro váš profil služby Azure Front Door a zásady WAF. Aktualizujte název a umístění skupiny prostředků podle svých 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ásady 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
K vytvoření vlastního pravidla rate-limit použijte příkaz az network front-door waf-policy rule create . 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á Azure CLI, 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
Pokud jakákoli zdrojová IP adresa odešle během jedné minuty více než 1 000 požadavků, waf zablokuje následující požadavky až do příští 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á požadavkům, kde 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ž tento příkaz odešlete, Azure CLI společně vytvoří pravidlo omezení rychlosti a podmínku shody.
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ží 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 provedete změny zásad WAF, nemusíte zásady zabezpečení služby Azure Front Door znovu vytvářet. 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í bicepu, projděte si rychlý start služby Azure Front Door Standard nebo Premium s limitem přenosové rychlosti Bicep.
Další kroky
Přečtěte si další informace o službě Azure Front Door.