Konfigurera en hastighetsbegränsningsregel för brandväggen för webbaserade program
Hastighetsbegränsningsregeln för Azure Web Application Firewall för Azure Front Door styr antalet begäranden som tillåts från en viss käll-IP-adress till programmet under en hastighetsgräns. Mer information om hastighetsbegränsning finns i Vad är hastighetsbegränsning för Azure Front Door?.
Den här artikeln visar hur du konfigurerar en regel för hastighetsbegränsning för webbaserade programbrandväggar (WAF) på Azure Front Door Standard- och Premium-nivåer.
Scenario
Anta att du ansvarar för en offentlig webbplats. Du har precis lagt till en sida med information om en kampanj som din organisation kör. Du är orolig för att om klienter besöker den sidan för ofta kanske vissa av dina serverdelstjänster inte kan skalas snabbt och programmet kan ha prestandaproblem.
Du bestämmer dig för att skapa en hastighetsbegränsningsregel som begränsar varje käll-IP-adress till högst 1 000 begäranden per minut. Du tillämpar bara den här regeln på begäranden som innehåller */promo*
i begärande-URL:en.
Dricks
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Skapa en Azure Front Door-profil och EN WAF-princip
I Azure-portalen väljer du Skapa en resurs.
Sök efter Front Door och välj Front Door- och CDN-profiler.
Välj Skapa.
Välj Fortsätt för att skapa en Front Door för att använda snabbskapandeprocessen för portalen.
Ange den information som krävs på sidan Grundläggande :
- Resursgrupp: Välj en befintlig resursgrupp eller skapa en ny resursgrupp för Azure Front Door- och WAF-resurserna.
- Namn: Ange namnet på din Azure Front Door-profil.
- Nivå: Välj Standard eller Premium. I det här scenariot stöder båda nivåerna hastighetsbegränsning.
- Slutpunktsnamn: Ange ett unikt namn för slutpunkten eftersom Azure Front Door-slutpunkter måste ha globalt unika namn.
- Ursprungstyp och Ursprungsvärdnamn: Välj det ursprungsprogram som du vill skydda med din hastighetsbegränsningsregel.
Bredvid WAF-princip väljer du Skapa ny.
Ange namnet på en WAF-princip och välj Skapa.
Välj Granska + skapa>Skapa.
När distributionen är klar väljer du Gå till resurs.
Skapa en hastighetsbegränsningsregel
Välj Anpassade regler>Lägg till anpassad regel.
Ange den information som krävs för att skapa en hastighetsbegränsningsregel:
- Namn på anpassad regel: Ange namnet på den anpassade regeln, till exempel rateLimitRule.
- Regeltyp: Välj Hastighetsgräns.
- Prioritet: Ange regelns prioritet, till exempel 1.
- Varaktighet för hastighetsbegränsning: Välj 1 minut.
- Tröskelvärde för hastighetsbegränsning (begäranden): Ange 1 000.
I Villkor anger du den information som krävs för att ange ett matchningsvillkor för att identifiera begäranden där URL:en innehåller strängen
*/promo*
:- Matchningstyp: Välj Sträng.
- Matchningsvariabel: Ange RequestUri.
- Åtgärd: Välj är.
- Operator: Välj Innehåller.
- Matchningsvärden: Ange /promo.
För Åtgärd väljer du Logg eller Blockera.
Regler för hastighetsbegränsning stöder
Log
endast ochBlock
åtgärder.Allow
stöds inte.Markera Lägg till.
Välj Spara.
Använd förebyggande läge på WAF
Som standard skapar Azure-portalen WAF-principer i identifieringsläge. Den här inställningen innebär att WAF inte blockerar begäranden. Mer information finns i WAF-lägen.
Justera din WAF innan du använder förebyggande läge. Justering hjälper till att undvika falska positiva identifieringar. Det hjälper också till att förhindra att din WAF blockerar legitima begäranden.
Här konfigurerar du om WAF för att använda förebyggande läge.
Öppna WAF-principen.
Observera att principläget är inställt på Identifiering.
Välj Växla till förebyggande läge.
Förutsättningar
Innan du börjar konfigurera en hastighetsbegränsningsprincip konfigurerar du Din PowerShell-miljö och skapar en Azure Front Door-profil.
Konfigurera PowerShell-miljön
Azure PowerShell tillhandahåller en uppsättning cmdletar som använder Azure Resource Manager-modellen för att hantera dina Azure-resurser.
Du kan installera Azure PowerShell på en lokal dator och använda det i alla PowerShell-sessioner. Här loggar du in med dina Azure-autentiseringsuppgifter och installerar Azure PowerShell-modulen för Azure Front Door Standard eller Premium.
Ansluta till Azure med en interaktiv dialogruta för inloggning
Logga in på Azure genom att köra följande kommando:
Connect-AzAccount
Installera PowerShellGet
Kontrollera att den aktuella versionen av PowerShellGet är installerad. Kör följande kommando:
Install-Module PowerShellGet -Force -AllowClobber
Starta sedan om PowerShell för att se till att du använder den senaste versionen.
Installera Azure Front Door PowerShell-modulerna
Installera PowerShell-modulerna Az.FrontDoor
och Az.Cdn
för att arbeta med Azure Front Door Standard eller Premium från PowerShell.
Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn
Du använder modulen Az.Cdn
för att arbeta med Azure Front Door Standard- eller Premium-resurser. Använd modulen Az.FrontDoor
för att arbeta med WAF-resurser.
Skapa en resursgrupp
Använd cmdleten New-AzResourceGroup för att skapa en ny resursgrupp för din Azure Front Door-profil och WAF-princip. Uppdatera resursgruppens namn och plats för dina egna krav:
$resourceGroupName = 'FrontDoorRateLimit'
New-AzResourceGroup -Name $resourceGroupName -Location 'westus'
Skapa en Azure Front Door-profil
Använd cmdleten New-AzFrontDoorCdnProfile för att skapa en ny Azure Front Door-profil.
I det här exemplet skapar du en Azure Front Door-standardprofil med namnet MyFrontDoorProfile
:
$frontDoorProfile = New-AzFrontDoorCdnProfile `
-Name 'MyFrontDoorProfile' `
-ResourceGroupName $resourceGroupName `
-Location global `
-SkuName Standard_AzureFrontDoor
Skapa en Azure Front Door-slutpunkt
Använd cmdleten New-AzFrontDoorCdnEndpoint för att lägga till en slutpunkt i din Azure Front Door-profil.
Azure Front Door-slutpunkter måste ha globalt unika namn, så uppdatera värdet för variabeln $frontDoorEndpointName
till något unikt.
$frontDoorEndpointName = '<unique-front-door-endpoint-name>'
$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
-EndpointName $frontDoorEndpointName `
-ProfileName $frontDoorProfile.Name `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Location $frontDoorProfile.Location
Definiera ett URL-matchningsvillkor
Använd cmdleten New-AzFrontDoorWafMatchConditionObject för att skapa ett matchningsvillkor för att identifiera begäranden som ska ha hastighetsgränsen tillämpad.
Följande exempel matchar begäranden där variabeln RequestUri
innehåller strängen /promo:
$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable RequestUri `
-OperatorProperty Contains `
-MatchValue '/promo'
Skapa en anpassad hastighetsbegränsningsregel
Använd cmdleten New-AzFrontDoorWafCustomRuleObject för att skapa hastighetsbegränsningsregeln, som innehåller matchningsvillkoret som du definierade i föregående steg och tröskelvärdet för begäran.
I följande exempel anges gränsen till 1000
:
$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
-Name 'rateLimitRule' `
-RuleType RateLimitRule `
-MatchCondition $promoMatchCondition `
-RateLimitThreshold 1000 `
-Action Block `
-Priority 1
När en käll-IP-adress skickar fler än 1 000 begäranden inom en minut blockerar WAF efterföljande begäranden tills nästa minut startar.
Skapa en WAF-princip
Använd cmdleten New-AzFrontDoorWafPolicy för att skapa en WAF-princip som innehåller den anpassade regel som du skapade.
$wafPolicy = New-AzFrontDoorWafPolicy `
-Name 'MyWafPolicy' `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Sku Standard_AzureFrontDoor `
-CustomRule $promoRateLimitRule
Konfigurera en säkerhetsprincip för att associera din Azure Front Door-profil med din WAF-princip
Använd cmdleten New-AzFrontDoorCdnSecurityPolicy för att skapa en säkerhetsprincip för din Azure Front Door-profil. En säkerhetsprincip associerar din WAF-princip med domäner som du vill ska skyddas av WAF-regeln.
I det här exemplet associerar du slutpunktens standardvärdnamn med din WAF-princip:
$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
Förutsättningar
Innan du börjar konfigurera en hastighetsbegränsningsprincip konfigurerar du Din Azure CLI-miljö och skapar en Azure Front Door-profil.
Konfigurera din Azure CLI-miljö
Azure CLI tillhandahåller en uppsättning kommandon som använder Azure Resource Manager-modellen för att hantera dina Azure-resurser.
Du kan installera Azure CLI på din lokala dator och använda den i alla gränssnittssessioner. Här loggar du in med dina Azure-autentiseringsuppgifter och installerar Azure CLI-tillägget för Azure Front Door Standard eller Premium.
Ansluta till Azure med en interaktiv dialogruta för inloggning
Logga in på Azure genom att köra följande kommando:
az login
Installera Azure Front Door-tillägget för Azure CLI
front-door
Installera tillägget så att det fungerar med Azure Front Door WAF från Azure CLI:
az extension add --name front-door
Du använder kommandona az afd
för att arbeta med Azure Front Door Standard- eller Premium-resurser. Använd kommandona az network front-door waf-policy
för att arbeta med WAF-resurser.
Skapa en resursgrupp
Använd kommandot az group create för att skapa en ny resursgrupp för din Azure Front Door-profil och WAF-princip. Uppdatera resursgruppens namn och plats för dina egna krav:
resourceGroupName='FrontDoorRateLimit'
az group create \
--name $resourceGroupName \
--location westus
Skapa en Azure Front Door-profil
Använd kommandot az afd profile create för att skapa en ny Azure Front Door-profil.
I det här exemplet skapar du en Azure Front Door-standardprofil med namnet MyFrontDoorProfile
:
frontDoorProfileName='MyFrontDoorProfile'
az afd profile create \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Skapa en Azure Front Door-slutpunkt
Använd kommandot az afd endpoint create för att lägga till en slutpunkt i din Azure Front Door-profil.
Azure Front Door-slutpunkter måste ha globalt unika namn, så uppdatera värdet för variabeln frontDoorEndpointName
till något unikt.
frontDoorEndpointName='<unique-front-door-endpoint-name>'
az afd endpoint create \
--endpoint-name $frontDoorEndpointName \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
Skapa en WAF-princip
Använd kommandot az network front-door waf-policy create för att skapa en WAF-princip:
wafPolicyName='MyWafPolicy'
az network front-door waf-policy create \
--name $wafPolicyName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Förbereda för att lägga till en anpassad hastighetsbegränsningsregel
Använd kommandot az network front-door waf-policy rule create för att skapa en anpassad hastighetsbegränsningsregel. I följande exempel anges gränsen till 1 000 begäranden per minut.
Regler för hastighetsbegränsning måste innehålla ett matchningsvillkor som du skapar i nästa steg. I det här kommandot inkluderar --defer
du argumentet som säger till Azure CLI att inte skicka regeln till Azure ännu.
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
När en käll-IP-adress skickar fler än 1 000 begäranden inom en minut blockerar WAF efterföljande begäranden tills nästa minut startar.
Lägga till ett matchningsvillkor
Använd kommandot az network front-door waf-policy rule match-condition add för att lägga till ett matchningsvillkor i din anpassade regel. Matchningsvillkoret identifierar begäranden som ska ha hastighetsgränsen tillämpad.
Följande exempel matchar begäranden där variabeln RequestUri
innehåller strängen /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
När du skickar det här kommandot skapar Azure CLI regeln för hastighetsbegränsning och matchar villkoret tillsammans.
Konfigurera en säkerhetsprincip för att associera din Azure Front Door-profil med din WAF-princip
Använd kommandot az afd security-policy create för att skapa en säkerhetsprincip för din Azure Front Door-profil. En säkerhetsprincip associerar din WAF-princip med domäner som du vill ska skyddas av WAF-regeln.
I det här exemplet associerar du slutpunktens standardvärdnamn med din WAF-princip:
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
Föregående kod letar upp Azure-resursidentifierarna för WAF-principen och Azure Front Door-slutpunkten så att den kan associera dem med din säkerhetsprincip.
Kommentar
När du gör ändringar i waf-principen behöver du inte återskapa Azure Front Door-säkerhetsprincipen. WAF-principuppdateringar tillämpas automatiskt på Azure Front Door-domänerna.
Snabbstart
Information om hur du skapar en Azure Front Door-profil med en hastighetsbegränsningsregel med hjälp av Bicep finns i snabbstarten Azure Front Door Standard eller Premium med hastighetsgräns Bicep.
Nästa steg
Läs mer om Azure Front Door.