Zum Inhalt springen

Referenz für ALB WAF Rule Selectors

Zuletzt aktualisiert am

Diese Seite listet alle Selector-Werte auf, die Sie in einer Custom-Rule-Bedingung auf der STACKIT Application Load Balancer Web Application Firewall (ALB WAF) verwenden können. Sie ergänzt den Abschnitt Regelstruktur auf der Seite zu den ALB WAF-Funktionen, der erläutert, wie die Selektoren zu einer vollständigen Regel kombiniert werden.

Das folgende Diagramm zeigt, wo die Selektoren auf dieser Seite in das ALB WAF-Objekt-Modell eingebettet sind. Ein ALB-Listener hängt sich an eine einzelne ALB WAF-Konfiguration, die höchstens ein Managed Rule Set (zum Beispiel das OWASP Core Rule Set) und höchstens eine Custom Rule Group referenzieren kann. Eine Custom Rule Group enthält Regeln, und jede Regel enthält eine oder mehrere Bedingungen, die aus den drei unten dokumentierten Selector-Typen aufgebaut sind.

Diagram

Eine einzelne Bedingung in einer Custom Rule kombiniert drei Selektoren:

  • Eine Variable – der Teil der HTTP-Transaktion, der geprüft werden soll.
  • Null oder mehr Transformationen – Schritte zur Normalisierung, die auf die Variable vor dem Vergleich angewendet werden.
  • Ein Operator – die Logik des Vergleichs, die gegen die transformierte Variable ausgeführt wird.

Nur die auf dieser Seite aufgeführten Werte werden von der ALB WAF-API akzeptiert. Coraza SecLang definiert zusätzliche Selektoren, die STACKIT derzeit nicht bereitstellt; Anfragen mit nicht unterstützten Werten werden zum Zeitpunkt der Validierung abgelehnt.

Eine Variable identifiziert, welches Element der HTTP-Transaktion die Bedingung prüft. Geben Sie die Variable als condition.variable.type in der API an. Bei map-förmigen Variablen (Header, Cookies, Argumente) können Sie den Bereich durch Setzen von condition.variable.value auf einen einzelnen Schlüssel einschränken (zum Beispiel Host innerhalb von VARIABLE_REQUEST_HEADERS).

Die folgenden Tabellen listen alle unterstützten Variablen auf, gruppiert nach der Seite der Transaktion, die sie adressieren.

Variablen in dieser Gruppe prüfen Daten, die Ihr Backend an den Client zurückgibt. Sie eignen sich zur Erkennung von Information Disclosure oder Backend-Fehlermustern.

Variablen in dieser Gruppe prüfen Daten, die der Client an Ihr Backend sendet. Sie decken die Request-Zeile, Header, Cookies und den Body ab.

Variablen in dieser Gruppe decken Request-Argumente, Transport-Level-Attribute und den internen Engine-Zustand ab, der für das Verfassen von Regeln bereitgestellt wird.

Ein Operator definiert, wie eine transformierte Variable mit einem angegebenen Wert verglichen wird. Geben Sie den Operator in condition.operator.type und das Argument für den Vergleich in condition.operator.value an.

Die folgende Tabelle listet die unterstützten Operatoren und ihre erwarteten Typen auf. Vergleichs-Operatoren (OPERATOR_EQ, OPERATOR_GE, OPERATOR_GT, OPERATOR_LE, OPERATOR_LT) behandeln beide Seiten als Ganzzahlen.

