Benutzerdefinierte Regeln für Azure Web Application Firewall in Azure Front Door

Azure Web Application Firewall in Azure Front Door ermöglicht Ihnen, den Zugriff auf Ihre Webanwendungen anhand der Bedingungen zu steuern, die Sie definieren. Eine benutzerdefinierte WAF-Regel besteht aus einer Prioritätsnummer, einem Regeltyp, Vergleichsbedingungen und einer Aktion.

Es gibt zwei Arten von benutzerdefinierten Regeln: Übereinstimmungsregeln und Ratenlimitregeln. Eine Vergleichsregel steuert den Zugriff basierend auf einer Reihe von Vergleichsbedingungen. Eine Quotengrenzregel steuert den Zugriff basierend auf Vergleichsbedingungen und den Quoten eingehender Anforderungen. Sie können eine benutzerdefinierte Regel deaktivieren, damit sie nicht ausgewertet wird, aber dennoch die Konfiguration beibehalten.

Weitere Informationen zur Quotenbegrenzung finden Sie unter Was ist Quotenbegrenzung für Azure Front Door?.

Priorität, Aktionstypen und Vergleichsbedingungen

Sie können den Zugriff mit einer benutzerdefinierten WAF-Regel steuern, die eine Prioritätsnummer, einen Regeltyp, ein Array von Vergleichsbedingungen und eine Aktion definiert.

  • Priority

    Ein eindeutiger Integerwert, der die Reihenfolge der Auswertung von WAF-Regeln beschreibt. Regeln mit niedrigeren Prioritätswerten werden vor Regeln mit höheren Werten ausgewertet. Die Regelauswertung wird für jede Regelaktion mit Ausnahme von Protokoll beendet. Prioritätsnummern müssen für alle benutzerdefinierten Regeln eindeutig sein.

  • Aktion

    Definiert, wie eine Anforderung bei Übereinstimmung mit einer WAF-Regel weitergeleitet wird. Für den Fall, dass eine Anforderung mit einer benutzerdefinierten Regel übereinstimmt, können Sie eine der folgenden Aktionen auswählen:

    • Zulassen: Die WAF erlaubt die Verarbeitung der Anforderung, protokolliert einen Eintrag in den WAF-Protokollen und wird beendet.
    • Blockieren: Die Anforderung wird blockiert. Die WAF sendet eine Antwort an einen Client, ohne die Anforderung weiterzuleiten. Die WAF protokolliert einen Eintrag in den WAF-Protokollen und wird beendet.
    • Protokoll: Die WAF protokolliert einen Eintrag in WAF-Protokollen und wertet die nächste Regel in der Reihenfolge ihrer Priorität aus.
    • Umleiten: Die WAF leitet die Anforderung an einen angegebenen URI um, protokolliert einen Eintrag in den WAF-Protokollen, und wird beendet.
  • Vergleichsbedingung

    Definiert eine Übereinstimmungsvariable, einen Operator und einen Übereinstimmungswert. Jede Regel kann mehrere Vergleichsbedingungen enthalten. Eine Vergleichsbedingung kann auf einer geografischen Position, Client-IP-Adressen (CIDR), der Größe oder einer übereinstimmenden Zeichenfolge basieren. Eine übereinstimmende Zeichenfolge kann mit einer Liste von Übereinstimmungsvariablen abgeglichen werden.

    • Übereinstimmungsvariable

      • RequestMethod
      • QueryString
      • PostArgs
      • RequestUri
      • RequestHeader
      • RequestBody
      • Cookies
    • Operator

      • Beliebig: Wird häufig verwendet, um die Standardaktion zu definieren, wenn mit keiner Regel Übereinstimmung vorliegt. Der Beliebig-Operator stimmt mit allem überein.
      • Equal
      • Enthält
      • LessThan: Größenbeschränkung
      • GreaterThan: Größenbeschränkung
      • LessThanOrEqual: Größenbeschränkung
      • GreaterThanOrEqual: Größenbeschränkung
      • BeginsWith
      • EndsWith
      • RegEx
    • Regex

      Die folgenden Vorgänge werden nicht unterstützt:

      • Rückverweise und Erfassung von Teilausdrücken
      • Willkürliche Assertionen mit einer Breite von 0
      • Unterroutinenverweise und rekursive Muster
      • Bedingte Muster
      • Rückverfolgung von Steuerelementverben
      • Die Einzelbyte-Anweisung – „\C“
      • Die Anweisung für Zeilenvorschubübereinstimmung – „\R“
      • Die Startanweisung zum Zurücksetzen der Übereinstimmung – „\K“
      • Callouts und eingebetteter Code
      • Atomische Gruppierung und besitzanzeigende Quantifizierer
    • Negation [optional]

      Sie können die Bedingung negate auf true festlegen, wenn das Ergebnis einer Bedingung negiert werden soll.

    • Transformation (optional)

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

      • Großbuchstaben
      • Kleinbuchstaben
      • Glätten
      • RemoveNulls
      • UrlDecode
      • UrlEncode
    • Übereinstimmungswert

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

      • GET
      • POST
      • PUT
      • HEAD
      • Delete
      • LOCK
      • UNLOCK
      • PROFILE
      • OPTIONS
      • PROPFIND
      • PROPPATCH
      • MKCOL
      • COPY
      • MOVE
      • PATCH
      • CONNECT

