Über benutzerdefinierte WAF-Regeln

Verwenden Sie die Funktion "Benutzerdefinierte Regeln" von WAF, um eingehenden Datenverkehr zu kontrollieren, indem Sie Anfragen an eine Domain filtern. Sie können Aktionen wie "Blockieren" oder "Verwaltete Herausforderung" für eingehende Anfragen gemäß den von Ihnen festgelegten Regeln ausführen.

Wie andere Regeln, die von der Ruleset Engine ausgewertet werden, erfordern benutzerdefinierte WAF-Regeln die folgenden grundlegenden Parameter:

  • Ein Ausdruck, der die Kriterien angibt, nach denen Sie den Datenverkehr mithilfe der Regelsprache abgleichen.
  • Eine Aktion, die angibt, was zu tun ist, wenn eine Übereinstimmung mit der Regel vorliegt.

Benutzerdefinierte Regeln werden in der Reihenfolge ausgewertet, in der sie in der Tabelle für benutzerdefinierte Regeln festgelegt sind, von der ersten bis zur letzten Position. Sie können die Tabelle anzeigen, indem Sie zu "Sicherheit" > "Firewall-Regeln" navigieren. Einige Aktionen wie "Block" verhindern die Bewertung anderer Regeln. Weitere Details zu Aktionen und ihrem Verhalten finden Sie unter Regelaktionen der Ruleset Engine.

Gängige Anwendungsfälle

In den folgenden Abschnitten werden Beispiele für häufige Anwendungsfälle für benutzerdefinierte WAF-Regeln aufgeführt.

Nur Verkehr aus bestimmten Ländern zulassen

Mit der Aktion "Blockieren" werden in diesem Beispiel Anfragen anhand ihres Ländercodes blockiert, indem das Feld ip.src.country verwendet wird, sodass nur Anfragen aus zwei Ländern zulässig sind: den Vereinigten Staaten und Mexiko:

(not ip.src.country in {"US" "MX"})

Anfragen nach IP-Reputation blockieren

Die IP-Reputation ist eine Bewertung von 0 (kein Risiko) bis 100 (hohes Risiko), die die IP-Reputation eines Besuchers klassifiziert.

Die IP-Reputation wird auf der Grundlage von „Project Honeypot“, externen öffentlichen IP-Informationen sowie internen Bedrohungsdaten aus verwalteten Regeln und DDoS berechnet.

Mit der Aktion "Blockieren" werden in diesem Beispiel Anfragen basierend auf Ländercodes (ISO 3166-1 Alpha 2 ↗ Format) von IP-Adressen blockiert, die einen Wert von mehr als 0 aufweisen:

(ip.src.country in {"CN" "TW" "US" "GB"} and cf.threat_score gt 0)

Nur Verkehr von bestimmten IP-Adressen zulassen

Die Aktion Blockieren schränkt den Zugriff auf Ihre Domain ein, indem sie nur Anfragen von bestimmten IP-Adressen zulässt und alle anderen verweigert.

Um beispielsweise nur den Verkehr von den IPs 192.0.2.10 und 203.0.113.25 zuzulassen, führen Sie den folgenden Ausdruck aus:

(not ip.src in {"192.0.2.10" "203.0.113.25"})

Verwenden Sie je nach Protokoll, das Sie einschränken möchten, einen der folgenden Ausdrücke:

  • Wenn Sie Subnetze anstelle von einzelnen IP-Adressen angeben möchten, unterstützt IBM Cloud CIS nur:

    IPv4: /16 und /24

    IPv6: /32, /48, und /64

  • Geben Sie immer sowohl IPv4 als auch IPv6 an, um eine vollständige Abdeckung zu gewährleisten.

  • Wenn nur IPv4 ( 0.0.0.0/0 ) blockiert wird, ist der Verkehr von IPv6 weiterhin möglich. Beides zu blockieren:

    (ip.src in {0.0.0.0/0} or ip.src in {::/0})
    

