Felder, Funktionen und Ausdrücke verwenden

Neben Aktionen bilden Felder und Ausdrücke die Bausteine für benutzerdefinierte WAF-Regeln. Diese Elemente arbeiten zusammen, um die Kriterien für die Übereinstimmung einer benutzerdefinierten Regel zu definieren.

Felder

Wenn CIS eine HTTP Anfrage erhält, analysiert es die Anfrage und erstellt eine Tabelle mit Feldern für den Abgleich. Diese Feldtabelle existiert nur, während die Anfrage bearbeitet wird, und enthält die Anfrageeigenschaften, die für den Ausdrucksabgleich verwendet werden.

Die einzelnen Feldwerte können aus verschiedenen Bereichen bezogen werden, z. B.:

  • Primitive Eigenschaften, die direkt aus dem Datenverkehr abgerufen werden, zum Beispiel http.request.uri.path.
  • Abgeleitete Werte, die sich aus einer Transformation, Zusammensetzung oder Basisoperation ergeben, z. B. den Wert von http.request.uri.path in Kleinbuchstaben und als Feld eines anderen Felds verfügbar machen.
  • Computerwerte, die sich aus einer Suche, einer Berechnung oder anderem geschäftsrelevantem Wissen ergeben, beispielsweise eine Bedrohungsbewertung (cf.threat_score), die dynamisch durch einen maschinellen Lernprozess berechnet wurde, bei dem zugehörige primitive und abgeleitete Werte untersucht wurden.

Verfügbare Felder

Verfügbare Felder
Feldname Typ Beispielwert Anmerkungen
http.cookie Zeichenfolge session=A12345;-background=light Vollständiges Cookie als Zeichenfolge
http.host Zeichenfolge www.example.com Der in der vollständigen Anfrage-URI verwendete Hostname
http.referer Zeichenfolge HTTP-Referer-Header Der HTTPrequest Referer-Header, der die Adresse der Webseite enthält, die auf die aktuell angeforderte Seite verlinkt.
http.request.body.raw Zeichenfolge Der unveränderte HTTP Anfragetext.
http.request.full_uri Zeichenfolge https://www.example.com/articles/index?section=539061&expand=comments Der vollständige URI, wie vom Web-Server empfangen (schließt nicht #fragment ein, das nicht an Web-Server gesendet wird)
http.request.method Zeichenfolge POST Die Methode HTTP, in Großbuchstaben
http.request.uri Zeichenfolge /articles/index?section=539061&expand=comments Der absolute URI der Anforderung
http.request.uri.path Zeichenfolge /articles/index Der Pfad der Anforderung
http.request.uri.query Zeichenfolge section=539061&expand=comments Die gesamte Abfragezeichenfolge ohne das Begrenzungspräfix "?"
http.user_agent Zeichenfolge Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/65.0.3325.181 Safari/537.36 Der gesamte HTTP-Benutzeragent
http.x_forwarded_for Zeichenfolge Der vollständige HTTP-Header 'X-Forwarded-For'
ip.src IP-Adresse 93.155.208.22 Die IP-Adresse des Client- TCP s, die gegebenenfalls an die tatsächliche IP-Adresse des ursprünglichen Clients angepasst werden kann (beispielsweise durch Verwendung von HTTP-Headern wie X-Forwarded-For oder X-Real-IP)
ip.src.region Zeichenfolge Texas Die Geolokalisierungsregion, die der IP-Adresse der eingehenden Anfrage zugeordnet ist.
ip.geoip.asnum Zahl 222 Die Nummer des Autonomous System (AS)
ip.geoip.country Zeichenfolge GB Der aus zwei Buchstaben bestehende Ländercode
ssl Boolescher Wert Ja Gibt an, ob die HTTP-Verbindung zum Client verschlüsselt ist
ip.src.subdivision_1_iso_code Zeichenfolge GB-DE Der ISO 3166-2 code für die mit der IP-Adresse verbundene Region der ersten Ebene. Wenn der aktuelle Wert nicht verfügbar ist, enthält dieses Feld eine leere Zeichenfolge. Zur Nutzung dieses Feldes ist ein CIS Enterprise-Tarif erforderlich.
ip.src.subdivision_2_iso_code Zeichenfolge GB-SWK Der ISO 3166-2 code für die mit der IP-Adresse verbundene Region der zweiten Ebene. Wenn der aktuelle Wert nicht verfügbar ist, enthält dieses Feld eine leere Zeichenfolge. Zur Nutzung dieses Feldes ist ein CIS Enterprise-Tarif erforderlich.
ip.src.is_in_european_union Boolescher Wert Für weitere Informationen siehe ip.src.is_in_european_union.

