Cómo configurar reglas de WAF preconfiguradas

Sigue estas instrucciones para configurar y ajustar las reglas de firewall de aplicación web (WAF) preconfiguradas de Google Cloud Armor y proteger tu aplicación contra ataques. Si no conoces las reglas de WAF preconfiguradas, consulta la descripción general.

Cómo configurar una regla de WAF preconfigurada

En esta sección, se proporcionan plantillas de reglas de WAF preconfiguradas que puedes copiar en la consola de Google Cloud y personalizar para que se adapten a tu caso de uso. En cada ejemplo de comando de Google Cloud CLI, configuras una política de seguridad con el nombre POLICY_NAME y la prioridad PRIORITY.

En el primer ejemplo, se configura una regla con el nombre RULE_NAME y un nivel de sensibilidad SENSITIVITY, lo que habilita todas las firmas con una sensibilidad menor o igual que SENSITIVITY. Para obtener más información sobre la sensibilidad de las reglas, consulta Cómo elegir un nivel de sensibilidad.

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.
  • RULE_NAME: Es el nombre de la regla del WAF que deseas configurar.
  • SENSITIVITY: Es el nivel de sensibilidad de la regla de WAF.

El segundo ejemplo es similar al primero, pero inhabilita las firmas de reglas SIGNATURE_1 y SIGNATURE_2. Esto significa que estas dos firmas no se evalúan cuando se evalúa la regla del WAF:

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.
  • RULE_NAME: Es el nombre de la regla del WAF que deseas configurar.
  • SENSITIVITY: Es el nivel de sensibilidad de la regla de WAF.
  • SIGNATURE_1: Es el nombre de la firma del WAF que deseas inhabilitar.
  • SIGNATURE_2: Es el nombre de la firma del WAF que deseas inhabilitar.

El tercer ejemplo es similar al segundo, pero, en lugar de inhabilitar dos firmas, habilitas dos firmas de reglas. Ten en cuenta que solo puedes habilitar las firmas de reglas cuando estableces el nivel de sensibilidad en 0:

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.
  • RULE_NAME: Es el nombre de la regla del WAF que deseas configurar.
  • SIGNATURE_1: Es el nombre de la firma del WAF que deseas inhabilitar.
  • SIGNATURE_2: Es el nombre de la firma del WAF que deseas inhabilitar.

En todos los ejemplos anteriores, solo usas una expresión por regla. Si bien puedes combinar expresiones con el operador lógico OR (||), te recomendamos que uses solo una expresión por regla como práctica recomendada para evitar superar el tamaño máximo de la expresión.

Actualiza el límite de inspección para las reglas de WAF preconfiguradas

Las reglas de WAF preconfiguradas de Google Cloud Armor solo pueden inspeccionar hasta los primeros 64 KB (ya sean 8 KB, 16 KB, 32 KB, 48 KB o 64 KB) de un cuerpo de solicitud. Puedes configurar manualmente una política de seguridad para usar uno de estos límites de inspección en tus reglas de WAF preconfiguradas.

El siguiente comando establece el límite de inspección de todas las reglas de WAF preconfiguradas disponibles en la política POLICY_NAME en 8 kB con la marca --request-body-inspection-size. Para obtener más información sobre los límites de inspección de las reglas de WAF preconfiguradas, consulta Limitación de inspección del cuerpo de POST y PATCH.

gcloud compute security-policies update POLICY_NAME \
    --request-body-inspection-size = 8 kB

Reemplaza POLICY_NAME por el nombre de la política de seguridad que deseas configurar.

De manera similar, puedes usar la marca --request-body-inspection-size para establecer el límite de inspección de todas las reglas de WAF preconfiguradas disponibles en la política POLICY_NAME en 16 kB, 32 kB, 48 kB o 64 kB.

Mitiga el riesgo en el cuerpo de la solicitud que supera el límite de inspección configurado

Cuando se evalúa una regla de WAF preconfigurada en una política de seguridad de Google Cloud Armor, se inspeccionan hasta los primeros 64 KB (ya sean 8 KB, 16 KB, 32 KB, 48 KB o 64 KB) del cuerpo de una solicitud en busca de coincidencias de firma con las reglas de WAF.

Puedes mitigar el riesgo de solicitudes más grandes si creas una regla en tus políticas de seguridad para asegurarte de que el contenido no inspeccionado llegue a los backends. Por ejemplo, crea una regla para denegar el tráfico que supere el límite de inspección configurado de 8 KB (8,192 bytes) en el tamaño del cuerpo de la solicitud. En el siguiente comando, se muestra cómo crear esta regla:

gcloud compute security-policies rules create 10 \
    --security-policy my-policy \
    --expression "int(request.headers['content-length']) > 8192" \
    --action deny-403 \
    --description "Block requests greater than 8 kB"

De manera similar, puedes crear una regla para denegar el tráfico que supere los límites de inspección configurados de 16 kB, 32 kB, 48 kB o 64 kB en el tamaño del cuerpo de la solicitud. Por ejemplo, el siguiente comando muestra cómo crear esta regla para el límite de inspección de 64 kB (65,536 bytes).

gcloud compute security-policies rules create 10 \
    --security-policy my-policy \
    --expression "int(request.headers['content-length']) > 65536" \
    --action deny-403 \
    --description "Block requests greater than 64 kB"

Ejemplos

En los ejemplos de esta sección, se destacan aspectos importantes de la creación y el ajuste de reglas de WAF preconfiguradas, incluidos el nivel de sensibilidad y las excepciones de firmas. En todos los comandos de ejemplo de gcloud CLI, creas una política de seguridad con el nombre POLICY_NAME y la prioridad PRIORITY.

Cómo crear una regla en un nivel de sensibilidad determinado

En este ejemplo, usas todas las firmas de la regla de WAF sqli-v33-stable con un nivel de sensibilidad inferior a 4. Por lo tanto, debes crear la regla en el nivel de sensibilidad 3, que incluye todas las firmas con un nivel de sensibilidad inferior o igual a tres:

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.

Crea una regla que inhabilite una o más firmas

En este ejemplo, usas casi todas las firmas con un nivel de sensibilidad 1 y 2 en la regla de WAF xss-v33-stable, pero quieres excluir la firma owasp-crs-v030301-id941370-xss, que verifica las variables globales de JavaScript. Por lo tanto, creas la regla en el nivel de sensibilidad 2 y usas el argumento opt_out_rule_ids para inhabilitar la firma owasp-crs-v030301-id941370-xss:

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.

Para excluir dos o más firmas de una regla, proporciona una lista de firmas separadas por comas con el argumento opt_out_rule_ids, de la siguiente manera:

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.

Crea una regla que habilite una o más firmas

En este ejemplo, solo se usa la firma owasp-crs-v030001-id941150-xss de la regla de WAF xss-v33-stable. La firma verifica si hay atributos HTML no permitidos y se encuentra en el nivel 2 de sensibilidad. Por lo tanto, creas la regla con el nivel de sensibilidad 0 y usas el argumento opt_in_rule_ids para habilitar la firma owasp-crs-v030001-id941150-xss. Ten en cuenta que solo puedes habilitar las firmas de reglas cuando configuras el nivel de sensibilidad en 0:

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.

Si deseas incluir dos o más firmas de una regla, proporciona una lista de firmas separadas por comas con el argumento opt_in_rule_ids, de la siguiente manera:

Console

Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})" \
    --action deny-403

Reemplaza lo siguiente:

  • PRIORITY: La prioridad de la política de seguridad
  • POLICY_NAME: Es el nombre de la política de seguridad que deseas configurar.

¿Qué sigue?