Konfigurieren einer Regel zum Überspringen anderer CIS-Funktionen

Die Überspringfunktion unterstützt verschiedene Überspringoptionen, je nachdem, welche Sicherheitsfunktionen oder -produkte Sie überspringen möchten.

Dieser Abschnitt enthält Beispiele für verschiedene Auslassungsregel-Szenarien für benutzerdefinierte WAF-Regeln. Berücksichtigen Sie die folgenden Überlegungen:

  • Der Wert von {zone_id} ist die ID der Zone, in der Sie die Regel hinzufügen möchten.

  • Der Wert von {ruleset_id} ist die ID des Einstiegspunkt-Regelsatzes der http_request_firewall_custom-Phase. Weitere Informationen zum Erhalt dieser Regelsatz-ID finden Sie unter "Regelsätze auflisten und anzeigen ". Die folgenden API-Beispiele fügen eine Überspringregel zu einem vorhandenen Regelsatz hinzu, indem sie die Regeloperation "Regelsatz erstellen" verwenden.

    Allerdings ist der Regelsatz für den Einstiegspunkt möglicherweise noch nicht vorhanden. Verwenden Sie in diesem Fall die Operation "Update entrypoint ruleset ", um den Einstiegspunkt-Regelsatz mit einer Überspringregel zu erstellen.

  • Obwohl jedes Beispiel nur einen Aktionsparameter enthält, können Sie mehrere Überspringoptionen in derselben Regel verwenden, indem Sie die Aktionsparameter für Regelsatz, Phasen und Produkte gleichzeitig angeben.

Die restlichen Regeln im aktuellen Regelsatz überspringen

In diesem Beispiel wird die Regeloperation "Regelsatz erstellen" verwendet, um dem vorhandenen Regelsatz für den Phaseneintrittspunkt http_request_firewall_custom mit der ID RULESET_ID eine Überspringregel hinzuzufügen. Wenn Sie die ID Ihres Einstiegspunktes nicht kennen, lesen Sie den Abschnitt Abrufen des benutzerdefinierten Regel-Einstiegspunktes für die API. Die Regel überspringt alle verbleibenden Regeln im aktuellen Regelsatz für Anforderungen, die dem Regelausdruck entsprechen:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "ruleset": "current"
  },
  "expression": "http.request.uri.path contains \"/skip-current-ruleset/\"",
  "description": ""
}'

Überspringe eine Phase

In diesem Beispiel wird der Regelsatz "Create a zone ruleset" verwendet, um dem vorhandenen Regelsatz " http_request_firewall_custom phase entry point ruleset" mit der ID " RULESET_ID" eine Regel hinzuzufügen. Die Regel überspringt die http_ratelimit-Phase für Anfragen, die dem Regelausdruck entsprechen:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "phases": [
      "http_ratelimit"
    ]
  },
  "expression": "http.request.uri.path contains \"/skip-phase/\"",
  "description": ""
}'

Überspringen Sie eine Phase und melden Sie keine passenden Anfragen

In diesem Beispiel wird die Regeloperation "Regelsatz erstellen" verwendet, um eine Regel hinzuzufügen, die sowohl die http_ratelimit-Phase überspringt als auch die Ereignisprotokollierung für die aktuelle Regel deaktiviert:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "phases": [
      "http_ratelimit"
    ]
  },
  "logging": {
    "enabled": false
  },
  "expression": "http.request.uri.path contains \"/disable-logging/\"",
  "description": ""
}'

Sicherheitsprodukte überspringen

In diesem Beispiel wird die Regeloperation "Regelsatz erstellen" verwendet, um eine Regel hinzuzufügen, die die Produkte "Zonensperrung" und "User-Agent-Blocking" für Anforderungen überspringt, die dem Regelausdruck entsprechen:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "products": [
      "zoneLockdown",
      "uaBlock"
    ]
  },
  "expression": "http.request.uri.path contains \"/skip-products/\"",
  "description": ""
}'