Diese Standardfelder folgen der Namenskonvention der Wireshark-Referenz für Anzeigefelder. Die oben angegebenen Beispielwerte können jedoch geringfügige Abweichungen enthalten.

Zusätzlich zu den Standardfeldern sind die folgenden, von Cloudflare definierten Felder verfügbar:

Verfügbare Cloudflare-Felder
Feldname Typ Beispielwert Anmerkungen
cf.client.bot Boolescher Wert Ja Unabhängig davon, ob die Anfrage von einem bekannten Bot oder Crawler stammt, und unabhängig davon, ob die Absicht gut oder böse ist.
cf.threat_score Zahl 0 Dieses Feld zeigt eine Cloudflare-Bedrohungsbewertung an. Zuvor stellte ein Bedrohungswert einen Cloudflare-Bedrohungswert von 0-100 dar, wobei 0 für ein geringes Risiko stand. Jetzt ist der Bedrohungswert immer 0 (Null).
cf.waf.score Zahl 1–99 Auf maschinellem Lernen basierende Bewertung, die die Wahrscheinlichkeit einer bösartigen Anfrage einschätzt. Die Punktzahl reicht von 1 (höchstwahrscheinlich bösartig) bis 99 (höchstwahrscheinlich sicher). Niedrige Punktzahlen bedeuten ein höheres Risiko. Nützlich für die Erstellung schwellenwertbasierter Firewall-Regeln.
cf.ray_id Zeichenfolge Es handelt sich um eine Kennung, die jeder Anfrage, die über Cloudflare läuft, zugewiesen wird.
cf.edge.server_ip IP-Adresse In diesem Feld wird die IP-Adresse des globalen Netzes angegeben, zu der die Anfrage HTTP aufgelöst wurde. Dieses Feld ist nur für BYOIP-Kunden von Bedeutung.
cf.edge.server_port IP-Adresse 1-65535 Dieses Feld zeigt die Portnummer an, an der das globale Cloudflare-Netzwerk die Anfrage erhalten hat. Verwenden Sie dieses Feld, um den Verkehr an einem bestimmten Port zu filtern.
cf.tls_cipher Zeichenfolge AES128-SHA256 Die Chiffre für die Verbindung zu Cloudflare.
cf.tls_version Zeichenfolge TLSv1.2 Die TLS Version der Verbindung zu Cloudflare.

ip.src.is_in_european_union

Der Antrag stammt aus einem Land der Europäischen Union (EU) und erfordert einen CIS Enterprise Plan.

In der folgenden Tabelle sind die EU-Länder aufgeführt, für die Geolokalisierungsdaten vorliegen:

Ländercode und Name
Landeskennzahl Landesname
AT Österreich
AX Åland
BE Belgien
BG Bulgarien
CY Zypern
CZ Tschechien
GE Deutschland
DK Dänemark
EE Estland
ES Spanisch
FI Finnland
FR Frankreich
GF Französisch-Guayana
GP Guadeloupe
GR Griechenland
HR Kroatien
HU Ungarn
IE Irland
IT Italien
LT Litauen
LU Luxemburg
LV Lettland
MF Saint Martin
MQ Martinique
MT Malta
NL Niederlande
PL Polen
PT Portugal
RE Réunion
RO Rumänien
SE Schweden
SI Slowenien
SK Slowakei
YT Mayotte

Bot-Management-Felder

Bot Management for Enterprise ist ein kostenpflichtiges Add-on, das einen ausgefeilten Bot-Schutz für Ihre Domain bietet. Kunden können automatisierten Datenverkehr erkennen, entsprechende Maßnahmen ergreifen und detaillierte Analysen in der Konsole anzeigen.