Beispiele

Betrachten Sie die folgenden Beispiele.

Übereinstimmung basierend auf HTTP-Anforderungsparametern

Angenommen, Sie müssen eine benutzerdefinierte Regel konfigurieren, um Anforderungen zuzulassen, die den folgenden beiden Bedingungen entsprechen:

  • Der Wert des Referer-Headers entspricht einem bekannten Wert.
  • Die Abfragezeichenfolge enthält nicht das Wort password.

Hier finden Sie ein Beispiel für eine JSON-Beschreibung der benutzerdefinierten Regel:

{
  "name": "AllowFromTrustedSites",
  "priority": 1,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestHeader",
      "selector": "Referer",
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "www.mytrustedsites.com/referpage.html"
      ]
    },
    {
      "matchVariable": "QueryString",
      "operator": "Contains",
      "matchValue": [
        "password"
      ],
      "negateCondition": true
    }
  ],
  "action": "Allow"
}

Blockieren von HTTP PUT-Anforderungen

Angenommen, Sie müssen alle Anforderungen blockieren, die die HTTP PUT-Methode verwenden.

Hier finden Sie ein Beispiel für eine JSON-Beschreibung der benutzerdefinierten Regel:

{
  "name": "BlockPUT",
  "priority": 2,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestMethod",
      "selector": null,
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "PUT"
      ]
    }
  ],
  "action": "Block"
}

Größenbeschränkung

Mit der WAF von Azure Front Door können Sie benutzerdefinierte Regeln erstellen, die eine Längen- oder Größenbeschränkung auf einen Teil einer eingehenden Anforderung anwenden. Diese Größeneinschränkung wird in Bytes gemessen.

Angenommen, Sie müssen Anforderungen blockieren, bei denen die URL länger als 100 Zeichen ist.

Hier finden Sie ein Beispiel für eine JSON-Beschreibung der benutzerdefinierten Regel:

{
  "name": "URLOver100",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "GreaterThanOrEqual",
      "negateCondition": false,
      "matchValue": [
        "100"
      ]
    }
  ],
  "action": "Block"
}

Übereinstimmung basierend auf Anforderungs-URI

Angenommen, Sie müssen Anforderungen zulassen, bei denen der URI „login“ enthält.

Hier finden Sie ein Beispiel für eine JSON-Beschreibung der benutzerdefinierten Regel:

{
  "name": "URIContainsLogin",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "Contains",
      "negateCondition": false,
      "matchValue": [
        "login"
      ]
    }
  ],
  "action": "Allow"
}

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 Azure Front Door 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 Azure Front Door 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.

Nächste Schritte