Web Application Firewall mit Ausschlusslisten für Azure Front Door
Es kann vorkommen, dass die Azure Web Application Firewall in Azure Front Door eine legitime Anforderung blockiert. Im Rahmen der Optimierung Ihrer Web Application Firewall (WAF) können Sie die WAF so konfigurieren, dass die Anforderung für Ihre Anwendung zugelassen wird. Mit WAF-Ausschlusslisten können Sie bestimmte Anforderungsattribute in einer WAF-Auswertung auslassen. Der Rest der Anforderung wird wie gewohnt ausgewertet.
Beispielsweise bietet Microsoft Entra ID-Token, die für die Authentifizierung verwendet werden. Wenn diese Token in einem Anforderungsheader verwendet werden, können sie Sonderzeichen enthalten, die False-Positive-Erkennungen der WAF-Regeln auslösen können. Sie können die Kopfzeile einer Ausschlussliste hinzufügen, die die WAF anweist, sie zu ignorieren. Die WAF überprüft weiterhin den Rest der Anforderung auf verdächtige Inhalte.
Ausschlussbereiche
Sie können Ausschlüsse in den folgenden Bereichen erstellen:
- Regelsatz: Diese Ausschlüsse gelten für alle Regeln innerhalb eines Regelsatzes.
- Regelgruppe: Diese Ausschlüsse gelten für alle Regeln einer bestimmten Kategorie innerhalb eines Regelsatzes. Beispielsweise können Sie einen Ausschluss konfigurieren, der für alle Regeln zur Einschleusung von SQL-Befehlen gilt.
- Regel: Diese Ausschlüsse betreffen eine einzelne Regel.
Ausschlussselektoren
Ausschlussselektoren identifizieren die Teile von Anforderungen, für die der Ausschluss gilt. Die WAF ignoriert alle Erkennungen, die sie in den angegebenen Teilen der Anforderung findet. Sie können in einem Ausschluss mehrere Ausschlussselektoren angeben.
Jeder Ausschlussselektor gibt eine Übereinstimmungsvariable, einen Operator und einen Selektor an.
Übereinstimmungsvariablen
Sie können die folgenden Anforderungsattribute einem Ausschluss hinzufügen:
- Name des Anforderungsheaders
- Name des Anforderungscookies
- Name der Abfragezeichenfolgenargumente
- Request body POST args name
- Request body JSON args name (unterstützt ab DRS 2.0)
Die Werte der Felder, die Sie verwenden, werden nicht anhand von WAF-Regeln ausgewertet, aber ihre Namen werden ausgewertet. Die Ausschlusslisten deaktivieren die Überprüfung des Feldwerts. Die Feldnamen werden jedoch weiterhin ausgewertet. Weitere Informationen finden Sie unter Ausschließen anderer Anforderungsattribute.
Operatoren
Sie können genaue Anforderungsheader oder -texte, Cookies oder Abfragezeichenfolgenattribute für die Übereinstimmung angeben. Oder Sie können optional teilweise Übereinstimmungen angeben. Für Übereinstimmungskriterien werden die folgenden Operatoren unterstützt:
- Gleich: stimmt mit allen Anforderungsfeldern überein, die genau dem angegebenen Selektorwert entsprechen. Verwenden Sie beispielsweise zum Auswählen eines Headers namens bearerToken den Operator
Equals
mit dem Selektor bearerToken. - Beginnt mit: stimmt mit allen Anforderungsfeldern überein, die mit dem angegebenen Selektorwert beginnen.
- Endet mit: stimmt mit allen Anforderungsfeldern überein, die mit dem angegebenen Selektorwert enden.
- Enthält: stimmt mit allen Anforderungsfeldern überein, die den angegebenen Selektorwert enthalten.
- Beliebig: stimmt mit allen Anforderungsfeldern überein. Wenn Sie den Operator
Equals any
verwenden, wird der Selektorwert automatisch auf*
festgelegt. Beispielsweise können Sie den OperatorEquals any
verwenden, um einen Ausschluss zu konfigurieren, der für alle Anforderungsheader gilt.
Groß- und Kleinschreibung
Bei Header- und Cookienamen wird Groß-/Kleinschreibung nicht berücksichtigt. Bei Abfragezeichenfolgen, POST-Argumenten und JSON-Argumenten wird die Groß-/Kleinschreibung beachtet.
Textinhaltsüberprüfung
Einige der verwalteten Regeln bewerten die unformatierten Nutzdaten des Anforderungstexts, bevor sie in POST-Argumente oder JSON-Argumente geparst wird. In einigen Situationen werden daher möglicherweise Protokolleinträge mit dem matchVariableName
-Wert von InitialBodyContents
oder DecodedInitialBodyContents
.
Beispiel: Sie erstellen einen Ausschluss mit der Übereinstimmungsvariable Request body POST args
und einem Selektor zum Identifizieren und Ignorieren von POST-Argumenten mit dem Namen FOO
. Einträge mit einem matchVariableName
-Wert von PostParamValue:FOO
werden nicht mehr angezeigt. Wenn jedoch ein POST-Argument mit dem Namen FOO
Text enthält, der eine Regel auslöst, kann die Erkennung im ursprünglichen Textinhalt im Protokoll enthalten sein. Sie können derzeit keine Ausschlüsse für anfängliche Textinhalte erstellen.
Definieren von Ausschlussregeln basierend auf Azure Web Application Firewall-Protokollen
Sie können über Protokolle die Details einer blockierten Anforderung anzeigen, einschließlich der Teile der Anforderung, die die Regel ausgelöst haben. Weitere Informationen finden Sie unter Azure Web Application Firewall-Überwachung und -Protokollierung.
Manchmal erzeugt eine bestimmte WAF-Regel False-Positive-Erkennungen aus den Werten in einem Anforderungsheader, Cookie, POST-Argument, Abfragezeichenfolgenargument oder JSON-Feld eines Anforderungstexts. Wenn diese False-Positive-Erkennungen auftreten, können Sie die Regel so konfigurieren, dass der relevante Teil der Anforderung aus der Auswertung ausgeschlossen wird.
Die folgende Tabelle enthält Beispielwerte aus WAF-Protokollen und die entsprechenden Ausschlussselektoren, die Sie erstellen können.
matchVariableName aus WAF-Protokollen | Regelausschluss im Portal |
---|---|
CookieValue:SOME_NAME | Name des Anforderungscookies entspricht SOME_NAME |
HeaderValue:SOME_NAME | Name des Anforderungsheaders entspricht SOME_NAME |
PostParamValue:SOME_NAME | Request body POST args name Equals SOME_NAME |
QueryParamValue:SOME_NAME | Argumentname der Abfragezeichenfolge entspricht SOME_NAME |
JsonValue:SOME_NAME | Request body JSON args name Equals SOME_NAME |
Ausschlüsse für JSON-Anforderungstexte
Ab DRS Version 2.0 werden JSON-Anforderungstexte von der WAF überprüft. Betrachten Sie beispielsweise diesen JSON-Anforderungstext:
{
"posts": [
{
"id": 1,
"comment": ""
},
{
"id": 2,
"comment": "\"1=1\""
}
]
}
Die Anforderung enthält eine Zeichenabfolge in einem SQL-Kommentar, die die WAF als potenziellen Angriff durch Einschleusung von SQL-Befehlen erkennt.
Wenn Sie ermitteln, dass die Anforderung legitim ist, können Sie einen Ausschluss mit der Übereinstimmungsvariable Request body JSON args name
, dem Operator von Equals
und dem Selektor posts.comment
erstellen.
Ausschließen anderer Anforderungsattribute
Wenn in Ihrem WAF-Protokolleintrag ein matchVariableName
-Wert angezeigt wird, der sich nicht in der vorherigen Tabelle befindet, können Sie keinen Ausschluss erstellen. Beispielsweise können Sie derzeit keine Ausschlüsse für Cookienamen, Kopfzeilennamen, POST-Parameternamen oder Abfrageparameternamen erstellen.
Ziehen Sie stattdessen eine der folgenden Aktionen in Betracht:
- Deaktivieren Sie die Regeln, die zu False-Positive-Ergebnissen führen.
- Erstellen Sie eine benutzerdefinierte Regel, die diese Anforderungen explizit zulässt. Die Anforderungen umgehen alle WAF-Untersuchungen.
Wenn der matchVariableName
-Wert CookieName
, HeaderName
, PostParamName
oder QueryParamName
lautet, bedeutet dies insbesondere, dass der Name des Felds und nicht dessen Wert die Regel ausgelöst hat. Diese matchVariableName
-Werte werden derzeit von Regelausschlüssen nicht unterstützt.
Nächste Schritte
- Konfigurieren von Ausschlusslisten in Ihrer Azure Front Door WAF.
- Nach dem Konfigurieren Ihrer WAF-Einstellungen informieren Sie sich darüber, wie Sie WAF-Protokolle anzeigen. Weitere Informationen finden Sie unter Azure Front Door-Diagnose.