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
- Konfigurieren einer WAF-Richtlinie mithilfe von Azure PowerShell
- Erfahren Sie mehr über Azure Web Application Firewall in Azure Front Door.
- Erfahren Sie, wie Sie eine Azure Front Door-Instanz erstellen.