In der folgenden Tabelle finden Sie Informationen zu den verfügbaren Bot-Feldern:

Verfügbare Cloufare Bot-Management-Felder
Feldname Typ Anmerkungen
cf.client.bot Boolescher Wert Dieses Feld gibt an, ob die Anforderung von einem bekannten Bot oder Crawler stammt, wobei die Absicht gut oder schlecht sein kann.
cf.bot_management.verified_bot Boolescher Wert Zeigt an, ob die Anfrage von einem bekannt guten Bot oder Crawler stammt und liefert die gleichen Informationen wie cf.client.bot. Dieses Feld ist bei CIS Enterprise-Tarif mit aktivierter Bot-Verwaltung verfügbar.
cf.bot_management.corporate_proxy Boolescher Wert Dieses Feld zeigt an, ob die eingehende Anfrage von einem identifizierten Enterprise-Only-Cloud-basierten Unternehmens-Proxy oder einem sicheren Web-Gateway stammt. Dieses Feld ist bei CIS Enterprise-Tarif mit aktivierter Bot-Verwaltung verfügbar.
cf.bot_management.detection_ids Zahl In diesem Feld werden die IDs der heuristischen Erkennungen des Bot Managements für eine Anfrage aufgeführt. Verwenden Sie dieses Feld, um bestimmte Heuristiken in einer Regel zu berücksichtigen oder auszuschließen. Eine Anfrage kann mehrere Erkennungen haben.
cf.bot_management.ja3_hash Zeichenfolge Dieses Feld enthält einen SSL / TLS Fingerabdruck, der Ihnen hilft, potenzielle Bot-Anfragen zu identifizieren. Weitere Informationen finden Sie unter JA3/JA4 Fingerabdruck. Um dieses Feld zu verwenden, ist ein CIS Enterprise-Tarif mit aktivierter Bot-Verwaltung erforderlich.
cf.bot_management.ja4 Zeichenfolge Dieses Feld enthält einen SSL / TLS Fingerabdruck, der Ihnen hilft, potenzielle Bot-Anfragen zu identifizieren. Weitere Informationen finden Sie unter JA3/JA4 Fingerabdruck. Um dieses Feld zu verwenden, ist ein CIS Enterprise-Tarif mit aktivierter Bot-Verwaltung erforderlich.
cf.bot_management.js_detection.passed Boolescher Wert Zeigt an, ob der Besucher zuvor eine JS Detection bestanden hat. Weitere Informationen finden Sie unter JavaScript detections. Um dieses Feld zu verwenden, ist ein CIS Enterprise-Tarif mit aktivierter Bot-Verwaltung erforderlich.
cf.bot_management.score Zahl Dieses Feld gibt die Wahrscheinlichkeit an, dass eine Anfrage von einem Bot stammt, indem es eine Punktzahl von 1-99 verwendet. Eine niedrige Punktzahl bedeutet, dass die Anfrage von einem Bot oder einem automatisierten Agenten stammt. Eine hohe Punktzahl bedeutet, dass ein Mensch die Anfrage gestellt hat. Um dieses Feld zu verwenden, ist ein CIS Enterprise-Tarif mit aktivierter Bot-Verwaltung erforderlich.
cf.bot_management.static_resource Zahl Gibt an, ob statische Ressourcen einbezogen werden sollen, wenn Sie eine Regel mithilfe von cf.bot_management.score erstellen. Um dieses Feld zu verwenden, ist ein CIS Enterprise-Tarif mit aktivierter Bot-Verwaltung erforderlich.
cf.verified_bot_category Zeichenfolge Dieses Feld gibt die Art und den Zweck eines verifizierten Bots an. Weitere Informationen finden Sie unter Verifizierte Bot-Kategorien.

Funktionen

Die Sprache für benutzerdefinierte Regeln verfügt über mehrere Funktionen zur Konvertierung von Feldern.

Diese werden derzeit im Expression Builder nicht unterstützt.

