Benutzerdefinierte Regeln für Web Application Firewall v2 in Azure Application Gateway

Die Web Application Firewall (WAF) v2 in Azure Application Gateway enthält einen vorkonfigurierten, von der Plattform verwalteten Regelsatz, der Schutz vor verschiedensten Angriffsarten bietet. Hierzu zählen unter anderem websiteübergreifende Skripts und die Einschleusung von SQL-Befehlen. WAF-Administratoren können die Regeln des Kernregelsatzes (Core Rule Set, CRS) bei Bedarf durch selbst geschriebene Regeln erweitern. Die benutzerdefinierten Regeln können angeforderten Datenverkehr auf der Grundlage von Abgleichskriterien blockieren, zulassen oder protokollieren. Wenn die WAF-Richtlinie auf den Erkennungsmodus festgelegt ist und eine benutzerdefinierte Blockierungsregel ausgelöst wird, wird die Anforderung protokolliert und keine Blockieren-Aktion ausgeführt.

Benutzerdefinierte Regeln ermöglichen die Erstellung eigener Regeln, die für jede Anforderung ausgewertet werden, die die WAF durchläuft. Diese Regeln haben eine höhere Priorität als die restlichen Regeln in den verwalteten Regelsätzen. Die benutzerdefinierten Regeln enthalten einen Regelnamen, eine Regelpriorität und ein Array von Abgleichsbedingungen. Wenn diese Bedingungen erfüllt sind, erfolgt eine Aktion (Zulassen, Blockieren oder Protokollieren). Wenn eine benutzerdefinierte Regel ausgelöst wird und eine Zulassen- oder Blockieren-Aktion erfolgt, werden keine weiteren benutzerdefinierten oder verwalteten Regeln ausgewertet. Benutzerdefinierte Regeln können bei Bedarf aktiviert/deaktiviert werden.

So können beispielsweise alle Anforderungen von einer IP-Adresse im Bereich 192.168.5.0/24 blockiert werden. In dieser Regel ist der Operator IPMatch, „matchValues“ ist der IP-Adressbereich (192.168.5.0/24), und die Aktion ist die Blockierung des Datenverkehrs. Außerdem legen Sie den Namen, die Priorität und den aktivierten/deaktivierten Status fest.

Benutzerdefinierte Regeln unterstützen die Verwendung von Verknüpfungslogik zur Erstellung komplexerer Regeln für Ihre individuellen Sicherheitsanforderungen. Sie können beispielsweise zwei benutzerdefinierte Regeln verwenden, um die folgende Logik zu erstellen: ((Regel1:Bedingung 1 und Regel1:Bedingung 2) oder Regel2:Bedingung 3). Diese Logik bedeutet, dass die WAF die in den benutzerdefinierten Regeln angegebene Aktion ausführen soll, wenn Bedingung 1 und Bedingung 2 erfüllt sind oder wenn Bedingung 3 erfüllt ist.

Verschiedene Abgleichsbedingungen innerhalb der gleichen Regel sind immer durch und verknüpft. Beispiel: Blockieren des Datenverkehrs von einer bestimmten IP-Adresse nur bei Verwendung eines bestimmten Browsers.

Wenn Sie oder zwischen zwei verschiedenen Bedingungen verwenden möchten, dann müssen sich die beiden Bedingungen in verschiedenen Regeln befinden. Beispiel: Blockieren des Datenverkehrs von einer bestimmten IP-Adresse oder Blockieren des Datenverkehrs bei Verwendung eines bestimmten Browsers.

In benutzerdefinierten Regeln werden genau wie in den Kernregelsätzen auch reguläre Ausdrücke unterstützt. Entsprechende Beispiele finden Sie unter Erstellen und Verwenden von benutzerdefinierten Regeln für Web Application Firewall v2 auf Application Gateway in den Beispielen 3 und 5.

Hinweis

Es können maximal 100 benutzerdefinierte WAF-Regeln verwendet werden. Weitere Informationen zu Application Gateway-Grenzwerten finden Sie unter Grenzwerte für Azure-Abonnements, -Dienste und -Kontingente sowie allgemeine Beschränkungen.

Achtung

