Skonfiguruj zasady WAF za pomocą programu Azure PowerShell

Zasady zapory aplikacji internetowej (WAF) definiują inspekcje wymagane po nadejściu żądania do usługi Azure Front Door.

Ten artykuł pokazuje, jak skonfigurować politykę WAF dla Azure Front Door Standard lub Premium, która składa się z niestandardowych reguł i ma włączony domyślny zestaw reguł zarządzany przez Azure. Zasady niestandardowe obowiązują zarówno w poziomach Standard, jak i Premium. Zarządzane zestawy reguł, takie jak Domyślny Zestaw Reguł, wymagają poziomu Premium.

Niestandardowe reguły oraz domyślny zestaw reguł są opcjonalne; uwzględnij jedne z nich lub oba, w zależności od potrzeb. Ustawiasz tryb polityki WAF (Wykrywanie lub Zapobieganie) podczas tworzenia polityki w kolejnym etapie.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.

  • Profil usługi Azure Front Door w warstwie Standardowa lub Premium. Jeśli chcesz utworzyć taki profil, zobacz Szybki start: tworzenie profilu Azure Front Door Standard/Premium przy użyciu programu PowerShell. Przykłady w tym artykule korzystają z profilu Premium, ponieważ zarządzane zestawy reguł wymagają poziomu Premium.

  • Azure Cloud Shell lub Azure PowerShell.

    Kroki opisane w tym artykule umożliwiają interaktywne uruchamianie poleceń cmdlet Azure PowerShell w Azure Cloud Shell. Aby uruchomić polecenia cmdlet w usłudze Cloud Shell, wybierz pozycję Otwórz usługę Cloud Shell w prawym górnym rogu bloku kodu. Wybierz pozycję Copy aby skopiować kod, a następnie wklej go do Cloud Shell, aby go uruchomić. Możesz również uruchomić Cloud Shell z poziomu portalu Azure.

    Możesz również zainstalować program Azure PowerShell lokalnie , aby uruchomić polecenia cmdlet. Jeśli uruchomisz program PowerShell lokalnie, zaloguj się do Azure przy użyciu polecenia cmdlet Connect-AzAccount.

  • Moduły Az.Cdn i Az.FrontDoor programu PowerShell. Używaj modułu Az.Cdn do pracy z zasobami Azure Front Door Standard i Premium, a modułu Az.FrontDoor do pracy z zasobami WAF. Zainstaluj oba moduły, wykonując następujące polecenia:

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

Reguła niestandardowa oparta na parametrach HTTP

W poniższym przykładzie pokazano, jak skonfigurować regułę niestandardową z dwoma warunkami dopasowania przy użyciu polecenia New-AzFrontDoorWafMatchConditionObject. Żądania pochodzą z określonej witryny zdefiniowanej przez odwołanie, a ciąg zapytania nie zawiera passwordelementu .

$referer = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestHeader -OperatorProperty Equal -Selector "Referer" -MatchValue "www.mytrustedsites.com/referpage.html"
$password = New-AzFrontDoorWafMatchConditionObject -MatchVariable QueryString -OperatorProperty Contains -MatchValue "password"
$AllowFromTrustedSites = New-AzFrontDoorWafCustomRuleObject -Name "AllowFromTrustedSites" -RuleType MatchRule -MatchCondition $referer,$password -Action Allow -Priority 1

Reguła niestandardowa oparta na metodzie żądania HTTP

Utwórz regułę blokującą metodę PUT przy użyciu polecenia New-AzFrontDoorWafCustomRuleObject.

$put = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestMethod -OperatorProperty Equal -MatchValue PUT
$BlockPUT = New-AzFrontDoorWafCustomRuleObject -Name "BlockPUT" -RuleType MatchRule -MatchCondition $put -Action Block -Priority 2

Utwórz regułę niestandardową w oparciu o ograniczenie rozmiaru

Poniższy przykład tworzy regułę blokującą żądania o URL dłuższym niż 100 znaków, korzystając z Azure PowerShell.

$url = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty GreaterThanOrEqual -MatchValue 100
$URLOver100 = New-AzFrontDoorWafCustomRuleObject -Name "URLOver100" -RuleType MatchRule -MatchCondition $url -Action Block -Priority 3

Dodawanie zarządzanego domyślnego zestawu reguł

Zarządzane zestawy reguł są dostępne na Azure Front Door Premium. Poniższy przykład tworzy zarządzany obiekt Domyślnego Zestawu Reguł za pomocą Azure PowerShell.

$managedRules = New-AzFrontDoorWafManagedRuleObject -Type Microsoft_DefaultRuleSet -Version 2.2

Uwaga

Zestawy zarządzanych reguł wymagają wersji Premium usługi Azure Front Door. Azure Front Door Standard obsługuje wyłącznie reguły niestandardowe. Ten przykład używa wersji Microsoft_DefaultRuleSet 2.2. Aby zobaczyć wszystkie dostępne wersje, zobacz Web Application Firewall DRS: grupy reguł i reguły.

Tworzenie polityki WAF

Stwórz politykę WAF, która zawiera niestandardowe reguły oraz zarządzany Zestaw Domyślnych Reguł z poprzednich kroków, używając New-AzFrontDoorWafPolicy. Ustaw -Sku tak, aby Premium_AzureFrontDoor zawierał reguły zarządzane lub tylko Standard_AzureFrontDoor dla reguł niestandardowych.

$myWAFPolicy = New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Sku Premium_AzureFrontDoor -CustomRule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention

Połącz politykę WAF z Twoim punktem końcowym

W przypadku Azure Front Door Standard i Premium łączysz politykę WAF z punktem końcowym, tworząc politykę bezpieczeństwa na profilu Azure Front Door. Polityka bezpieczeństwa kojarzy Twoją politykę WAF z domenami, które chcesz, aby WAF chronił.

Odzyskaj swój punkt końcowy, korzystając z Get-AzFrontDoorCdnEndpoint, a następnie zamień nazwy grup zasobów, profilu i punktów końcowych własnymi. Następnie użyj New-AzFrontDoorCdnSecurityPolicy , aby powiązać domyślną nazwę hosta endpointu z polityką WAF.

$frontDoorEndpoint = Get-AzFrontDoorCdnEndpoint -ResourceGroupName $resourceGroupName -ProfileName $frontDoorProfileName -EndpointName $frontDoorEndpointName

$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
  -PatternsToMatch @("/*") `
  -Domain @(@{"Id"=$($frontDoorEndpoint.Id)})

$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
  -Association $securityPolicyAssociation `
  -WafPolicyId $myWAFPolicy.Id

New-AzFrontDoorCdnSecurityPolicy `
  -Name 'MySecurityPolicy' `
  -ProfileName $frontDoorProfileName `
  -ResourceGroupName $resourceGroupName `
  -Parameter $securityPolicyParameters

Uwaga

Do domen objętych jej powiązaniem obowiązuje polityka bezpieczeństwa. Aby chronić więcej domen, dodaj je do stowarzyszenia lub stwórz dodatkowe polityki bezpieczeństwa.