Share via


Verwenden von benutzerdefinierten Geomatch-Regeln von Azure WAF zur Verbesserung der Netzwerksicherheit

Web Application Firewalls (WAFs) sind ein wichtiges Tool zum Schutz von Webanwendungen vor schädlichen Angriffen. Sie können Webdatenverkehr mit voreingestellten und benutzerdefinierten Regeln filtern, überwachen und beenden. Sie können eine eigene Regel erstellen, die von der WAF für jede erhaltene Anforderung überprüft wird. Benutzerdefinierte Regeln haben eine höhere Priorität als die verwalteten Regeln und werden zuerst überprüft.

Eines der wichtigsten Features von Azure Web Application Firewall sind die benutzerdefinierten Geomatch-Regeln. Mit diesen Regeln können Sie Webanforderungen dem geografischen Standort zuordnen, von dem sie stammen. Sie könnten Anforderungen von bestimmten Orten beenden, die für schädliche Aktivitäten bekannt sind, oder auch Anforderungen von wichtigen Orten für Ihr Unternehmen zulassen. Benutzerdefinierte Geomatch-Regeln können auch dabei helfen, Gesetze bezüglich Datenhoheit und Datenschutz einzuhalten, indem Sie den Zugriff auf Ihre Webanwendungen basierend auf dem Benutzerstandort einschränken.

Verwenden Sie den Parameter „priority“ bei benutzerdefinierten Geomatch-Regeln mit Bedacht, um unnötige Prozesse oder Konflikte zu vermeiden. Die Reihenfolge, in der Regeln von Azure WAF ausgewertet werden, wird durch den Parameter „priority“ bestimmt. Er hat einen numerischen Wert zwischen 1 und 100, wobei niedrigere Werte einer höheren Priorität entsprechen. Die Priorität muss für alle benutzerdefinierten Regeln eindeutig sein. Weisen Sie kritischen oder spezifischen Regeln für die Webanwendungssicherheit höhere Priorität zu und senken Sie die Priorität für weniger wichtige oder allgemeine Regeln. Das stellt sicher, dass WAF die am besten geeigneten Aktionen auf Ihren Webdatenverkehr anwendet. So ist beispielsweise das Szenario, in dem Sie einen expliziten URI-Pfad identifizieren, das spezifischste und sollte eine Regel mit einer höheren Priorität haben als andere Mustertypen. Dadurch wird ein kritischer Pfad der Anwendung mit der höchsten Priorität geschützt, während allgemeiner Datenverkehr mit anderen benutzerdefinierten Regeln oder verwalteten Regelsätzen ausgewertet werden kann.

Damit der Absatz für ein technisches Publikum leichter verständlich ist, können Sie ihn wie folgt im Präsens Aktiv umformulieren:

Sie sollten Ihre Regeln immer testen, bevor Sie sie auf die Produktion anwenden, und ihre Leistung und Auswirkungen regelmäßig überprüfen. Befolgen Sie diese Best Practices, um die Webanwendungssicherheit mit den Vorteilen von benutzerdefinierten Geomatch-Regeln zu verbessern.

In diesem Artikel werden benutzerdefinierte Geomatch-Regeln von Azure WAF vorgestellt und es wird erläutert, wie Sie diese mit dem Azure-Portal, Bicep und Azure PowerShell erstellen und verwalten können.

Muster für benutzerdefinierte Geomatch-Regeln

Mit benutzerdefinierten Geomatch-Regeln können Sie verschiedene Sicherheitsziele erreichen, z. B. das Blockieren von Anforderungen aus Risikogebieten und das Zulassen von Anforderungen von vertrauenswürdigen Standorten. Sie sind besonders effektiv bei der Abwehr von verteilten Denial-of-Service(DDoS)-Angriffen, mit denen versucht wird, Ihre Webanwendung mit einer großen Anzahl von Anforderungen aus verschiedenen Quellen zu überfluten. Mit benutzerdefinierten Geomatch-Regeln können Sie Regionen, aus denen der Großteil des DDoS-Datenverkehrs stammt, umgehend ermitteln und blockieren, während legitimen Benutzern der Zugriff weiterhin gestattet wird. In diesem Artikel erfahren Sie mehr über verschiedene Muster für benutzerdefinierte Geomatch-Regeln, mit denen Sie Azure WAF optimieren können.