Alle Umleitungsregeln, die auf Anwendungsgatewayebene gelten, umgehen benutzerdefinierte WAF-Regeln. Weitere Informationen zu Umleitungsregeln finden Sie unter Übersicht über die Umleitung in Application Gateway.

Zulassen/Blockieren

Mit benutzerdefinierten Regeln lässt sich Datenverkehr ganz einfach zulassen oder blockieren. So können Sie beispielsweise sämtlichen Datenverkehr aus einem IP-Adressbereich blockieren. Mithilfe einer weiteren Regel können Sie Datenverkehr zulassen, wenn die Anforderung von einem bestimmten Browser stammt.

Wenn Sie etwas zulassen möchten, muss der Parameter -Action auf Allow festgelegt sein. Wenn Sie etwas blockieren möchten, muss der Parameter -Action auf Block festgelegt sein.

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

$BlockRule im obigen Code ist der folgenden benutzerdefinierten Regel in Azure Resource Manager zugeordnet:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

Diese benutzerdefinierte Regel enthält einen Namen, eine Priorität, eine Aktion und das Array von Abgleichsbedingungen, die erfüllt sein müssen, damit die Aktion ausgeführt wird. Die einzelnen Felder werden in den folgenden Feldbeschreibungen ausführlicher erläutert. Beispiele für benutzerdefinierte Regeln finden Sie unter Create and use Web Application Firewall custom rules (Erstellen und Verwenden benutzerdefinierter Web Application Firewall-Regeln).

Felder für benutzerdefinierte Regeln

Name (optional)

Der Name der Regel. Dieser wird in den Protokollen angezeigt.

Regel aktivieren [optional]

Aktivieren/deaktivieren dieser Regel. Standardmäßig sind benutzerdefinierte Regeln aktiviert.

Priorität (erforderlich)

  • Bestimmt die Reihenfolge der Regelbewertung. Je niedriger der Wert, desto früher wird die Regel ausgewertet. Der zulässige Bereich liegt zwischen 1 und 100.
  • Muss für alle benutzerdefinierten Regeln eindeutig sein. Eine Regel mit der Priorität 40 wird vor einer Regel mit der Priorität 80 ausgewertet.

Regeltyp (erforderlich)

Muss derzeit MatchRule lauten.

Abgleichsvariable (erforderlich)

Muss eine der folgenden Variablen sein:

  • RemoteAddr: IPv4-Adresse/-bereich der Remotecomputerverbindung
  • RequestMethod: HTTP-Anforderungsmethode
  • QueryString: Variable im URI
  • PostArgs: Im POST-Text gesendete Argumente. Benutzerdefinierte Regeln mit dieser Abgleichsvariablen werden nur angewendet, wenn der Header „Content-Type“ auf „application/x-www-form-urlencoded“ und „multipart/form-data“ festgelegt ist. Der zusätzliche Inhaltstyp application/json wird mit CRS-Version 3.2 oder höher, Bot-Schutzregelsatz und benutzerdefinierten Regeln für die geografische Übereinstimmung unterstützt.
  • RequestUri: URI der Anforderung
  • RequestHeaders: Header der Anforderung
  • RequestBody: Diese Variable enthält den gesamten Anforderungstext. Benutzerdefinierte Regeln mit dieser Abgleichsvariablen werden nur angewendet, wenn der Header „Content-Type“ auf den Medientyp application/x-www-form-urlencoded festgelegt ist. Die zusätzlichen Inhaltstypen application/soap+xml, application/xml, text/xml werden mit CRS-Version 3.2 oder höher, Bot-Schutzregelsatz und benutzerdefinierten Regeln für die geografische Übereinstimmung unterstützt.
  • RequestCookies: Cookies der Anforderung

Selektor (optional)

Beschreibt das Feld der matchVariable-Auflistung. Lautet die Abgleichsvariable (matchVariable) beispielsweise „RequestHeaders“, kann der Selektor etwa auf den Header User-Agent festgelegt werden.

Operator (erforderlich)

