Cómo configurar reglas de WAF preconfiguradas

Usa estas instrucciones para configurar y ajustar las reglas de firewall de aplicación web (WAF) preconfiguradas de Google Cloud Armor para ayudar a 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 reglas de WAF preconfiguradas de plantillas que puedes copiar en la consola de Google Cloud y personalizar para que se ajusten a tu caso de uso. En cada comando gcloud de ejemplo, 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 de SENSITIVITY, que habilita todas las firmas con una sensibilidad menor o igual a SENSITIVITY. Para obtener más información sobre la sensibilidad de las reglas, consulta Elige 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

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 de 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

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

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

Ejemplos

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

Crea una regla en un nivel de sensibilidad determinado

En este ejemplo, deseas usar todas las firmas de la regla de WAF sqli-v33-stable con un nivel de sensibilidad inferior a 4. Por lo tanto, creas 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

Crea una regla que inhabilite una o más firmas

En este ejemplo, deseas usar casi todas las firmas en los niveles de sensibilidad 1 y 2 en la regla de WAF xss-v33-stable, pero deseas excluir la firma owasp-crs-v030301-id941370-xss, que busca 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

Si deseas excluir dos o más firmas de una regla, proporciona una lista de firmas separadas por comas con el argumento opt_out_rule_ids, como en el siguiente ejemplo:

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

Crea una regla que habilite una o más firmas

En este ejemplo, deseas usar solo 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 está en el nivel 2 de sensibilidad. Por lo tanto, creas la regla en 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

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, como en el siguiente ejemplo:

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

¿Qué sigue?