Konfigurowanie reguły limitu szybkości Web Application Firewall

Reguła limitu szybkości usługi Azure Web Application Firewall dla usługi Azure Front Door kontroluje liczbę żądań dozwolonych z określonego źródłowego adresu IP do aplikacji w czasie trwania limitu szybkości. Aby uzyskać więcej informacji na temat ograniczania szybkości, zobacz Co to jest ograniczanie szybkości dla usługi Azure Front Door?.

W tym artykule pokazano, jak skonfigurować regułę ograniczania szybkości zapory aplikacji internetowej (WAF) w warstwach Azure Front Door Standard i Premium.

Scenariusz

Załóżmy, że odpowiadasz za publiczną witrynę internetową. Właśnie dodano stronę z informacjami o promocji uruchomionej w organizacji. Obawiasz się, że jeśli klienci odwiedzają tę stronę zbyt często, niektóre usługi zaplecza mogą nie być skalowane szybko, a aplikacja może mieć problemy z wydajnością.

Postanawiasz utworzyć regułę limitu szybkości, która ogranicza każdy źródłowy adres IP do maksymalnie 1000 żądań na minutę. Ta reguła jest stosowana tylko do żądań, które znajdują się */promo* w adresie URL żądania.

Porada

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Tworzenie profilu usługi Azure Front Door i zasad zapory aplikacji internetowej

  1. W Azure Portal wybierz pozycję Utwórz zasób.

    Zrzut ekranu przedstawiający przycisk Utwórz zasób na stronie głównej.

  2. Wyszukaj usługę Front Door i wybierz pozycję Profile usługi Front Door i CDN.

    Zrzut ekranu przedstawiający witrynę Marketplace z wyróżnioną pozycją Front Door.

  3. Wybierz przycisk Utwórz.

    Zrzut ekranu przedstawiający profile usługi Front Door i CDN z wyróżnionym przyciskiem Utwórz.

  4. Wybierz pozycję Kontynuuj, aby utworzyć usługę Front Door , aby użyć procesu szybkiego tworzenia portalu.

    Zrzut ekranu przedstawiający oferty usługi Azure Front Door z wybraną opcją Szybkie tworzenie i wyróżnionym przyciskiem Kontynuuj tworzenie usługi Front Door.

  5. Wprowadź informacje wymagane na stronie Podstawy :

    • Grupa zasobów: wybierz istniejącą grupę zasobów lub utwórz nową grupę zasobów dla zasobów usługi Azure Front Door i zapory aplikacji internetowej.
    • Nazwa: wprowadź nazwę profilu usługi Azure Front Door.
    • Warstwa: wybierz pozycję Standardowa lub Premium. W tym scenariuszu obie warstwy obsługują ograniczanie szybkości.
    • Nazwa punktu końcowego: podaj unikatową nazwę punktu końcowego, ponieważ punkty końcowe usługi Azure Front Door muszą mieć globalnie unikatowe nazwy.
    • Typ źródła i nazwa hosta źródła: wybierz aplikację źródłową, którą chcesz chronić za pomocą reguły limitu szybkości.
  6. Obok pozycji Zasady zapory aplikacji internetowej wybierz pozycję Utwórz nową.

    Zrzut ekranu przedstawiający przepływ pracy tworzenia usługi Azure Front Door z wyróżnionym przyciskiem Utwórz nowy w zasadach zapory aplikacji internetowej.

  7. Wprowadź nazwę zasad zapory aplikacji internetowej i wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający monit o utworzenie zasad zapory aplikacji internetowej z wyróżnionym przyciskiem Utwórz.

  8. Wybierz pozycję Przeglądanie + tworzenie>Utwórz.

    Zrzut ekranu przedstawiający ukończoną konfigurację profilu usługi Azure Front Door.

  9. Po zakończeniu wdrażania wybierz pozycję Przejdź do zasobu.

