Web Application Firewall mit Ausschlusslisten für Azure Front Door

Gilt für: ✔️ Front Door Premium

Manchmal blockiert Azure Web Application Firewall in Azure Front Door eine legitime Anforderung. 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 eine falsch positive Erkennung durch eine oder mehrere WAF-Regeln auslösen. 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.

Tipp

Machen Sie Ausschlüsse so eng und spezifisch wie möglich, um zu vermeiden, dass Angreifer versehentlich Platz für das Ausnutzen Ihres Systems hinterlassen. Wenn Sie eine Ausschlussregel hinzufügen müssen, verwenden Sie nach Möglichkeit Ausschlüsse pro 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. Mehrere Übereinstimmungen in einem einzigen Ausschluss werden als „OR“-Anweisungen behandelt.

Übereinstimmungsvariablen

Fügen Sie einem Ausschluss die folgenden Anforderungsattribute hinzu:

  • Name des Anforderungsheaders
  • Name des Anforderungscookies
  • Name der Abfragezeichenfolgenargumente
  • Anforderungstext POST-Argumentname
  • 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

Geben Sie einen exakten Anforderungsheader, Textkörper, Cookie oder Abfragezeichenfolgen-Attribut an, das übereinstimmen soll. Oder geben Sie optional teilweise Übereinstimmungen an. 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. Verwenden Sie beispielsweise den Equals any Operator, um einen Ausschluss zu konfigurieren, der für alle Anforderungsheader gilt.

Groß- und Kleinschreibung

Header- und Cookienamen sind nicht groß-/kleinschreibungssensitiv. 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 Anforderungstext POST-Argumentname entspricht SOME_NAME
QueryParamValue:SOME_NAME Argumentname der Abfragezeichenfolge entspricht SOME_NAME
JsonValue:SOME_NAME Anforderungstext JSON-Argumentname entspricht SOME_NAME

Ausschlüsse für JSON-Anforderungstexte

Ab DRS Version 2.0 inspiziert das WAF die JSON-Anforderungsinhalte. 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 feststellen, dass die Anforderung legitim ist, erstellen Sie einen Ausschluss mit einer Übereinstimmungsvariable von Request body JSON args name, einem Operator von Equals, und einer Auswahl von posts.comment.

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 Wert matchVariableName, CookieName, HeaderName, PostParamName oder QueryParamName ist, bedeutet dies, dass der Name des Felds, anstatt seines Werts, die Regel ausgelöst hat. Der Regelausschluss unterstützt diese matchVariableName Werte nicht.

Nächste Schritte