Anulación de conjuntos de reglas gestionados

Para personalizar el comportamiento de un conjunto de reglas gestionado, anúlelo en el momento de la implementación. Cuando altera temporalmente un conjunto de reglas, especifique los cambios que se ejecutarán además de la configuración predeterminada.

Puede anular un conjunto de reglas gestionadas en los siguientes niveles:

  • Las alteraciones temporales de conjunto de reglas se aplican a todas las reglas del conjunto de reglas ejecutado.
  • Las alteraciones temporales de etiqueta se aplican a todas las reglas con una etiqueta específica. Por ejemplo, utilice una alteración temporal de etiqueta para personalizar el conjunto de reglas gestionado CIS para que todas las reglas con la etiqueta wordpress se establezcan en Block. Si varias etiquetas tienen alteraciones temporales y si una regla tiene más de una de estas etiquetas, el orden de las alteraciones temporales determina el comportamiento. Para las reglas etiquetadas con varias etiquetas alteradas temporalmente, se aplican las últimas alteraciones temporales de etiqueta.
  • Las sustituciones de reglas se aplican a reglas específicas de un conjunto de reglas gestionado, a las que hace referencia su ID de regla.

Las alteraciones temporales específicas tienen prioridad sobre las más generales, y las alteraciones temporales de reglas tienen prioridad sobre las alteraciones temporales de códigos, que tienen prioridad sobre las alteraciones temporales de conjuntos de reglas.

Las alteraciones temporales de conjunto de reglas y las alteraciones temporales de etiqueta se aplican a las reglas existentes y futuras en el conjunto de reglas gestionado. Si desea sustituir sólo las reglas existentes, debe utilizar las alteraciones temporales de reglas.

Anulación del flujo de trabajo (API)

Para aplicar una alteración temporal para un conjunto de reglas gestionado, realice los pasos siguientes.

  1. Enumere los conjuntos de reglas disponibles utilizando la operación list rulesets.

  2. Enumera las reglas de ese conjunto de reglas utilizando la operación get ruleset.

  3. Llame a la operación de actualización de conjunto de reglas en el punto de entrada de fase.

  4. Especifique las alteraciones temporales en el action_parameters de la regla que ejecuta el conjunto de reglas gestionado.

    "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"
          }
        ]
      }
    }
    

Puede alterar temporalmente las propiedades de regla siguientes.

  • "acción"
  • "habilitado"

Algunos conjuntos de reglas gestionados pueden tener requisitos de alteración temporal adicionales, o pueden alterar temporalmente otras propiedades de regla.

No es efectivo habilitar todas las reglas en un conjunto de reglas gestionado a nivel de instancia utilizando una alteración temporal. Este cambio puede afectar a todas las zonas de la instancia. Algunas reglas están inhabilitadas de forma predeterminada porque finalmente afectan al tráfico legítimo. No habilite estas reglas entre zonas sin tener en cuenta anteriormente.

Anulación de conjuntos de reglas gestionados en la consola

Para anular un conjunto de reglas gestionado en la consola, siga estos pasos:

  1. En la consola CIS, vaya a la sección Seguridad.

  2. Seleccione la pestaña WAF.

  3. Haga clic en el nombre del conjunto de reglas que desea anular.

  4. En el panel lateral Configurar despliegue, haga clic en Examinar reglas.

  5. En el panel lateral de reglas Override CIS Managed Ruleset, puede:

    • Seleccione una acción para cualquier regla que desee anular.
    • Seleccione el conmutador de estado para activar o desactivar una regla.
  6. Una vez que haya reconfigurado las reglas del conjunto de reglas, haga clic en Continuar.

  7. Compruebe la lista de reglas que desea anular y haga clic en Guardar.

    Haga clic en Restablecer valores predeterminados para restaurar la configuración original.

Listado de conjuntos de reglas gestionadas desde la CLI

Para listar todas las reglas de zona desde la CLI, ejecute el siguiente comando :

ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]

Opciones de comando

DNS_DOMAIN_ID
El ID del dominio.
-i, --instance value
El nombre o ID de la instancia.
--output value
Especifica el formato de salida; sólo se admite JSON.

Reglas de listado bajo un conjunto de reglas de zona desde la CLI

Para enumerar las reglas bajo un conjunto de reglas de zona desde la CLI, ejecute el siguiente comando:

ibmcloud cis managed-waf ruleset DNS_DOMAIN_ID RULESET_ID [-i, --instance INSTANCE] [--output FORMAT]

Opciones de comando

DNS_DOMAIN_ID
El ID del dominio.
RULESET_ID
El ID del conjunto de reglas para las reglas a listar.
-i, --instance value
El nombre o ID de la instancia.
--output value
Especifica el formato de salida; sólo se admite JSON.