Muss einer der folgenden Operatoren sein:

  • IPMatch: Wird nur verwendet, wenn die Abgleichsvariable RemoteAddr lautet, und es wird nur IPv4 unterstützt.
  • Equal: Die Eingabe entspricht dem MatchValue.
  • Any: Darf keinen MatchValue haben. Wird für die Abgleichsvariable mit einem gültigen Selektor empfohlen.
  • Enthält
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • RegEx
  • Geomatch

Negationsbedingung (optional)

Negiert die aktuelle Bedingung.

Transformation (optional)

Eine Zeichenfolgenliste mit Namen von Transformationen, die vor dem Abgleich ausgeführt werden sollen. Mögliche Transformationen:

  • Kleinbuchstaben
  • Großbuchstaben
  • Glätten
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

Abgleichswerte (erforderlich)

Liste mit Werten für den Abgleich (verknüpft durch oder). Dabei kann es sich beispielsweise um IP-Adressen oder um andere Zeichenfolgen handeln. Das Wertformat hängt vom vorherigen Operator ab.

Zu den unterstützten HTTP-Anforderungsmethodenwerten zählen:

  • GET
  • HEAD
  • POST
  • OPTIONS
  • PUT
  • DELETE
  • PATCH

Aktion (erforderlich)

Wenn im WAF-Richtlinienerkennungsmodus eine benutzerdefinierte Regel ausgelöst wird, wird die Aktion immer protokolliert, unabhängig vom Aktionswert, der für die benutzerdefinierte Regel festgelegt wurde.

  • Allow: Autorisiert die Transaktion. Alle anderen Regeln werden übersprungen. Die angegebene Anforderung wird in die Positivliste aufgenommen. Sobald sie übereinstimmt, wird die weitere Auswertung beendet und die Anforderung an den Back-End-Pool gesendet. Regeln in der Positivliste werden für keine weiteren benutzerdefinierten oder verwalteten Regeln ausgewertet.
  • Block: Blockiert oder protokolliert die Transaktion auf der Grundlage von „SecDefaultAction“ (Erkennungs-/Schutzmodus).
    • Schutzmodus: Blockiert die Transaktion auf Grundlage von „SecDefaultAction“. Genau wie die Allow Aktion, sobald die Anforderung ausgewertet und der Blockliste hinzugefügt wurde, wird die Auswertung beendet und die Anforderung blockiert. Jede Anforderung danach, die dieselben Bedingungen erfüllt, wird nicht ausgewertet und blockiert.
    • Erkennungsmodus – Protokolliert die Transaktion basierend auf „SecDefaultAction“, nach der die Auswertung beendet wurde. Jede Anforderung danach, die dieselben Bedingungen erfüllt, wird nicht ausgewertet und nur protokolliert.
  • Log: Ermöglicht der Regel das Schreiben in das Protokoll sowie die Auswertung der restlichen Regeln. Alle weiteren benutzerdefinierten Regeln werden gemäß ihrer Priorität ausgewertet – gefolgt von den verwalteten Regeln.

Kopieren und Duplizieren benutzerdefinierter Regeln

Benutzerdefinierte Regeln können innerhalb einer bestimmten Richtlinie dupliziert werden. Beim Duplizieren einer Regel müssen Sie einen eindeutigen Namen für die Regel und einen eindeutigen Prioritätswert angeben. Darüber hinaus können benutzerdefinierte Regeln aus einer WAF-Richtlinie von Application Gateway in eine andere kopiert werden, solange sich die Richtlinien im gleichen Abonnement befinden. Beim Kopieren einer Regel in eine andere Richtlinie müssen Sie die WAF-Richtlinie von Application Gateway auswählen, in die Sie die Regel kopieren möchten. Nachdem Sie die WAF-Richtlinie ausgewählt haben, müssen Sie der Regel einen eindeutigen Namen geben und einen Prioritätsrang zuweisen.

Benutzerdefinierte Geomatch-Regeln

Benutzerdefinierte Regeln ermöglichen Ihnen, maßgeschneiderte Regeln zu erstellen, die genau die Anforderungen Ihrer Anwendungen und Sicherheitsrichtlinien erfüllen. Sie können den Zugriff auf Ihre Webanwendungen länder-/regionsbasiert einschränken. Weitere Informationen finden Sie unter Benutzerdefinierte Geomatch-Regeln.

Nächste Schritte