Funktionen für benutzerdefinierte Regeln
Funktionsname Argumenttypen Rückgabetyp Anwendungsbeispiel Anmerkungen
unten Zeichenfolge Zeichenfolge lower(http.host) == "www.example.com" Konvertiert ein Zeichenfolgefeld in Kleinbuchstaben. Nur ASCII-Byte in Großschreibung werden konvertiert, alle anderen Byte werden unverändert belassen.
oben Zeichenfolge Zeichenfolge upper(http.host) == "www.example.com" Konvertiert ein Zeichenfolgefeld in Großbuchstaben. Nur ASCII-Byte in Kleinschreibung werden konvertiert, alle anderen Byte werden unverändert belassen.

Ausdrücke

Ein Ausdruck gibt basierend auf einer Übereinstimmung mit dem eingehenden Datenverkehr den Wert 'true' oder 'false' zurück. Zum Beispiel:

http.host eq "www.example.com" and ip.src in 92.182.212.0/24

Im vorliegenden Beispiel bilden zwei einzelne Ausdrücke einen zusammengesetzten Ausdruck. Stellen Sie sich die einzelnen Ausdrücke als Bedingungen vor. Jede Bedingung wird vor dem Anwenden und der Logik einzeln ausgewertet, um das Endergebnis des zusammengesetzten Ausdrucks zu bestimmen.

Ein genauerer Blick auf den ersten einzelnen Ausdruck zeigt, dass er Folgendes enthält:

  • ein Feld – http.host
  • einen Vergleichsoperator – eq
  • einen Wert – "www.example.com"

Nicht alle Bedingungen weisen die gleiche Struktur auf. Weitere Beispiele, die andere Strukturen verwenden, werden im nächsten Abschnitt erläutert.

Vergleichsoperatoren

Die folgenden Vergleichsoperatoren sind zur Verwendung in Ausdrücken verfügbar:

Vergleichsoperatoren für Ausdrücke
Englisch C-ähnlich Beschreibung
eq == Gleich
ne != Ungleich
lt < Kleiner als
le <= Kleiner-gleich
gt
Größer als
ge

=

Größer-gleich
enthält Enthält genau
entspricht ~ Von Re2 inspirierter regulärer Ausdruck
in Der Wert wird in einer Gruppe von Werten angezeigt. Unterstützt Bereiche mithilfe der Notation "..".
nicht ! Siehe Boolescher Vergleich
bitwise_and & Bitfeldwert vergleichen

Derzeit unterstützt der Expression Builder nur englische Operatoren.

Ein Ausdruck kann eine Mischung aus englischen und C-ähnlichen Operatoren enthalten. Beispielsweise ist ip.src eq 93.184.216.34 äquivalent zu ip.src == 93.184.216.34.

Einige Vergleichsoperatoren sind auf der Basis des Typs auf bestimmte Felder anzuwenden. Die folgende Matrix enthält Beispiele dafür, welche Operatoren für die verschiedenen Feldtypen verfügbar sind:

Vergleichsoperatoren für Felder
Englisch C-ähnlich Zeichenfolge IP-Adresse Zahl
eq == http.request.uri.path eq "/articles/2008/" ip.src eq 93.184.216.0 cf.threat_score eq 10
ne != http.request.uri.path ne "/articles/2010/" ip.src ne 93.184.216.0 cf.threat_score ne 60
lt < http.request.uri.path lt "/articles/2009/" cf.threat_score lt 10
le <= http.request.uri.path le "/articles/2008/" cf.threat_score le 20
gt
http.request.uri.path gt "/articles/2006/" cf.threat_score gt 25
ge

=

Größer-gleich cf.threat_score ge 60
enthält http.request.uri.path contains "/articles/"
entspricht ~ http.request.uri.path ~ "^/articles/200 [7-8] /$"
in http.request.method in { "HEAD" "GET" } ip.src in { 93.184.216.0 93.184.216.1 } cf.threat_score in {0 2 10}

