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

  1. V Azure Portal vyberte Vytvořit prostředek.

    Snímek obrazovky znázorňující tlačítko Vytvořit prostředek na domovské stránce

  2. Vyhledejte Front Door a vyberte Profily Front Door a CDN.

    Snímek obrazovky znázorňující marketplace se zvýrazněnou možností Front Door

  3. Vyberte Vytvořit.

    Snímek obrazovky znázorňující profily Služby Front Door a CDN se zvýrazněným tlačítkem Vytvořit

  4. Vyberte Pokračovat a vytvořte službu Front Door , abyste mohli použít proces rychlého vytvoření portálu.

    Snímek obrazovky znázorňující nabídky služby Azure Front Door s vybranou možností Rychlé vytvoření a zvýrazněným tlačítkem Pokračovat při vytváření služby Front Door

  5. 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.
  6. Vedle zásady WAF vyberte Vytvořit novou.

    Snímek obrazovky znázorňující pracovní postup vytvoření služby Azure Front Door se zvýrazněným tlačítkem Vytvořit nový v zásadách WAF

  7. Zadejte název zásady WAF a vyberte Vytvořit.

    Snímek obrazovky znázorňující výzvu k vytvoření zásad WAF se zvýrazněným tlačítkem Vytvořit

  8. Vyberte Zkontrolovat a vytvořit>Vytvořit.

    Snímek obrazovky znázorňující dokončenou konfiguraci profilu služby Azure Front Door

  9. Po dokončení nasazení vyberte Přejít k prostředku.

Vytvoření pravidla omezení četnosti

  1. Vyberte Vlastní pravidla>Přidat vlastní pravidlo.

    Snímek obrazovky se stránkou vlastních pravidel zásad WAF

  2. 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.
  3. 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.
  4. V části Akce vyberte Protokol nebo Blokovat.

    Pravidla omezení rychlosti pouze podporují Log a Block akce. Allow se nepodporuje.

    Snímek obrazovky znázorňující konfiguraci vlastního pravidla

  5. Vyberte Přidat.

  6. Vyberte Uložit.

    Snímek obrazovky se seznamem vlastních pravidel, včetně nového pravidla omezení četnosti

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.

  1. Otevřete zásadu WAF.

    Všimněte si, že režim zásad je nastavený na detekci.

    Snímek obrazovky znázorňující zásady WAF se zvýrazněným režimem zásad a tlačítkem Přepnout do režimu prevence

  2. 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.