| API-Konstante | Typ | Beschreibung | Beispiel | | :-------------------------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ | -------------- | | OPERATOR_BEGINS_WITH | String | Gibt true zurück, wenn die Eingabe mit dem Parameter-String beginnt. | /admin | | OPERATOR_CONTAINS | String | Gibt true zurück, wenn der Parameter-String irgendwo in der Eingabe vorkommt. | sqlmap | | OPERATOR_ENDS_WITH | String | Gibt true zurück, wenn die Eingabe mit dem Parameter-String endet. | .php | | OPERATOR_EQ | Integer | Numerische Gleichheit. Gibt true zurück, wenn der Wert der Eingabe dem Parameter entspricht. | 403 | | OPERATOR_GE | Integer | Numerisch größer als oder gleich. Gibt true zurück, wenn der Wert der Eingabe größer als oder gleich dem Parameter ist. | 500 | | OPERATOR_GT | Integer | Numerisch größer als. Gibt true zurück, wenn der Wert der Eingabe größer als der Parameter ist. | 1048576 | | OPERATOR_IP_MATCH | String | Gleicht eine IPv4- oder IPv6-Adresse gegen eine komma-separierte Liste von einzelnen IPs oder CIDR-Bereichen ab (zum Beispiel 192.168.1.0/24,10.0.0.5). | 192.168.1.0/24,10.0.0.5 | | OPERATOR_LE | Integer | Numerisch kleiner als oder gleich. Gibt true zurück, wenn der Wert der Eingabe kleiner als oder gleich dem Parameter ist. | 100 | | OPERATOR_LT | Integer | Numerisch kleiner als. Gibt true zurück, wenn der Wert der Eingabe kleiner als der Parameter ist. | 10 | | OPERATOR_RX | String | Regulärer Ausdrucks-Match mit RE2-Syntax. Unterstützt bis zu neun Capture Groups. | (?i)(union.\*select | drop\s+table) | | OPERATOR_STREQ | String | Groß-/Kleinschreibung-sensitiver String-Vergleich. Gibt true zurück, wenn der Eingabe-String identisch mit dem Parameter ist. | DELETE | | OPERATOR_STRMATCH | String | Groß-/Kleinschreibung-sensitiver Substring-Match. Gibt true zurück, wenn der Parameter irgendwo in der Eingabe vorkommt. Kombinieren Sie diesen Operator mit TRANSFORMATION_LOWERCASE für Groß-/Kleinschreibung-unabhängige Prüfungen. | <script> | | OPERATOR_VALIDATE_SCHEMA | String | Validiert den aktuellen Request- oder Response-Body gegen ein JSON Schema. Gibt true zurück, wenn der Body das Schema verletzt. | {"type":"object","required":["id"]} | | OPERATOR_VALIDATE_URL_ENCODING | None | Gibt true zurück, wenn die Eingabe fehlerhaft prozent-kodierte Sequenzen enthält (zum Beispiel nicht-hexadezimale Zeichen nach %). | (kein Wert) | | OPERATOR_VALIDATE_UTF8_ENCODING | None | Gibt true zurück, wenn die Eingabe kein gültiges UTF-8 ist, einschließlich fehlerhafter Sequenzen und überlanger Kodierungen. | (kein Wert) | | OPERATOR_WITHIN | String | Gibt true zurück, wenn der Wert der Eingabe im Parameter gefunden wird (der Parameter ist der Haystack, die Eingabe ist die Nadel). Nützlich für das Allow-Listing einer Menge von festen Werten. | GET,HEAD,POST |

Eine Transformation normalisiert die Variable, bevor der Operator ausgeführt wird. Geben Sie Transformationen als geordnete Liste in condition.transformations an; die Engine wendet sie in der angegebenen Reihenfolge an. Verwenden Sie TRANSFORMATION_NONE am Anfang der Liste, um die Pipeline explizit zu machen und das Erben von Standard-Werten zu vermeiden.

Die folgende Tabelle listet alle unterstützten Transformationen auf.

  • [ALB WAF Funktionen](/de/products/network/load-balancing-and-content-delivery/application-load-balancer/basics/features-ALB WAF/) — wie Variablen, Operatoren und Transformationen zu einer Regel kombiniert werden.
  • Grundkonzepte der ALB WAF — Objekt-Modell und Lebenszyklus.
  • Coraza SecLang Referenz — vorgelagerte Grammatik. STACKIT stellt eine Teilmenge über eine strukturierte JSON-API bereit.