Anulación de conjuntos de reglas gestionados desde la CLI

Para alterar temporalmente un conjunto de reglas WAF gestionado desde la CLI, ejecute el mandato siguiente:

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]

Opciones de comando

DNS_DOMAIN_ID
el ID del dominio.
--match value
Las condiciones que deben cumplirse para que se ejecute la regla. Consulte Utilización de campos, funciones y expresiones para obtener una lista de valores que deben coincidir.
--enabled value
Indica si la regla está activa. El valor predeterminado es "true".
--override-action value
La acción del conjunto de reglas de cualquier anulación. Los valores válidos son "managed_challenge", "block", "js_challenge", "log", "challenge".
--paranoia-level value
El nivel de paranoia de OWASP. Los valores válidos son " PL1 ", " PL2 ", " PL3 ", " PL4 " y sólo está disponible para CIS OWASP Core Ruleset.
--override-rules value
Las opciones de reglas de las sustituciones. Por ejemplo, --override-rules rule=RULE_ID,action=ACTION,enabled=STATUS.
-i, --instance value
El nombre o ID de la instancia.
--output value
Especifica el formato de salida; sólo se admite JSON.

Listado de conjuntos de reglas de zona de la API

Para enumerar todos los conjuntos de reglas de zona de la API, ejecute el siguiente comando:

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'

Listado de todas las reglas para un conjunto de reglas desde la API

Para enumerar todas las reglas de un conjunto de reglas específico, ejecute el siguiente comando:

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'

Donde:

  • $RULESET_ID es el ID del conjunto de reglas gestionado para el que se listan las reglas.

Anulación de un conjunto de reglas de punto de entrada desde la API

Para actualizar el conjunto de reglas del punto de entrada desde la API con una anulación, ejecute el siguiente comando:

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"}]}}}]}'

Donde:

  • $RULESET_PHASE es la fase de conjunto de reglas en la que se implementa. Utilice http_request_firewall_managed para anular los conjuntos de reglas WAF gestionados.
  • -d es el objeto de los atributos que se requieren para crear el conjunto de reglas.
    • description define su propio resumen de lo que está logrando un conjunto de reglas.
    • rules es el conjunto de reglas que se implementarán con el conjunto de reglas.
      • action es la acción que debe realizar la regla. Consulte las acciones del conjunto de reglas WAF para ver una descripción de las acciones disponibles.
      • action_parameters es el objeto para definir en qué opera la acción.
        • id es el ID del conjunto de reglas que se va a ejecutar. Este ID se recupera de la operación de listar conjuntos de reglas de zona.
        • overrides es el objeto de las anulaciones que se establecen en el conjunto de reglas seleccionado.
          • rules es la lista de reglas que se alteran temporalmente con las propiedades seleccionadas.
            • id es el ID de la regla que se va a alterar temporalmente. Este ID se recupera de la operación de reglas de conjunto de reglas de zona de lista.
            • enabled sobrescribe incluso cuando la regla está habilitada.
            • action especifica la acción alterada temporalmente que realiza la regla.
      • expression es la condición bajo la que se ejecuta la regla. El uso de "true" significa que esta regla siempre se ejecuta.
      • description define su propio resumen de lo que está logrando la regla.

Listado de conjuntos de reglas gestionadas con Terraform

El siguiente ejemplo enumera todos los conjuntos de reglas gestionados mediante Terraform:

data "ibm_cis_rulesets" "tests" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
}

Para obtener más información sobre los argumentos y atributos, consulte ibm_cis_rulesets en el registro de Terraform.

Listado de todas las reglas de un conjunto de reglas gestionado con Terraform

El siguiente ejemplo enumera todas las reglas de un conjunto de reglas gestionado mediante Terraform:

resource "ibm_cis_ruleset" "config" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    ruleset_id = "943c5da120114ea5831dc1edf8b6f769"
}

Para obtener más información sobre los argumentos y atributos, consulte ibm_cis_ruleset en el registro de Terraform.

Anulación de una regla con Terraform

Este ejemplo muestra cómo desplegar el conjunto de reglas gestionadas CIS con varias anulaciones. En primer lugar, habilita y bloquea el tráfico para todas las reglas. A continuación, habilita y bloquea el tráfico para una regla específica. Por último, habilita y bloquea el tráfico para todas las reglas de la categoría wordpress. Esencialmente, este ejemplo ilustra los diferentes métodos para anular las reglas desplegadas (global, específico, por categoría).

  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"
            }
          }
        }
      }
    }
  }

El siguiente ejemplo muestra cómo crear un punto de entrada WAF y anular una regla con Terraform:

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"
            }
          }
         }
      }
}

Para obtener más información sobre los argumentos y atributos, consulte ibm_cis_ruleset_entrypoint_version en el registro de Terraform.