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 Operator Equals 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