Übergeordnete verwaltete Regelsätze
Um das Verhalten eines verwalteten Regelsatzes anzupassen, überschreiben Sie ihn bei der Bereitstellung. Wenn Sie einen Regelsatz überschreiben, geben Sie Änderungen an, die zusätzlich zur Standardkonfiguration ausgeführt werden.
Sie können einen verwalteten Regelsatz auf den folgenden Ebenen überschreiben:
- Regelsatzüberschreibungen gelten für alle Regeln im ausgeführten Regelsatz.
- Tagüberschreibungen gelten für alle Regeln mit einem bestimmten Tag. Verwenden Sie beispielsweise eine Tagüberschreibung, um den verwalteten CIS-Regelsatz so anzupassen, dass alle Regeln mit dem Wordpress-Tag auf "Block" gesetzt sind. Wenn mehrere Tags Überschreibungen haben und eine Regel mehr als einen dieser Tags hat, bestimmt die Reihenfolge der Tag-Überschreibungen das Verhalten. Für Regeln, die mit mehreren überschriebenen Tags gekennzeichnet sind, gelten die Überschreibungen des letzten Tags.
- Regelüberschreibungen gelten für bestimmte Regeln in einem verwalteten Regelsatz, auf die durch ihre Regel-ID verwiesen wird.
Bestimmte Überschreibungen haben Vorrang vor allgemeineren Überschreibungen und Regelüberschreibungen haben Vorrang vor Tagüberschreibungen, die Vorrang vor Regelsatzüberschreibungen haben.
Regelsatzüberschreibungen und Tagüberschreibungen gelten sowohl für vorhandene als auch für zukünftige Regeln im verwalteten Regelsatz. Wenn Sie nur vorhandene Regeln überschreiben möchten, müssen Sie Regelüberschreibungen verwenden.
Übergeordneter Workflow (API)
Führen Sie die folgenden Schritte aus, um eine Überschreibung für einen verwalteten Regelsatz anzuwenden.
-
Listen Sie die verfügbaren Regelsätze mithilfe der Operation "Regelsätze auflisten" auf.
-
Listen Sie die Regeln für diesen Regelsatz mithilfe der Operation "Regelsatz abrufen" auf.
-
Rufen Sie die Operation zum Aktualisieren des Regelsatzes für Ihren Phaseneingangspunkt auf.
-
Geben Sie die Überschreibungen in
action_parametersder Regel an, die Ihren verwalteten Regelsatz ausführt."action_parameters": { "id": "<RULESET_ID>", "overrides": { // ruleset overrides "property-to-modify": "value", "property-to-modify": "value", // tag overrides "categories": [ { "category": "<TAG_NAME>", "property-to-modify": "value", "property-to-modify": "value" } ], // rule overrides "rules": [ { "id": "<RULE_ID>", "property-to-modify": "value", "property-to-modify": "value" } ] } }
Sie können die folgenden Regeleigenschaften überschreiben.
- "Aktion"
- "aktiviert"
Einige verwaltete Regelsätze können zusätzliche Überschreibungsanforderungen haben oder andere Regeleigenschaften überschreiben.
Es ist nicht effektiv, alle Regeln in einem verwalteten Regelsatz auf Instanzebene durch Überschreiben zu aktivieren. Diese Änderung kann sich auf alle Zonen in Ihrer Instanz auswirken. Einige Regeln sind standardmäßig inaktiviert, da sie sich letztendlich auf den legitimen Datenverkehr auswirken. Aktivieren Sie diese Regeln nicht zonenübergreifend, ohne vorherige Überlegungen zu berücksichtigen.
Überschreiben von verwalteten Regelsätzen in der Konsole
Um einen verwalteten Regelsatz in der Konsole außer Kraft zu setzen, gehen Sie wie folgt vor:
-
Navigieren Sie in der Konsole CIS zum Abschnitt Sicherheit.
-
Wählen Sie die Registerkarte WAF.
-
Klicken Sie auf den Namen des Regelsatzes, den Sie außer Kraft setzen möchten.
-
Klicken Sie im Seitenbereich Bereitstellung konfigurieren auf Regeln durchsuchen.
-
Im Seitenbereich Überschreiben CIS Verwaltetes Regelwerk können Sie Regeln überschreiben:
- Wählen Sie für jede Regel, die Sie außer Kraft setzen möchten, eine Aktion aus.
- Wählen Sie den Schalter Status, um eine Regel zu aktivieren oder zu deaktivieren.
-
Nachdem Sie die Regeln für den Regelsatz neu konfiguriert haben, klicken Sie auf Weiter.
-
Überprüfen Sie die Liste der Regeln, die außer Kraft gesetzt werden sollen, und klicken Sie dann auf Speichern.
Klicken Sie auf Auf Standard zurücksetzen, um die ursprünglichen Einstellungen wiederherzustellen.
Auflistung verwalteter Regelsätze von der CLI
Um alle Zonenregelsätze über die CLI aufzulisten, führen Sie den folgenden Befehl aus:
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
Befehlsoptionen
DNS_DOMAIN_ID- Die ID der Domäne.
-i, --instance value- Der Name oder die ID der Instanz.
--output value- Gibt das Ausgabeformat an; es wird nur JSON unterstützt.
Auflisten von Regeln unter einem Zonenregelsatz von der Befehlszeilenschnittstelle
Um die Regeln unter einem Zonenregelsatz aus der Befehlszeilenschnittstelle aufzulisten, führen Sie den folgenden Befehl aus:
ibmcloud cis managed-waf ruleset DNS_DOMAIN_ID RULESET_ID [-i, --instance INSTANCE] [--output FORMAT]
Befehlsoptionen
DNS_DOMAIN_ID- Die ID der Domäne.
RULESET_ID- Die ID des Regelsatzes für die aufzulistenden Regeln.
-i, --instance value- Der Name oder die ID der Instanz.
--output value- Gibt das Ausgabeformat an; es wird nur JSON unterstützt.
Übergeordnete verwaltete Regelsätze von der CLI
Führen Sie den folgenden Befehl aus, um einen verwalteten WAF-Regelsatz über die CLI zu überschreiben:
ibmcloud cis managed-waf deployment-add-ruleset DNS_DOMAIN_ID RULESET_ID [--match EXPRESSION] [--enabled true|false] [--override-action ACTION] [--override-status STATUS] [--paranoia-level LEVEL] [--override-rules RULE] [-i, --instance INSTANCE] [--output FORMAT]
Befehlsoptionen
DNS_DOMAIN_ID- die ID der Domäne.
--match value- Die Bedingungen, die erfüllt sein müssen, damit die Regel ausgeführt werden kann. Unter Verwendung von Feldern, Funktionen und Ausdrücken finden Sie eine Liste der übereinstimmenden Werte.
--enabled value- Zeigt an, ob die Regel aktiv ist. Der Standardwert ist "true".
--override-action value- Die Aktion des Regelsatzes für alle Überschreibungen. Gültige Werte sind "managed_challenge", "block", "js_challenge", "log", "challenge".
--paranoia-level value- Die OWASP-Paranoia-Stufe. Gültige Werte sind " PL1 ", " PL2 ", " PL3 ", " PL4 " und es ist nur für
CIS OWASP Core Rulesetverfügbar. --override-rules value- Die Regeloptionen der Überschreibungen. Beispiel:
--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS. -i, --instance value- Der Name oder die ID der Instanz.
--output value- Gibt das Ausgabeformat an; es wird nur JSON unterstützt.
Regelsätze für Auflistungszonen von der API
Führen Sie den folgenden Befehl aus, um alle Zonen-Regelsätze aus der API aufzulisten:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
Auflistung aller Regeln für einen Regelsatz aus der API
Um alle Regeln für einen bestimmten Regelsatz aufzulisten, führen Sie den folgenden Befehl aus:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
Dabei gilt:
$RULESET_IDist die ID des verwalteten Regelsatzes, für den die Regeln aufgelistet werden.
Überschreiben eines Regelsatzes für den Einstiegspunkt von der API
Führen Sie den folgenden Befehl aus, um den Regelsatz für den Einstiegspunkt von der API mit einer Überschreibung zu aktualisieren:
curl -X PUT \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/$RULESET_PHASE/entrypoint \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx' \
-d '{"description":"Deploy managed ruleset, enabling a specific rule with log action","rules":[{"action":"execute","expression":"true","action_parameters":{"id":"<MANAGED_RULESET_ID>","overrides":{"rules":[{"id":"<RULE_ID>","enabled":true,"action":"log"}]}}}]}'
Dabei gilt:
$RULESET_PHASEist die Phase des Regelsatzes, in der die Bereitstellung erfolgt. Verwenden Siehttp_request_firewall_managed, um verwaltete WAF-Regelsätze zu überschreiben.-dist das Objekt der Attribute, die zum Erstellen des Regelsatzes erforderlich sind.descriptiondefiniert Ihre eigene Zusammenfassung dessen, was ein Regelsatz bewirkt.rulesist die Reihe von Regeln, die mit dem Regelsatz eingesetzt werden sollen.actionist die Aktion, die die Regel ausführen soll. Eine Beschreibung der verfügbaren Aktionen finden Sie unter WAF-Regelsatzaktionen.action_parametersist das Objekt, mit dem definiert wird, worauf die Aktion angewendet wird.idist die ID des auszuführenden Regelsatzes. Diese ID wird aus der Operation zum Auflisten von Zonenregelsätzen abgerufen.overridesist das Objekt der Überschreibungen, die auf den ausgewählten Regelsatz angewendet werden.rulesist die Liste der Regeln, die mit den ausgewählten Eigenschaften überschrieben werden.idist die ID der Regel, die überschrieben werden soll. Diese ID wird aus der Operation zum Auflisten von Zonenregelsatzregeln abgerufen.enabledüberschreibt selbst dann, wenn die Regel aktiviert ist.actiongibt die überschriebene Aktion an, die die Regel ausführt.
expressionist die Bedingung, unter der die Regel ausgeführt wird. Die Verwendung von "true" bedeutet, dass diese Regel immer ausgeführt wird.descriptiondefiniert eine eigene Zusammenfassung der Regelausführung.
Auflisten von verwalteten Regelsätzen mit Terraform
Das folgende Beispiel listet alle verwalteten Regelsätze mit Terraform auf:
data "ibm_cis_rulesets" "tests" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
}
Für weitere Informationen über die Argumente und Attribute siehe ibm_cis_rulesets in der
Terraform-Registrierung.
Auflistung aller Regeln eines verwalteten Regelsatzes mit Terraform
Das folgende Beispiel listet alle Regeln eines verwalteten Regelsatzes mit Terraform auf:
resource "ibm_cis_ruleset" "config" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = "943c5da120114ea5831dc1edf8b6f769"
}
Für weitere Informationen über die Argumente und Attribute siehe ibm_cis_ruleset in der Terraform-Registrierung.
Überschreiben einer Regel mit Terraform
Dieses Beispiel zeigt, wie man den verwalteten Regelsatz CIS mit verschiedenen Überschreibungen einsetzt. Zunächst wird der Verkehr für alle Regeln aktiviert und blockiert. Dann wird der Verkehr für eine bestimmte Regel aktiviert und blockiert.
Schließlich wird der Verkehr für alle Regeln in der Kategorie wordpress aktiviert und blockiert. Dieses Beispiel veranschaulicht im Wesentlichen die verschiedenen Methoden, mit denen sich eingesetzte Regeln außer Kraft setzen
lassen (global, spezifisch, nach Kategorie).
resource "ibm_cis_ruleset_entrypoint_version" "test" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
rulesets {
description = "Entrypoint ruleset for managed ruleset"
rules {
action = "execute"
description = "Deploy CIS managed ruleset"
enabled = true
expression = "true"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
action = "block"
enabled = true
override_rules {
rule_id = "var.overriden_rule.id"
enabled = true
action = "block"
}
categories {
category = "wordpress"
enabled = true
action = "block"
}
}
}
}
}
}
Das folgende Beispiel zeigt, wie man einen WAF-Einstiegspunkt erstellt und eine Regel mit Terraform überschreibt:
resource "ibm_cis_ruleset_entrypoint_version" "waf_config" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
rulesets {
description = "Entry Point rulesets"
}
lifecycle {
ignore_changes = [
rulesets
]
}
}
data "ibm_cis_ruleset_entrypoint_versions" "test"{
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
depends_on = [
ibm_cis_ruleset_entrypoint_version.waf_config
]
}
resource ibm_cis_ruleset_rule "rule1" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "OWASP Core RuleSet"
enabled = true
expression = "true"
action_parameters {
id = "4814384a9e5d4991b9815dcfc25d2f1f"
overrides {
categories {
category = "paranoia-level-2"
enabled = false
}
categories {
category = "paranoia-level-3"
enabled = false
}
categories {
category = "paranoia-level-4"
enabled = false
}
override_rules {
rule_id = "6179ae15870a4bb7b2d480d4843b323c"
action = "block"
score_threshold = 60
enabled = true
}
override_rules {
rule_id = "8ac8bc2a661e475d940980f9317f28e1"
enabled = true
}
}
}
}
}
resource ibm_cis_ruleset_rule "rule2" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "CIS exposed credential ruleset"
enabled = true
expression = "true"
action_parameters {
id = "c2e184081120413c86c3ab7e14069605"
overrides {
override_rules {
rule_id = "53f38cd8974a4cd3bc9a8a64fc731fb0"
enabled = true
action = "log"
}
}
}
}
}
resource ibm_cis_ruleset_rule "rule3" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "CIS Managed ruleset"
enabled = true
expression = "true"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
override_rules {
rule_id = "5de7edfa648c4d6891dc3e7f84534ffa"
enabled = true
action = "block"
}
}
}
}
}
Für weitere Informationen über die Argumente und Attribute siehe ibm_cis_ruleset_entrypoint_version in der Terraform-Registrierung.