Bei der Auswertung von Ausdrücken mit Zeichenfolgewerten muss die Groß-/Kleinschreibung beachtet werden. Daher kann es bei einer benutzerdefinierten Regel erforderlich sein, dass Sie mehr als eine Testbedingung definieren. Unternehmenskunden können einen regulären Ausdruck mit dem Operator "matches" verwenden, um mehrere Varianten mit einem einzigen Ausdruck zu erfassen.

Boolescher Vergleich

Für Felder des booleschen Typs (z. B. ssl) wird das Feld selbst im Ausdruck angezeigt, wenn eine Auswertung für eine wahre Bedingung erfolgt. Für eine falsche Bedingung wird der Operator not angewendet.

Boolescher Vergleich
Ja Falsch
ssl not ssl

Zusammengesetzte Ausdrücke

Sie können zusammengesetzte Ausdrücke erstellen, indem Sie mindestens zwei einzelne Ausdrücke mithilfe von logischen Operatoren gruppieren.

Zusammengesetzte Ausdrücke
Englisch C-ähnlich Beschreibung Beispiel Rangfolge
nicht ! Logisches NICHT not ( http.host eq "www.example.com" and ip.src in 93.184.216.0/24 ) 1
und && Logisches UND http.host eq "www.example.com" and ip.src in 93.184.216.0/24 2
xor ^^ Logisches Exklusiv-Oder (XOR) http.host eq "www.example.com" xor ip.src in 93.184.216.0/24 3
oder & verbar; & verbar; Logisches ODER http.host eq "www.example.com" or ip.src in 93.184.216.0/24 4

Um die Reihenfolge der Vorrangstellung zu ändern, können Sie Ausdrücke mithilfe von runden Klammern gruppieren. Falls keine runden Klammern verwendet werden, werden Ausdrücke auf der Basis des Standardvorrangs implizit gruppiert:

ssl and http.request.uri.path eq /login or http.request.uri.path eq /oauth

Explizite Gruppierung anwenden:

(ssl and http.request.uri.path eq /login) or http.request.uri.path eq /oauth

Vorrang für 'or' mithilfe von runden Klammern einräumen:

ssl and (http.request.uri.path eq /login or http.request.uri.path eq /oauth)

Beachten Sie, dass not zum Gruppieren, aber auch zum Verneinen eines einzelnen Ausdrucks verwendet werden kann. Beispielsweise ist not ip.src eq 93.184.216.0 äquivalent zu not (ip.src eq 93.184.216.0).

Sie können schließlich auch gruppierte Ausdrücke verneinen:

not (http.request.method eq "POST" and http.request.uri.path eq "/login")

Abweichungen von Wireshark-Anzeigefiltern

Benutzerdefinierte Regelausdrücke sind an die Anzeigefilter von Wireshark angelehnt. Die Implementierung weicht jedoch auf folgende Weise ab:

  • Bei CIDR-IP-Gleichheitstests ermöglicht Wireshark durch das Format ip.src == 1.2.3.0/24 Bereiche, während CIS nur Gleichheitstests unterstützt, bei denen eine einzelne IP-Adresse verwendet wird. Zum Vergleichen einer CIDR verwenden Sie den Operator in; Beispiel: ip.src in {1.2.3.0/24}.
  • In Wireshark ist ssl ein Protokollfeld, das Hunderte von anderen Feldern verschiedener Typen enthält, die auf mehrere Arten für Vergleiche verfügbar sind. In benutzerdefinierten Regeln ist ssl jedoch ein einzelnes boolesches Feld, mit dem festgestellt wird, ob die Verbindung vom Client zu CIS verschlüsselt ist.
  • Der Operator slice wird nicht unterstützt.
  • Nicht alle Funktionen werden unterstützt. Derzeit werden len() und count() nicht unterstützt.

Einschränkungen bei der Ausdrucksweise

Für Regelausdrücke gelten die folgenden Einschränkungen:

  • Ein Regelausdruck kann bis zu 4.096 Zeichen enthalten.

    Wenn Sie den Ausdrucksgenerator in der Benutzeroberfläche verwenden, gilt dieselbe Beschränkung auch für die Vorschau des generierten Ausdrucks.

  • Ein Regelausdruck kann maximal 64 reguläre Ausdrücke (Regex) enthalten.