Sigue estas instrucciones para configurar y ajustar las reglas de firewall de aplicación web (WAF) preconfiguradas de Cloud Armor para proteger tu aplicación contra ataques. Si no estás familiarizado con las reglas de WAF preconfiguradas, consulta la descripción general.
Configura una regla de WAF preconfigurada
En esta sección, se proporcionan reglas de WAF preconfiguradas de plantilla que puedes copiar en
la Google Cloud console 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 de SENSITIVITY, que habilita todas las firmas con una sensibilidad inferior 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
Reemplaza lo siguiente:
PRIORITY: la prioridad de la política de seguridad.POLICY_NAME: el nombre de la política de seguridad que deseas configurar.RULE_NAME: el nombre de la regla de WAF que deseas configurar.SENSITIVITY: 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 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
Reemplaza lo siguiente:
PRIORITY: la prioridad de la política de seguridad.POLICY_NAME: el nombre de la política de seguridad que deseas configurar.RULE_NAME: el nombre de la regla de WAF que deseas configurar.SENSITIVITY: el nivel de sensibilidad de la regla de WAF.SIGNATURE_1: el nombre de la firma de WAF que deseas inhabilitar.SIGNATURE_2: el nombre de la firma de 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 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: el nombre de la política de seguridad que deseas configurar.RULE_NAME: el nombre de la regla de WAF que deseas configurar.SIGNATURE_1: el nombre de la firma de WAF que deseas inhabilitar.SIGNATURE_2: el nombre de la firma de WAF que deseas inhabilitar.
En todos los ejemplos anteriores, usas solo 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 exceder 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 Cloud Armor solo pueden inspeccionar hasta los primeros 64 kB (ya sea 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 para 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 la solicitud.
gcloud compute security-policies update POLICY_NAME \
--request-body-inspection-size=8kB
Reemplaza POLICY_NAME por el nombre de la política de seguridad que deseas configurar.
Del mismo modo, 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 excede el límite de inspección configurado
Cuando se evalúa una regla de WAF preconfigurada en una política de seguridad de Cloud Armor, se inspeccionan hasta los primeros 64 kB (ya sea 8 kB, 16 kB, 32 kB, 48 kB o 64 kB) de un cuerpo de 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 las 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 (8192 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"
Del mismo modo, 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, en el siguiente comando, se muestra cómo crear esta regla para el límite de inspección de 64 kB (65536 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 firma.
En todos los comandos de ejemplo de gcloud CLI, 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, usas todas las firmas de la regla de WAF sqli-v422-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-v422-stable', {'sensitivity': 3})
gcloud
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--expression "evaluatePreconfiguredWaf('sqli-v422-stable', {'sensitivity': 3})" \
--action deny-403
Reemplaza lo siguiente:
PRIORITY: la prioridad de la política de seguridad.POLICY_NAME: 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 en el nivel de sensibilidad 1 y 2 en la regla de WAF xss-v422-stable, pero deseas excluir la firma owasp-crs-v042200-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-v042200-id941370-xss:
Console
Selecciona Modo avanzado y, luego, usa la siguiente expresión de ejemplo en el campo Coincidencia:
evaluatePreconfiguredWaf('xss-v422-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v042200-id941370-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--expression "evaluatePreconfiguredWaf('xss-v422-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v042200-id941370-xss']})" \
--action deny-403
Reemplaza lo siguiente:
PRIORITY: la prioridad de la política de seguridad.POLICY_NAME: 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-v422-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v042200-id941370-xss', 'owasp-crs-v042200-id941380-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--expression "evaluatePreconfiguredWaf('xss-v422-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v042200-id941370-xss', 'owasp-crs-v042200-id941380-xss']})" \
--action deny-403
Reemplaza lo siguiente:
PRIORITY: la prioridad de la política de seguridad.POLICY_NAME: el nombre de la política de seguridad que deseas configurar.
Crea una regla que habilite una o más firmas
En este ejemplo, se usa solo la firma owasp-crs-v042200-id941150-xss de la regla de WAF xss-v422-stable. La firma verifica los atributos HTML no permitidos y está en el nivel de sensibilidad 2.
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-v042200-id941150-xss. Ten en cuenta que solo puedes habilitar 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('xss-v422-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v042200-id941150-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--expression "evaluatePreconfiguredWaf('xss-v422-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v042200-id941150-xss']})" \
--action deny-403
Reemplaza lo siguiente:
PRIORITY: la prioridad de la política de seguridad.POLICY_NAME: 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-v422-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v042200-id941150-xss', 'owasp-crs-v042200-id941320-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--expression "evaluatePreconfiguredWaf('xss-v422-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v042200-id941150-xss', 'owasp-crs-v042200-id941320-xss']})" \
--action deny-403
Reemplaza lo siguiente:
PRIORITY: la prioridad de la política de seguridad.POLICY_NAME: el nombre de la política de seguridad que deseas configurar.
¿Qué sigue?
- Para obtener más información sobre el ajuste de reglas de WAF, consulta Ajusta las reglas de WAF preconfiguradas de Cloud Armor