Tworzenie reguły limitu szybkości

  1. Wybierz pozycję Reguły>niestandardowe Dodaj regułę niestandardową.

    Zrzut ekranu przedstawiający stronę reguł niestandardowych zasad zapory aplikacji internetowej.

  2. Wprowadź informacje wymagane do utworzenia reguły limitu szybkości:

    • Nazwa reguły niestandardowej: wprowadź nazwę reguły niestandardowej, na przykład rateLimitRule.
    • Typ reguły: wybierz pozycję Limit szybkości.
    • Priorytet: wprowadź priorytet reguły, na przykład 1.
    • Czas trwania limitu szybkości: wybierz 1 minutę.
    • Próg limitu szybkości (żądania): wprowadź wartość 1000.
  3. W obszarze Warunki wprowadź informacje wymagane do określenia warunku dopasowania w celu zidentyfikowania żądań, w których adres URL zawiera ciąg */promo*:

    • Typ dopasowania: wybierz pozycję Ciąg.
    • Zmienna dopasowania: wprowadź wartość RequestUri.
    • Operacja: wybierz wartość is.
    • Operator: Wybierz pozycję Zawiera.
    • Zgodne wartości: wprowadź /promo.
  4. W polu Akcja wybierz pozycję Dziennik lub Blokuj.

    Reguły ograniczania szybkości obsługują tylko akcje Log i Block akcje. Allow nie jest obsługiwany.

    Zrzut ekranu przedstawiający konfigurację reguły niestandardowej.

  5. Wybierz pozycję Dodaj.

  6. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający listę reguł niestandardowych, w tym nową regułę limitu szybkości.

Korzystanie z trybu zapobiegania w zaporze aplikacji internetowej

Domyślnie Azure Portal tworzy zasady zapory aplikacji internetowej w trybie wykrywania. To ustawienie oznacza, że zapora aplikacji internetowej nie blokuje żądań. Aby uzyskać więcej informacji, zobacz Tryby zapory aplikacji internetowej.

Dostosuj zaporę aplikacji internetowej przed użyciem trybu zapobiegania. Dostrajanie pomaga uniknąć wykrywania wyników fałszywie dodatnich. Pomaga to również zapobiec blokowaniu uzasadnionych żądań przez zaporę aplikacji internetowej.

W tym miejscu ponownie skonfigurujesz zaporę aplikacji internetowej do korzystania z trybu zapobiegania.

  1. Otwórz zasady zapory aplikacji internetowej.

    Zwróć uwagę, że tryb zasad jest ustawiony na stronie Wykrywanie.

    Zrzut ekranu przedstawiający zasady zapory aplikacji internetowej z wyróżnionym trybem zasad i przyciskiem Przełącz do trybu zapobiegania.

  2. Wybierz pozycję Przełącz do trybu zapobiegania.

Wymagania wstępne

Przed rozpoczęciem konfigurowania zasad limitu szybkości skonfiguruj środowisko programu PowerShell i utwórz profil usługi Azure Front Door.

Konfigurowanie środowiska programu PowerShell

Program Azure PowerShell udostępnia zestaw poleceń cmdlet, które pozwalają zarządzać zasobami platformy Azure przy użyciu modelu usługi Azure Resource Manager.

Możesz zainstalować program Azure PowerShell w maszynie lokalnej i używać go w dowolnej sesji programu PowerShell. W tym miejscu zalogujesz się przy użyciu poświadczeń platformy Azure i zainstalujesz moduł Azure PowerShell dla usługi Azure Front Door Standard lub Premium.

Nawiązywanie połączenia z platformą Azure za pomocą interaktywnego okna dialogowego logowania

Uruchom następujące polecenia, aby zalogować się na platformie Azure:

Connect-AzAccount

Zainstaluj moduł PowerShellGet

Upewnij się, że zainstalowano bieżącą wersję modułu PowerShellGet . Uruchom następujące polecenie:

Install-Module PowerShellGet -Force -AllowClobber

Następnie uruchom ponownie program PowerShell, aby upewnić się, że używasz najnowszej wersji.

Instalowanie modułów programu PowerShell usługi Azure Front Door

Az.FrontDoor Zainstaluj moduły i Az.Cdn PowerShell, aby pracować z usługą Azure Front Door Standard lub Premium z poziomu programu PowerShell.

Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn

Moduł służy Az.Cdn do pracy z zasobami usługi Azure Front Door Standard lub Premium. Użyj modułu Az.FrontDoor do pracy z zasobami zapory aplikacji internetowej.

Tworzenie grupy zasobów

Użyj polecenia cmdlet New-AzResourceGroup , aby utworzyć nową grupę zasobów dla profilu usługi Azure Front Door i zasad zapory aplikacji internetowej. Zaktualizuj nazwę i lokalizację grupy zasobów dla własnych wymagań:

$resourceGroupName = 'FrontDoorRateLimit'

New-AzResourceGroup -Name $resourceGroupName -Location 'westus'

Tworzenie profilu usługi Azure Front Door

Użyj polecenia cmdlet New-AzFrontDoorCdnProfile , aby utworzyć nowy profil usługi Azure Front Door.

