Implementación de conjuntos de reglas gestionadas

Puede desplegar conjuntos de reglas gestionadas a nivel de zona o de instancia mediante la CLI, la API o Terraform.

Puede implementar un conjunto de reglas gestionadas con un comportamiento personalizado (cambios que se ejecutan además de la configuración predeterminada) anulándolo. Para obtener más información, consulte Anulación de conjuntos de reglas gestionados.

Flujo de trabajo de despliegue

Utilice el siguiente flujo de trabajo para desplegar un conjunto de reglas gestionado en una fase a nivel de zona:

  1. Obtenga el ID de zona.
  2. Ejecute la operación Listar zona de conjuntos de reglas para obtener los conjuntos de reglas disponibles.
  3. Busque el ID del conjunto de reglas gestionado que desea implementar.
  4. Identifique la fase en la que desea desplegar el conjunto de reglas gestionado. Asegúrese de que el conjunto de reglas administradas pertenece a la misma fase en la que desea implementarlo.
  5. Añadir una regla al conjunto de reglas de punto de entrada de fase a nivel de zona que ejecuta el conjunto de reglas gestionado.

Despliegue de conjuntos de reglas gestionados en la consola

Para desplegar conjuntos de reglas gestionadas en la consola CIS, siga estos pasos:

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

  2. Selecciona la pestaña WAF.

  3. Haga clic en Añadir excepción para abrir el panel lateral Añadir excepción.

  4. Introduzca un nombre para la excepción de reglas gestionadas.

  5. Defina la condición de coincidencia construyendo una expresión:

    • Elija el campo de solicitud, seleccione un operador y proporcione un valor.
    • También puede utilizar el Constructor de expresiones para escribir expresiones manualmente
    • Combine varias condiciones mediante los operadores Y y O para crear una lógica compleja.
  6. Elija si desea registrar las solicitudes que coincidan con la expresión.

  7. Decide cómo debe comportarse el conjunto de reglas para hacer coincidir las solicitudes:

    • Omite el resto de reglas, o

    • Omitir reglas específicas de un conjunto de reglas gestionado

      Si selecciona omitir reglas específicas, haga clic en Examinar reglas, seleccione un conjunto de reglas y, a continuación, seleccione las reglas específicas que desea omitir.

  8. Haz clic en Implementar para activar la configuración.

    Después del despliegue, puede volver en cualquier momento para editar la configuración del conjunto de reglas gestionado.

Implementación de conjuntos de reglas gestionadas desde la CLI

Puede implementar conjuntos de reglas gestionadas desde la CLI.

Listado de conjuntos de reglas gestionadas desde la CLI

Para enumerar todos los conjuntos de reglas gestionados por zonas desde la CLI, siga estos pasos:

  1. Configure el entorno de la CLI.

  2. Inicia sesión en tu cuenta desde la CLI. Una vez introducida la contraseña, el sistema le pedirá que indique la cuenta y la región que desea utilizar:

    ibmcloud login --sso
    
  3. Ejecuta el siguiente comando para crear una regla personalizada:

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

    Opciones de mandato

    DNS_DOMAIN_ID
    El ID del dominio.
    -i, --instance
    Nombre o ID de instancia.
    --output
    Especifica el formato de salida; solo se admite JSON.

Actualización del conjunto de reglas implementado desde la CLI

Para actualizar un conjunto de reglas desplegado desde la CLI, siga estos pasos:

  1. Configure el entorno de la CLI.

  2. Inicia sesión en tu cuenta desde la CLI. Una vez introducida la contraseña, el sistema le pedirá que indique la cuenta y la región que desea utilizar:

    ibmcloud login --sso
    
  3. Ejecuta el siguiente comando para crear una regla personalizada:

    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 mandato

    DNS_DOMAIN_ID
    El ID del dominio.
    --match
    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
    Indica si la regla está activa. El valor predeterminado es true.
    --overide-action
    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
    El nivel de paranoia de OWASP. Los valores válidos son PL1, PL2, PL3, PL4. Sólo está disponible para CIS OWASP Core Ruleset.
    override-rules
    Las opciones de reglas de las sustituciones. Por ejemplo, --override-rules rule=RULE_ID,action=ACTION,enabled=STATUS.
    -i, --instance
    El nombre o el ID de la instancia.
    --output
    Especifica el formato de salida; solo se admite JSON.

Ejemplo de mandato

Este ejemplo muestra cómo desplegar el conjunto de reglas efb7b8c949ac4650a09736fc376e9aee y la anulación de la regla presente dentro del conjunto de reglas. También está anulando reglas con categoría wordpress.