Szenario 1 – Blockieren des Datenverkehrs aus allen Ländern außer „x“

Benutzerdefinierte Geomatch-Regeln sind nützlich, wenn der Datenverkehr aus allen Ländern – außer einem bestimmten – blockiert werden soll. Wenn Ihre Webanwendung z. B. ausschließlich für Benutzer in den USA bestimmt ist, können Sie eine benutzerdefinierte Geomatch-Regel formulieren, die alle Anforderungen blockiert, die nicht aus den USA stammen. Diese Strategie minimiert effektiv die Angriffsfläche Ihrer Webanwendung und verhindert nicht autorisierten Zugriff aus anderen Regionen. Diese spezielle Technik verwendet eine negierte Bedingung, um dieses Datenverkehrsmuster zu unterstützen. Um eine benutzerdefinierte Geomatch-Regel zu erstellen, die den Datenverkehr aus allen Ländern außer den USA blockiert, beachten Sie die folgenden Beispiele für Portal, Bicep und PowerShell:

Portal-Beispiel – Application Gateway

Screenshot showing the Application Gateway WAF add custom rule screen.

Portal-Beispiel – Front Door

Screenshot showing the Front Door WAF add custom rule screen.

Hinweis

Beachten Sie, dass Sie in der Azure Front Door-WAF SocketAddr als Übereinstimmungsvariable und nicht RemoteAddr verwenden. Die Variable RemoteAddr ist die ursprüngliche Client-IP-Adresse, die normalerweise über den X-Forwarded-For-Anforderungsheader gesendet wird. Die SocketAddr-Variable ist die Quell-IP-Adresse, die die WAF sieht.

Bicep-Beispiel – Application Gateway

