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.
-
Enumere los conjuntos de reglas disponibles utilizando la operación list rulesets.
-
Enumera las reglas de ese conjunto de reglas utilizando la operación get ruleset.
-
Llame a la operación de actualización de conjunto de reglas en el punto de entrada de fase.
-
Especifique las alteraciones temporales en el
action_parametersde 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:
-
En la consola CIS, vaya a la sección Seguridad.
-
Seleccione la pestaña WAF.
-
Haga clic en el nombre del conjunto de reglas que desea anular.
-
En el panel lateral Configurar despliegue, haga clic en Examinar reglas.
-
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.
-
Una vez que haya reconfigurado las reglas del conjunto de reglas, haga clic en Continuar.
-
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_IDes 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_PHASEes la fase de conjunto de reglas en la que se implementa. Utilicehttp_request_firewall_managedpara anular los conjuntos de reglas WAF gestionados.-des el objeto de los atributos que se requieren para crear el conjunto de reglas.descriptiondefine su propio resumen de lo que está logrando un conjunto de reglas.ruleses el conjunto de reglas que se implementarán con el conjunto de reglas.actiones 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_parameterses el objeto para definir en qué opera la acción.ides 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.overrideses el objeto de las anulaciones que se establecen en el conjunto de reglas seleccionado.ruleses la lista de reglas que se alteran temporalmente con las propiedades seleccionadas.ides 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.enabledsobrescribe incluso cuando la regla está habilitada.actionespecifica la acción alterada temporalmente que realiza la regla.
expressiones la condición bajo la que se ejecuta la regla. El uso de "true" significa que esta regla siempre se ejecuta.descriptiondefine 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.