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:
- Obtenga el ID de zona.
- Ejecute la operación Listar zona de conjuntos de reglas para obtener los conjuntos de reglas disponibles.
- Busque el ID del conjunto de reglas gestionado que desea implementar.
- 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.
- 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:
-
En la consola CIS, vaya a la sección Seguridad.
-
Selecciona la pestaña WAF.
-
Haga clic en Añadir excepción para abrir el panel lateral Añadir excepción.
-
Introduzca un nombre para la excepción de reglas gestionadas.
-
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.
-
Elija si desea registrar las solicitudes que coincidan con la expresión.
-
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.
-
-
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:
-
Configure el entorno de la CLI.
-
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 -
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:
-
Configure el entorno de la CLI.
-
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 -
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 paraCIS 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:
- Configure el entorno de la API con las variables correctas.
- 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.
- 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:
- Configure el entorno de la API con las variables correctas.
- 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.
- 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:
- Configure el entorno de la API con las variables correctas.
- 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.
- 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_managedpara 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.
- id es el ID del conjunto de reglas que se va a ejecutar. Este ID se recupera de la operación
- es la condición bajo la cual se ejecuta la regla. Usar
truesignifica 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.