Konfigurieren einer WAF-Richtlinie mithilfe von Azure PowerShell

Eine WAF-Richtlinie (Web Application Firewall) definiert die Überprüfungen, die erforderlich sind, wenn eine Anforderung bei Azure Front Door eingeht.

Dieser Artikel zeigt, wie man eine WAF-Richtlinie für Azure Front Door Standard oder Premium konfiguriert, die aus einigen benutzerdefinierten Regeln besteht und das von Azure verwaltete Standardregelwerk aktiviert hat. Benutzerdefinierte Regeln gelten sowohl für die Standard- als auch für die Premium-Stufen. Verwaltete Regelsätze, wie das Default Rule Set, benötigen die Premium-Stufe.

Benutzerdefinierte Regeln und das Standard-Regelwerk sind optional; fügen Sie entweder eine oder beide ein, um Ihren Bedürfnissen zu entsprechen. Du stellst den WAF-Richtlinienmodus (Erkennung oder Prävention) ein, wenn du die Richtlinie in einem späteren Schritt erstellst.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.

  • Ein Azure Front Door Standard- oder Premium-Profil. Wenn Sie ein Profil erstellen müssen, lesen Sie Schnellstart: Erstellen eines Azure Front Door Standard/Premium-Profils mit PowerShell. Die Beispiele in diesem Artikel verwenden ein Premium-Profil, da verwaltete Regelsätze die Premium-Stufe erfordern.

  • Azure Cloud Shell oder Azure PowerShell.

    Die Schritte in diesem Artikel führen die Azure PowerShell-Cmdlets interaktiv in Azure Cloud Shell aus. Um die Cmdlets in der Cloud Shell auszuführen, wählen Sie in der oberen rechten Ecke eines Codeblocks "Cloud Shell öffnen " aus. Wählen Sie Kopieren aus, um den Code zu kopieren und fügen Sie ihn in Cloud Shell ein, um ihn auszuführen. Sie können die Cloud Shell auch innerhalb des Azure-Portals ausführen.

    Sie können Azure PowerShell auch lokal installieren, um die Cmdlets auszuführen. Wenn Sie PowerShell lokal ausführen, melden Sie sich mit dem Cmdlet Connect-AzAccount bei Azure an.

  • Die Az.Cdn und Az.FrontDoor PowerShell-Module. Nutze das Az.Cdn Modul, um mit Azure Front Door Standard- und Premium-Ressourcen zu arbeiten, und das ModulAz.FrontDoor, um mit WAF-Ressourcen zu arbeiten. Installieren Sie beide Module, indem Sie folgende Befehle ausführen:

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

Benutzerdefinierte Regel basierend auf HTTP-Parametern

Im folgenden Beispiel wird veranschaulicht, wie eine benutzerdefinierte Regel mit zwei Vergleichsbedingungen mithilfe von New-AzFrontDoorWafMatchConditionObject konfiguriert wird. Die Anforderungen stammen von einer angegebenen Website, die vom Referrer definiert wird. Die Abfragezeichenfolge enthält nicht password.

$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

Benutzerdefinierte Regel basierend auf einer HTTP-Anforderungsmethode

Erstellen Sie mithilfe von New-AzFrontDoorWafCustomRuleObject eine Regel, mit der die PUT-Methode blockiert wird.

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

Erstellen einer benutzerdefinierten Regel basierend auf Größenbeschränkung

Das folgende Beispiel erstellt eine Regel, die Anfragen mit einer URL länger als 100 Zeichen durch Azure PowerShell blockiert.

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

Hinzufügen eines verwalteten Standardregelsatzes

Verwaltete Regelsätze sind auf Azure Front Door Premium verfügbar. Das folgende Beispiel erstellt ein verwaltetes Default Rule Set-Objekt mithilfe von Azure PowerShell.

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

Hinweis

Verwaltete Regelsätze erfordern Azure Front Door Premium. Azure Front Door Standard unterstützt nur benutzerdefinierte Regeln. Dieses Beispiel verwendet Microsoft_DefaultRuleSet Version 2.2. Für alle verfügbaren Versionen siehe Web Application Firewall DRS-Regelgruppen und -regeln.

Erstellen einer WAF-Richtlinie

Erstellen Sie eine WAF-Richtlinie, die die benutzerdefinierten Regeln und das verwaltete Standardregelwerk aus den vorherigen Schritten enthält, indem Sie New-AzFrontDoorWafPolicy verwenden. Setze -Sku auf Premium_AzureFrontDoor, um verwaltete Regeln einzuschließen, oder auf Standard_AzureFrontDoor nur für benutzerdefinierte Regeln.

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

Verknüpfe die WAF-Richtlinie mit deinem Endpunkt

Für Azure Front Door Standard und Premium verknüpfen Sie eine WAF-Policy mit Ihrem Endpunkt, indem Sie eine Sicherheitsrichtlinie im Azure Front Door-Profil erstellen. Eine Sicherheitsrichtlinie verknüpft deine WAF-Richtlinie mit den Domänen, die du vom WAF schützen möchtest.

Rufen Sie Ihren Endpunkt ab, indem Sie Get-AzFrontDoorCdnEndpoint verwenden, und ersetzen Sie die Namen der Ressourcengruppen, des Profils und des Endpunkts durch Ihre eigenen. Dann verwenden Sie New-AzFrontDoorCdnSecurityPolicy , um den Standard-Hostnamen des Endpunkts mit Ihrer WAF-Richtlinie zu verknüpfen.

$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

Hinweis

Eine Sicherheitsrichtlinie gilt für die Domänen, die ihr zugeordnet sind. Um mehr Domains zu schützen, fügen Sie sie der Assoziation hinzu oder erstellen Sie zusätzliche Sicherheitsrichtlinien.