Ü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.

  1. Listen Sie die verfügbaren Regelsätze mithilfe der Operation "Regelsätze auflisten" auf.

  2. Listen Sie die Regeln für diesen Regelsatz mithilfe der Operation "Regelsatz abrufen" auf.

  3. Rufen Sie die Operation zum Aktualisieren des Regelsatzes für Ihren Phaseneingangspunkt auf.

  4. Geben Sie die Überschreibungen in action_parameters der 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:

  1. Navigieren Sie in der Konsole CIS zum Abschnitt Sicherheit.

  2. Wählen Sie die Registerkarte WAF.

  3. Klicken Sie auf den Namen des Regelsatzes, den Sie außer Kraft setzen möchten.

  4. Klicken Sie im Seitenbereich Bereitstellung konfigurieren auf Regeln durchsuchen.

  5. 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.
  6. Nachdem Sie die Regeln für den Regelsatz neu konfiguriert haben, klicken Sie auf Weiter.

  7. Ü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 Ruleset verfü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_ID ist 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_PHASE ist die Phase des Regelsatzes, in der die Bereitstellung erfolgt. Verwenden Sie http_request_firewall_managed, um verwaltete WAF-Regelsätze zu überschreiben.
  • -d ist das Objekt der Attribute, die zum Erstellen des Regelsatzes erforderlich sind.
    • description definiert Ihre eigene Zusammenfassung dessen, was ein Regelsatz bewirkt.
    • rules ist die Reihe von Regeln, die mit dem Regelsatz eingesetzt werden sollen.
      • action ist die Aktion, die die Regel ausführen soll. Eine Beschreibung der verfügbaren Aktionen finden Sie unter WAF-Regelsatzaktionen.
      • action_parameters ist das Objekt, mit dem definiert wird, worauf die Aktion angewendet wird.
        • id ist die ID des auszuführenden Regelsatzes. Diese ID wird aus der Operation zum Auflisten von Zonenregelsätzen abgerufen.
        • overrides ist das Objekt der Überschreibungen, die auf den ausgewählten Regelsatz angewendet werden.
          • rules ist die Liste der Regeln, die mit den ausgewählten Eigenschaften überschrieben werden.
            • id ist 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.
            • action gibt die überschriebene Aktion an, die die Regel ausführt.
      • expression ist die Bedingung, unter der die Regel ausgeführt wird. Die Verwendung von "true" bedeutet, dass diese Regel immer ausgeführt wird.
      • description definiert 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.