W tym przykładzie utworzysz standardowy profil usługi Azure Front Door o nazwie MyFrontDoorProfile:

$frontDoorProfile = New-AzFrontDoorCdnProfile `
  -Name 'MyFrontDoorProfile' `
  -ResourceGroupName $resourceGroupName `
  -Location global `
  -SkuName Standard_AzureFrontDoor

Tworzenie punktu końcowego usługi Azure Front Door

Użyj polecenia cmdlet New-AzFrontDoorCdnEndpoint , aby dodać punkt końcowy do profilu usługi Azure Front Door.

Punkty końcowe usługi Azure Front Door muszą mieć globalnie unikatowe nazwy, więc zaktualizuj wartość zmiennej $frontDoorEndpointName na coś unikatowego.

$frontDoorEndpointName = '<unique-front-door-endpoint-name>'

$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
  -EndpointName $frontDoorEndpointName `
  -ProfileName $frontDoorProfile.Name `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Location $frontDoorProfile.Location

Definiowanie warunku dopasowania adresu URL

Użyj polecenia cmdlet New-AzFrontDoorWafMatchConditionObject , aby utworzyć warunek dopasowania w celu zidentyfikowania żądań, które powinny mieć zastosowany limit szybkości.

Poniższy przykład pasuje do żądań, w których zmienna RequestUri zawiera ciąg /promo:

$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
  -MatchVariable RequestUri `
  -OperatorProperty Contains `
  -MatchValue '/promo'

Tworzenie niestandardowej reguły limitu szybkości

Użyj polecenia cmdlet New-AzFrontDoorWafCustomRuleObject , aby utworzyć regułę rate-limit, która zawiera warunek dopasowania zdefiniowany w poprzednim kroku i próg żądania.

W poniższym przykładzie ustawiono limit na 1000:

$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
  -Name 'rateLimitRule' `
  -RuleType RateLimitRule `
  -MatchCondition $promoMatchCondition `
  -RateLimitThreshold 1000 `
  -Action Block `
  -Priority 1

Gdy dowolny źródłowy adres IP wysyła ponad 1000 żądań w ciągu jednej minuty, zapora aplikacji internetowej blokuje kolejne żądania do następnej minuty.

Tworzenie zasad zapory aplikacji internetowej

Użyj polecenia cmdlet New-AzFrontDoorWafPolicy , aby utworzyć zasady zapory aplikacji internetowej, które obejmują utworzoną regułę niestandardową.

$wafPolicy = New-AzFrontDoorWafPolicy `
  -Name 'MyWafPolicy' `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Sku Standard_AzureFrontDoor `
  -CustomRule $promoRateLimitRule

Konfigurowanie zasad zabezpieczeń w celu skojarzenia profilu usługi Azure Front Door z zasadami zapory aplikacji internetowej

Użyj polecenia cmdlet New-AzFrontDoorCdnSecurityPolicy , aby utworzyć zasady zabezpieczeń dla profilu usługi Azure Front Door. Zasady zabezpieczeń kojarzą zasady zapory aplikacji internetowej z domenami, które mają być chronione przez regułę zapory aplikacji internetowej.

W tym przykładzie skojarzysz domyślną nazwę hosta punktu końcowego z zasadami zapory aplikacji internetowej:

$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

Wymagania wstępne

Przed rozpoczęciem konfigurowania zasad limitu szybkości skonfiguruj środowisko interfejsu wiersza polecenia platformy Azure i utwórz profil usługi Azure Front Door.

Konfigurowanie środowiska interfejsu wiersza polecenia platformy Azure

Interfejs wiersza polecenia platformy Azure udostępnia zestaw poleceń, które używają modelu usługi Azure Resource Manager do zarządzania zasobami platformy Azure.

Interfejs wiersza polecenia platformy Azure można zainstalować na komputerze lokalnym i używać go w dowolnej sesji powłoki. W tym miejscu zalogujesz się przy użyciu poświadczeń platformy Azure i zainstalujesz rozszerzenie interfejsu wiersza polecenia platformy Azure dla usługi Azure Front Door Standard lub Premium.

Nawiązywanie połączenia z platformą Azure za pomocą interaktywnego okna dialogowego logowania

Uruchom następujące polecenia, aby zalogować się na platformie Azure:

az login

Instalowanie rozszerzenia usługi Azure Front Door dla interfejsu wiersza polecenia platformy Azure

front-door Zainstaluj rozszerzenie, aby pracować z zaporą aplikacji internetowej usługi Azure Front Door za pomocą interfejsu wiersza polecenia platformy Azure:

az extension add --name front-door

Polecenia służą az afd do pracy z zasobami usługi Azure Front Door Standard lub Premium. az network front-door waf-policy Użyj poleceń, aby pracować z zasobami zapory aplikacji internetowej.

Tworzenie grupy zasobów

Użyj polecenia az group create , aby utworzyć nową grupę zasobów dla profilu usługi Azure Front Door i zasad zapory aplikacji internetowej. Zaktualizuj nazwę i lokalizację grupy zasobów dla własnych wymagań:

resourceGroupName='FrontDoorRateLimit'

az group create \
  --name $resourceGroupName \
  --location westus

Tworzenie profilu usługi Azure Front Door

Użyj polecenia az afd profile create , aby utworzyć nowy profil usługi Azure Front Door.

W tym przykładzie utworzysz standardowy profil usługi Azure Front Door o nazwie MyFrontDoorProfile:

frontDoorProfileName='MyFrontDoorProfile'

az afd profile create \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

Tworzenie punktu końcowego usługi Azure Front Door

Użyj polecenia az afd endpoint create , aby dodać punkt końcowy do profilu usługi Azure Front Door.

Punkty końcowe usługi Azure Front Door muszą mieć globalnie unikatowe nazwy, więc zaktualizuj wartość zmiennej frontDoorEndpointName na coś unikatowego.

frontDoorEndpointName='<unique-front-door-endpoint-name>'

az afd endpoint create \
  --endpoint-name $frontDoorEndpointName \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \

Tworzenie zasad zapory aplikacji internetowej

Użyj polecenia az network front-door waf-policy create , aby utworzyć zasady zapory aplikacji internetowej:

wafPolicyName='MyWafPolicy'

az network front-door waf-policy create \
  --name $wafPolicyName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

Przygotowanie do dodania niestandardowej reguły limitu szybkości

Użyj polecenia az network front-door waf-policy rule create , aby utworzyć niestandardową regułę limitu szybkości. W poniższym przykładzie ustawiono limit na 1000 żądań na minutę.

Reguły limitu szybkości muszą zawierać warunek dopasowania, który zostanie utworzony w następnym kroku. W tym poleceniu dołączysz --defer argument , który nakazuje interfejsowi wiersza polecenia platformy Azure, aby jeszcze nie przesyłał reguły do platformy 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

Gdy dowolny źródłowy adres IP wysyła ponad 1000 żądań w ciągu jednej minuty, zapora aplikacji internetowej blokuje kolejne żądania do następnej minuty.

Dodawanie warunku dopasowania

Użyj polecenia az network front-door waf-policy rule match-condition add , aby dodać warunek dopasowania do reguły niestandardowej. Warunek dopasowania identyfikuje żądania, które powinny mieć zastosowany limit szybkości.

Poniższy przykład pasuje do żądań, w których zmienna RequestUri zawiera ciąg /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

Po przesłaniu tego polecenia interfejs wiersza polecenia platformy Azure tworzy regułę limitu szybkości i dopasuj warunek razem.

Konfigurowanie zasad zabezpieczeń w celu skojarzenia profilu usługi Azure Front Door z zasadami zapory aplikacji internetowej

Użyj polecenia az afd security-policy create , aby utworzyć zasady zabezpieczeń dla profilu usługi Azure Front Door. Zasady zabezpieczeń kojarzą zasady zapory aplikacji internetowej z domenami, które mają być chronione przez regułę zapory aplikacji internetowej.

W tym przykładzie skojarzysz domyślną nazwę hosta punktu końcowego z zasadami zapory aplikacji internetowej:

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

Powyższy kod wyszukuje identyfikatory zasobów platformy Azure dla zasad zapory aplikacji internetowej i punktu końcowego usługi Azure Front Door, aby umożliwić skojarzenie ich z zasadami zabezpieczeń.

Uwaga

Za każdym razem, gdy wprowadzisz zmiany w zasadach zapory aplikacji internetowej, nie musisz ponownie tworzyć zasad zabezpieczeń usługi Azure Front Door. Aktualizacje zasad zapory aplikacji internetowej są automatycznie stosowane do domen usługi Azure Front Door.

Szybki start

Aby utworzyć profil usługi Azure Front Door z regułą limitu szybkości przy użyciu usługi Bicep, zobacz przewodnik Szybki start dotyczący usługi Azure Front Door Standard lub Premium z limitem szybkości Bicep.

Następne kroki

Dowiedz się więcej o usłudze Azure Front Door.