properties: {
    customRules: [
      {
        name: 'GeoRule1'
        priority: 10
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: true
            matchValues: [
              'US'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

Bicep-Beispiel – Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule1'
          enabledState: 'Enabled'
          priority: 10
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: true
              matchValue: [
                'US'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

Azure PowerShell-Beispiel – Application Gateway

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator GeoMatch -MatchValue "US" -NegationCondition $true
$rule = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule1 -Priority 10 -RuleType MatchRule -MatchCondition $condition -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

Azure PowerShell-Beispiel – Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $true
$customRuleObject = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule1" -RuleType MatchRule -MatchCondition $matchCondition -Action Block -Priority 10
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject

Szenario 2 – Blockieren des Datenverkehrs aus allen Ländern außer „x“ und „y“, der auf den URI „foo“ oder „bar“ abzielt

Stellen Sie sich ein Szenario vor, in dem Sie benutzerdefinierte Geomatch-Regeln verwenden müssen, um den Datenverkehr aus allen Ländern zu blockieren, mit Ausnahme des Datenverkehrs aus zwei oder mehr bestimmten Ländern, der auf einen bestimmten URI abzielt. Angenommen, Ihre Webanwendung hat bestimmte URI-Pfade, die nur für Benutzer in den USA und Kanada vorgesehen sind. In diesem Fall erstellen Sie eine benutzerdefinierte Geomatch-Regel, die alle Anforderungen blockiert, die nicht aus diesen Ländern stammen.

Dieses Muster verarbeitet Anforderungsnutzdaten aus den USA und Kanada über die verwalteten Regelsätze, wobei alle böswilligen Angriffe abgefangen werden, während die Anforderungen aus allen anderen Ländern blockiert werden. Dieser Ansatz stellt sicher, dass nur Ihre Zielgruppe auf Ihre Webanwendung zugreifen kann, während unerwünschter Datenverkehr aus anderen Regionen verhindert wird.

Um potenzielle False Positives zu minimieren, nehmen Sie die Landeskennzahl ZZ in die Liste auf, um IP-Adressen festzuhalten, die im Azure-Dataset noch keinem Land zugeordnet sind. Diese Technik verwendet eine negierte Bedingung für den Geolocation-Typ und eine nicht negierte Bedingung für die URI-Übereinstimmung.

Um eine benutzerdefinierte Geomatch-Regel zu erstellen, die Datenverkehr aus allen Ländern außer den USA und Kanada zu einem angegebenen URI blockiert, beachten Sie die folgenden Beispiele für Portal, Bicep und Azure PowerShell.

Portal-Beispiel – Application Gateway

Screenshot showing add custom rule for Application Gateway.

Portal-Beispiel – Front Door

Screenshot showing add custom rule for Front Door.

Bicep-Beispiel – Application Gateway

properties: {
    customRules: [
      {
        name: 'GeoRule2'
        priority: 11
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: true
            matchValues: [
              'US'
              'CA'
            ]
            transforms: []
          }
          {
            matchVariables: [
              {
                variableName: 'RequestUri'
              }
            ]
            operator: 'Contains'
            negationConditon: false
            matchValues: [
              '/foo'
              '/bar'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

Bicep-Beispiel – Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule2'
          enabledState: 'Enabled'
          priority: 11
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: true
              matchValue: [
                'US'
                'CA'
              ]
              transforms: []
            }
            {
              matchVariable: 'RequestUri'
              operator: 'Contains'
              negateCondition: false
              matchValue: [
                '/foo'
                '/bar'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

Azure PowerShell-Beispiel – Application Gateway

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable1a = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition1a = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1a -Operator GeoMatch -MatchValue @(“US”, “CA”) -NegationCondition $true
$variable1b = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestUri
$condition1b = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1b -Operator Contains -MatchValue @(“/foo”, “/bar”) -NegationCondition $false
$rule1 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule2 -Priority 11 -RuleType MatchRule -MatchCondition $condition1a, $condition1b -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule1)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

Azure PowerShell-Beispiel – Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition1a = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue @(“US”, "CA") -NegateCondition $true
$matchCondition1b = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty Contains -MatchValue @(“/foo”, “/bar”) -NegateCondition $false
$customRuleObject1 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule2" -RuleType MatchRule -MatchCondition $matchCondition1a, $matchCondition1b -Action Block -Priority 11
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject1

Szenario 3 – Blockieren des Datenverkehrs aus dem spezifischen Land „x“

Sie können benutzerdefinierte Geomatch-Regeln verwenden, um Datenverkehr aus spezifischen Ländern zu blockieren. Wenn Ihre Webanwendung beispielsweise viele böswillige Anforderungen aus dem Land „x“ empfängt, können Sie eine benutzerdefinierte Geomatch-Regel erstellen, um alle Anforderungen aus diesem Land zu blockieren. Dadurch wird Ihre Webanwendung vor potenziellen Angriffen geschützt und die Ressourcenlast reduziert. Wenden Sie dieses Muster an, um böswillige oder feindliche Angriffe aus mehreren Ländern zu blockieren. Diese Technik erfordert eine Vergleichsbedingung für das Datenverkehrsmuster. Um Datenverkehr aus dem Land „x“ zu blockieren, beachten Sie die folgenden Beispiele für Portal, Bicep und Azure PowerShell.

Portal-Beispiel – Application Gateway

Screenshot showing the application gateway add custom rule screen.

Portal-Beispiel – Front Door

Screenshot showing the front door add custom rule screen.

Bicep-Beispiel – Application Gateway

properties: {
    customRules: [
      {
        name: 'GeoRule3'
        priority: 12
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: false
            matchValues: [
              'US'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

Bicep-Beispiel – Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule3'
          enabledState: 'Enabled'
          priority: 12
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: false
              matchValue: [
                'US'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

Azure PowerShell-Beispiel – Application Gateway

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable2 = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition2 = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable2 -Operator GeoMatch -MatchValue "US" -NegationCondition $false
$rule2 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule3 -Priority 12 -RuleType MatchRule -MatchCondition $condition2 -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule2)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

Azure PowerShell-Beispiel – Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition2 = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $false
$customRuleObject2 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule3" -RuleType MatchRule -MatchCondition $matchCondition2 -Action Block -Priority 12
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject2

Antimuster für benutzerdefinierte Geomatch-Regeln

Vermeiden Sie Antimuster bei der Verwendung von benutzerdefinierten Geomatch-Regeln wie das Festlegen der Aktion für die benutzerdefinierte Regel auf allow anstelle von block. Das kann unbeabsichtigte Folgen haben, z. B. dass der Datenverkehr die WAF umgehen kann und Ihre Webanwendung anderen Bedrohungen ausgesetzt wird.

Anstatt die Aktion allow zu verwenden, verwenden Sie die Aktion block mit einer negierten Bedingung, wie in den vorhergehenden Mustern gezeigt. Das stellt sicher, dass nur Datenverkehr aus den gewünschten Ländern zugelassen wird und die WAF den gesamten anderen Datenverkehr blockiert.

Szenario 4 – Zulassen des Datenverkehrs aus dem Land „x“

Vermeiden Sie es, die benutzerdefinierte Geomatch-Regel so zu konfigurieren, dass der Datenverkehr aus einem bestimmten Land zugelassen wird. Wenn Sie beispielsweise den Datenverkehr aus den USA wegen der großen Kundenbasis zulassen möchten, könnte es sinnvoll erscheinen, eine benutzerdefinierte Regel mit der Aktion allow und dem Wert United States zu erstellen. Diese Regel lässt jedoch den gesamten Datenverkehr aus den USA zu, unabhängig davon, ob er schädliche Nutzdaten enthält oder nicht, da mit der Aktion allow die weitere Regelverarbeitung von verwalteten Regelsätzen umgangen wird. Zudem verarbeitet die WAF weiterhin Datenverkehr aus allen anderen Ländern und verbraucht Ressourcen. Dadurch wird Ihre Webanwendung böswilligen Anforderungen aus den USA ausgesetzt, die die WAF sonst blockieren würde.

Szenario 5 – Zulassen des Datenverkehrs aus allen Ländern außer „x“

Wenn Sie benutzerdefinierte Geomatch-Regeln verwenden, sollten Sie es vermeiden, die Regelaktion auf allow festzulegen und eine Liste von Ländern anzugeben, die ausgeschlossen werden sollen. Wenn Sie beispielsweise den Datenverkehr aus allen Ländern außer den USA zulassen möchten, wo Sie böswillige Aktivitäten vermuten, kann dieser Ansatz unbeabsichtigte Folgen haben. Dadurch kann Datenverkehr aus nicht überprüften oder unsicheren Ländern oder Ländern mit niedrigen oder ohne Sicherheitsstandards zugelassen werden, wodurch Ihre Webanwendung potenziellen Sicherheitsrisiken oder Angriffen ausgesetzt wird. Wenn Sie die Aktion allow für alle Länder außer die USA verwenden, wird die WAF angewiesen, Anforderungsdaten nicht mehr mit verwalteten Regelsätzen zu verarbeiten. Alle Regelauswertungen werden eingestellt, sobald die benutzerdefinierte Regel mit allow verarbeitet wird, wodurch die Anwendung unerwünschten böswilligen Angriffen ausgesetzt wird.

Verwenden Sie stattdessen eine restriktivere und spezifischere Regelaktion, beispielsweise „block“, und geben Sie eine Liste der zugelassenen Länder mit einer negierten Bedingung an. Dadurch wird sichergestellt, dass nur Datenverkehr von vertrauenswürdigen und bestätigten Quellen auf Ihre Webanwendung zugreifen kann, während verdächtiger oder unerwünschter Datenverkehr blockiert wird.

Nächste Schritte