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 seguridadPOLICY_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 seguridadPOLICY_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 seguridadPOLICY_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 seguridadPOLICY_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 seguridadPOLICY_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 seguridadPOLICY_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 seguridadPOLICY_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 seguridadPOLICY_NAME
: Es 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 Google Cloud Armor.