ibmcloud cis managed-waf deployment-add-ruleset $domain efb7b8c949ac4650a09736fc376e9aee --match "(http.cookie eq \"example.com/contact?page=1234\")" --action execute --enabled false --override-action block --override-status false --override-rules rule=5de7edfa648c4d6891dc3e7f84534ffa,action=log,enabled=true --override-rules action=managed_challenge,rule=e3a567afc347477d9702d9047e97d760

Implementación de conjuntos de reglas gestionadas con la API

Puede desplegar conjuntos de reglas gestionadas con la API.

Obtener el punto de entrada de la regla personalizada para la API

Todas las operaciones de la API de reglas personalizadas requieren un RULESET_ID del conjunto de reglas de punto de entrada para la fase de reglas personalizadas. Este conjunto de reglas de punto de entrada puede existir ya o debe crearse si no existe.

Siga estos pasos para obtener el conjunto de reglas del punto de entrada de reglas personalizadas:

  1. Configure el entorno de la API con las variables correctas.
  2. Almacene los valores siguientes en variables que se utilizarán en el mandato de la API:

CRN: El nombre completo del recurso en la nube (CRN) codificado en URL de la instancia de servicio.

ZONE_ID: el ID de dominio.

  1. Cuando se inician todas las variables, obtener el conjunto de reglas de punto de entrada:
curl -X GET "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json"

El ID del conjunto de reglas estará en la respuesta de la solicitud correcta. Si la llamada anterior devuelve una respuesta 404 Not Found, utiliza la siguiente API para crear el conjunto de reglas de punto de entrada para la fase de reglas personalizadas:

curl -x POST https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "name": "Zone-level phase entry point",
  "kind": "zone",
  "description": "WAF managed rule entrypoint ruleset.",
  "phase": "http_request_firewall_managed"
}'

Listado de conjuntos de reglas gestionadas con la API

Siga estos pasos para listar los conjuntos de reglas gestionados con la API:

  1. Configure el entorno de la API con las variables correctas.
  2. Almacene los valores siguientes en variables que se utilizarán en el mandato de la API:

CRN: El nombre completo del recurso en la nube (CRN) codificado en URL de la instancia de servicio.

ZONE_ID: el ID de dominio.

RULESET_ID: El ID del conjunto de reglas del punto de entrada de la regla personalizada.

  1. Una vez iniciadas todas las variables, enumere todos los conjuntos de reglas gestionados por zonas:
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'

Actualización de las reglas de los puntos de entrada con la API

Siga estos pasos para actualizar un conjunto de reglas de punto de entrada con la API:

  1. Configure el entorno de la API con las variables correctas.
  2. Almacene los valores siguientes en variables que se utilizarán en el mandato de la API:

CRN: El nombre completo del recurso en la nube (CRN) codificado en URL de la instancia de servicio.

ZONE_ID: el ID de dominio.

RULESET_ID: El ID del conjunto de reglas del punto de entrada de la regla personalizada.

  1. Cuando se hayan iniciado todas las variables, actualice el conjunto de reglas del punto de entrada:
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 '{"rules":[{"action":"execute","action_parameters":{"id":"4814384a9e5d4991b9815dcfc25d2f1f"},"expression":"true","description":"Execute WAF OWASP ruleset"}]}'

Donde:

  • $RULESET_PHASE es la fase del conjunto de reglas que se implementará. Utilice http_request_firewall_managed para implementar conjuntos de reglas WAF gestionados.
    • d es el objeto de los atributos que se requieren para crear el conjunto de reglas.
    • de reglas es la matriz de reglas que se implementará con el conjunto de reglas. Por ejemplo:
      • action es la acción que debe realizar la regla. Consulte Acciones de reglas para obtener una descripción de las acciones que se pueden utilizar.
      • action_parameters es el objeto para definir en qué debe operar la acción.
        • id es el ID del conjunto de reglas que se va a ejecutar. Este ID se recupera de la operación list zone rulesets.
    • es la condición bajo la cual se ejecuta la regla. Usar true significa que esta regla siempre se ejecuta.
    • description define el resumen de lo que está realizando la regla.

Despliegue de conjuntos de reglas gestionadas con Terraform

Listado de conjuntos de reglas gestionadas con Terraform

El siguiente ejemplo enumera 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

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.

Norma imperativa

El siguiente ejemplo anula una regla utilizando Terraform:

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

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