Google Cloud Armor ayuda a proteger tus servicios contra ataques web y de denegación de servicio distribuido (DSD) con los sistemas de seguridad y la infraestructura global de Google. Puedes ajustar las reglas de WAF preconfiguradas de Cloud Armor para personalizar la forma en que evalúan las solicitudes entrantes, definir mejor la detección de amenazas y reducir los falsos positivos. En esta página, se describe cómo elegir los niveles de sensibilidad, habilitar o inhabilitar las firmas de reglas y excluir los campos de solicitud de la inspección.
Las reglas de WAF preconfiguradas constan de varias firmas provenientes del conjunto de reglas principales de OWASP. Cada firma corresponde a una regla de detección de ataques. Si ajustas estas reglas, puedes personalizar la forma en que evalúan las solicitudes entrantes para que se adapten mejor a los patrones de tráfico específicos de tu aplicación. Puedes ajustar las reglas de WAF preconfiguradas en las políticas de seguridad jerárquicas de tu propiedad. Si tu servicio hereda una política de seguridad jerárquica, no puedes ajustar sus reglas.
Elige un nivel de sensibilidad
Cada firma tiene un nivel de sensibilidad que corresponde a un nivel de paranoia de OWASP.
Puedes seleccionar una sensibilidad entre 0 y 4, aunque el nivel de sensibilidad 0
significa que no hay reglas habilitadas.
Un nivel de sensibilidad más bajo indica firmas de confianza más alta, que tienen menos probabilidades de generar un falso positivo. De forma predeterminada, Cloud Armor está configurado para ejecutarse
en el nivel de sensibilidad 4 y evaluará todas las firmas de un conjunto de reglas una vez
habilitado. Un nivel de sensibilidad más alto aumenta la seguridad, pero también aumenta el
riesgo de generar un falso positivo. Cuando seleccionas un nivel de sensibilidad para
tu regla de WAF preconfigurada, habilitas las firmas en los niveles de sensibilidad inferiores o
iguales al nivel de sensibilidad seleccionado. En el siguiente ejemplo, se selecciona el nivel de sensibilidad de 1 para ajustar una regla de WAF preconfigurada:
evaluatePreconfiguredWaf(
'sqli-v422-stable',
{
'sensitivity': 1
}
)
Inhabilita las firmas de reglas
Si decides que una regla de WAF preconfigurada coincide con más solicitudes de lo necesario o si la regla bloquea el tráfico que se debe permitir, esta se puede ajustar para inhabilitar firmas ruidosas o innecesarias. Para inhabilitar firmas
en una regla de WAF preconfigurada en particular, proporciona una lista de los IDs de las firmas no deseadas
a la expresión evaluatePreconfiguredWaf.
En el siguiente ejemplo, se excluyen dos IDs de reglas CRS de la regla de WAF
sqli-v422-stable (CRS 4.22) preconfigurada:
evaluatePreconfiguredWaf(
'sqli-v422-stable',
{
'sensitivity': 4,
'opt_out_rule_ids': ['owasp-crs-v042200-id942350-sqli', 'owasp-crs-v042200-id942360-sqli']
}
)
Cuando inhabilitas el ID de firma de conjuntos de reglas de CRS preconfiguradas, debes hacer coincidir la versión del ID de firma con la versión del conjunto de reglas (CRS 3.0 o 3.3) para evitar errores de configuración.
Para obtener más información sobre las expresiones de reglas de WAF preconfiguradas, consulta la referencia del lenguaje de reglas personalizadas.
Habilita las firmas de reglas
En lugar de inhabilitar las firmas de reglas, puedes habilitarlas en niveles de sensibilidad inhabilitados. Te recomendamos que habilites las firmas de reglas cuando haya menos firmas que desees usar en un nivel de sensibilidad determinado que reglas que desees inhabilitar. Para habilitar las firmas de reglas, el nivel de sensibilidad debe ser 0. En el siguiente ejemplo, se inhabilitan todas las firmas cve-canary en todos los niveles de sensibilidad y, luego, se habilitan de forma explícita owasp-crs-v042200-id044228-cve y owasp-crs-v042200-id144228-cve:
evaluatePreconfiguredWaf(
'cve-canary',
{
'sensitivity': 0,
'opt_in_rule_ids': ['owasp-crs-v042200-id044228-cve', 'owasp-crs-v042200-id144228-cve']
}
)
Excluye los campos de solicitud de la inspección
A veces, las aplicaciones personalizadas incluyen contenido legítimo en los campos de solicitud (como
encabezados, cookies, parámetros de consulta, URIs o cuerpos de solicitud) que coincide con
las firmas de las reglas de WAF preconfiguradas. Para reducir los falsos positivos, excluye estos
campos de solicitud de la inspección agregando una lista de exclusiones a la regla de política de
seguridad. Ten en cuenta que, cuando tienes una exclusión de campo de solicitud adjunta a una regla de WAF,
no puedes usar la acción allow.
Cuando configuras una exclusión de campos de solicitud, la asocias con un destino. Un destino puede ser todos los conjuntos de reglas (una exclusión global), una regla de WAF preconfigurada completa o una lista de firmas en una regla de WAF preconfigurada. Usa un operador de campo y un valor de campo para especificar una coincidencia exacta o parcial. Los operadores de campo disponibles son los siguientes:
EQUALS: El operador coincide si el valor del campo es igual al valor especificado.STARTS_WITH: El operador coincide si el valor del campo comienza con el valor especificado.ENDS_WITH: El operador coincide si el valor del campo termina con el valor especificado.CONTAINS: El operador coincide si el valor del campo contiene el valor especificado.EQUALS_ANY: El operador coincide si el valor del campo es cualquier valor.
Límite de exclusión de ajuste
El límite predeterminado de exclusión de ajuste es de 100 para las políticas de backend a nivel de servicio (tanto globales como regionales). Este límite se aplica por destino y controla la cantidad máxima de exclusiones que puedes configurar dentro de una regla de política de seguridad. Un destino es la combinación de un conjunto de reglas y un ID de regla. El límite se aplica a las exclusiones de los siguientes campos:
- Encabezados de la solicitud
- Cookies de solicitud
- Parámetros de consulta de solicitud
- URIs de solicitud
- Cuerpos de la solicitud
Por ejemplo, si tienes una regla de WAF preconfigurada (como
evaluatePreconfiguredWaf('sqli-v422-stable')) y deseas excluir campos de solicitud
en un destino específico (como owasp-crs-v042200-id942100-sqli en
sqli-v422-stable), puedes configurar hasta 100 encabezados de la solicitud, 100 cookies de solicitud,
100 parámetros de consulta de solicitud, 100 URI de solicitud y 100 cuerpos de solicitud
para que se excluyan de ese destino.
En las siguientes secciones, se describen las exclusiones globales, los campos de solicitud que puedes excluir de la inspección y ejemplos.
Exclusiones globales
Para aplicar una exclusión a todos los conjuntos de reglas de una regla de política de seguridad, especifica una exclusión global configurando la marca --target-rule-set como "*". Puedes usar una exclusión global para excluir cualquier tipo de campo de solicitud, como encabezados, cookies, parámetros de consulta, URIs o cuerpos de solicitud. No especifiques IDs de reglas de destino para una exclusión global.
Encabezados de la solicitud
Es una lista de nombres de encabezados de la solicitud cuyo valor se excluye de la inspección durante la evaluación de la regla de WAF preconfigurada.
La exclusión solo se aplica a las firmas en el destino que inspeccionarían el valor del encabezado de la solicitud originalmente. Esto incluye las firmas que están asociadas con la siguiente marca de solicitud en el conjunto de reglas principales de OWASP:
REQUEST_HEADERS
Solo se excluye de la inspección el valor de los encabezados de solicitud especificados. El nombre se inspecciona de todos modos.
Cookies de solicitud
Es una lista de nombres de cookies de solicitud cuyo valor se excluye de la inspección durante la evaluación de la regla de WAF preconfigurada.
La exclusión solo se aplica a las firmas en el destino que inspeccionarían el valor de la cookie de solicitud originalmente. Esto incluye las firmas que están asociadas con la siguiente marca de solicitud en el conjunto de reglas principales de OWASP:
REQUEST_COOKIES
Solo se excluye de la inspección el valor de las cookies de solicitud especificadas. El nombre se inspecciona de todos modos.
Parámetros de consulta de solicitud
Es una lista de nombres de parámetros de consulta de solicitud cuyo valor se excluye de la inspección durante la evaluación de la regla de WAF preconfigurada.
La exclusión solo se aplica a las firmas en el destino que inspeccionarían los parámetros de solicitud originalmente. Esto incluye las firmas que están asociadas con las siguientes marcas de solicitud en el conjunto de reglas principales de OWASP:
ARGSARGS_GETREQUEST_URIREQUEST_URI_RAWREQUEST_LINE
Solo el valor de los parámetros de consulta especificados se excluye de la inspección, que puede ser en la cadena de consulta o en el cuerpo de la solicitud. El nombre se inspecciona de todos modos.
Debido a que los parámetros de consulta son parte del URI y la línea de solicitud, estos campos se vuelven a ensamblar para inspeccionarlos después de excluir los parámetros de consulta especificados. Sin embargo, para las firmas que inspeccionan
todo el cuerpo de la solicitud (como las firmas asociadas con la
marca de la solicitud REQUEST_BODY), no se aplica la exclusión de los parámetros de consulta.
Por ejemplo, si excluyes un parámetro de consulta llamado "args", es posible que aún veas una coincidencia en una firma que inspeccione todo el cuerpo de la solicitud si la solicitud tiene un parámetro "args" en el cuerpo de la solicitud y el valor de "args" coincide.
URI de solicitud
Es una lista de URIs de la línea de solicitud que excluye los datos de la cadena de consulta para excluirlos de la inspección durante la evaluación de la regla de WAF preconfigurada.
La exclusión solo se aplica a las firmas en el destino que inspeccionarían los URI de solicitud originalmente. Esto incluye las firmas que están asociadas con las siguientes marcas de solicitud del conjunto de reglas principales de OWASP:
REQUEST_URIREQUEST_URI_RAWREQUEST_LINEREQUEST_FILENAMEREQUEST_BASENAME
Cuando se excluye cualquiera de los campos anteriores, el campo se excluye por completo de la inspección y no se vuelve a ensamblar.
Cuerpos de la solicitud
Especifica los valores del cuerpo de la solicitud que se excluirán de la inspección durante la evaluación de la regla de WAF preconfigurada.
Esta exclusión solo se aplica a las firmas en el destino que inspeccionan el valor del cuerpo de la solicitud, como las firmas asociadas con la marca de solicitud REQUEST_BODY en el conjunto de reglas principales de OWASP.
Solo se excluyen de la inspección los cuerpos de solicitud que coinciden con el valor especificado.
Valores de campo
Debes especificar un valor de campo si usas un operador de campo que no sea
EQUALS_ANY.
En el caso de los encabezados de la solicitud, las cookies y los parámetros de consulta de la solicitud, el grupo de caracteres permitido para los valores de campo incluye los siguientes caracteres:
!,#,$,%,&,*,+,-,.,^,_,`,|,~- Caracteres alfabéticos de la
Aa laZ(tanto en mayúsculas como en minúsculas) - Caracteres de dígitos del
0al9
En el caso de los cuerpos de las solicitudes, el grupo de caracteres permitido para los valores de los campos incluye todos
los caracteres ASCII imprimibles, excepto ', \`,(, and)`:
- Espacio (
) y caracteres especiales:!,",#,$,%,&,*,+,,,-,.,/,:,;,<,=,>,?,@,[,],^,_,`,{,|,},~ - Caracteres alfabéticos de la
Aa laZ(tanto en mayúsculas como en minúsculas) - Caracteres de dígitos del
0al9
Cuando se aplican exclusiones para estos campos de solicitud, los valores de campo configurados se comparan tal como están con los valores (no distinguen mayúsculas de minúsculas, después de la transformación) de la solicitud. No se espera que realices una codificación adicional si deseas excluir un carácter específico que no está en el grupo de caracteres permitidos.
Para los URI de solicitud, el valor del campo se debe proporcionar en un formato de URI de la siguiente manera:
- Se permite un esquema, pero se restringe solo a http o https.
- Se permite un host, que puede ser una dirección IP.
- Se permite un puerto.
- Se permite una ruta de acceso.
- No se permite una consulta.
- No se permite un fragmento.
Cuando se aplican exclusiones para los URI de solicitud, los valores de campo de configuración se comparan tal como están con los URI (no distinguen mayúsculas de minúsculas, después de la transformación) de la línea de solicitud, sin incluir la cadena de consulta. Los URI de la línea de solicitud pueden ser relativos o absolutos. Ten esto en cuenta cuando configures exclusiones para los URI de solicitud.
Ejemplos
En el primer ejemplo, se actualiza la regla en la política de seguridad
POLICY_1 en PRIORITY para agregar una configuración de exclusión global
para todos los conjuntos de reglas. Esto excluye de la inspección los cuerpos de solicitud que contienen
bad-body-value:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_1 \
--target-rule-set "*" \
--request-body-to-exclude "op=CONTAINS,val=bad-body-value"
Reemplaza lo siguiente:
PRIORITY: Es la prioridad de la regla.POLICY_1: el nombre de la política de seguridad
En el segundo ejemplo, se actualiza la regla en la política de seguridad
POLICY_2 en PRIORITY para agregar una configuración de exclusión
para todas las firmas en la regla de WAF preconfigurada sqli-v422-stable, con el objetivo de
excluir todas las cookies de solicitud de la inspección:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_2 \
--target-rule-set "sqli-v422-stable" \
--request-cookie-to-exclude "op=EQUALS_ANY"
Reemplaza lo siguiente:
PRIORITY: Es la prioridad de la regla.POLICY_2: el nombre de la política de seguridad
En el tercer ejemplo, se actualiza la regla en la política de seguridad
POLICY_3 en PRIORITY para agregar una configuración de exclusión
para las firmas
owasp-crs-v042200-id941140-xss y owasp-crs-v042200-id941270-xss en la regla de WAF preconfigurada
xss-v422-stable, para excluir de la inspección los encabezados de la solicitud que comienzan con
abc o terminan con xyz:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_3 \
--target-rule-set "xss-v422-stable" \
--target-rule-ids "owasp-crs-v042200-id941140-xss,owasp-crs-v042200-id941270-xss" \
--request-header-to-exclude "op=STARTS_WITH,val=abc" \
--request-header-to-exclude "op=ENDS_WITH,val=xyz"
Reemplaza lo siguiente:
PRIORITY: Es la prioridad de la regla.POLICY_3: el nombre de la política de seguridad
En el cuarto ejemplo, se actualiza la regla en la política de seguridad
POLICY_4 en PRIORITY para agregar una configuración de exclusión
para todas las firmas en la regla de WAF preconfigurada sqli-v422-stable. Esto
excluye de la inspección los parámetros de consulta de la solicitud (analizados a partir de la cadena de consulta del URI o la carga útil del cuerpo)
que son iguales a bad-param:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_4 \
--target-rule-set "sqli-v422-stable" \
--request-query-param-to-exclude "op=EQUALS,val=bad-param"
Reemplaza lo siguiente:
PRIORITY: Es la prioridad de la regla.POLICY_4: el nombre de la política de seguridad
En el quinto ejemplo, se actualiza la regla en la política de seguridad
POLICY_5 en PRIORITY para agregar una configuración de exclusión
para la firma owasp-crs-v042200-id930100-lfi en la regla de WAF preconfigurada
lfi-v422-stable. Esto excluye de la inspección los URI de solicitud que contienen
/bad-path:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_5 \
--target-rule-set "lfi-v422-stable" \
--target-rule-ids "owasp-crs-v042200-id930100-lfi" \
--request-uri-to-exclude "op=CONTAINS,val=/bad-path"
Reemplaza lo siguiente:
PRIORITY: Es la prioridad de la regla.POLICY_5: el nombre de la política de seguridad
En el sexto ejemplo, se actualiza la regla en la política de seguridad
POLICY_6 en PRIORITY para quitar todas las
exclusiones del campo de solicitud para los IDs de regla owasp-crs-v042200-id942110-sqli y
owasp-crs-v042200-id942120-sqli en sqli-v422-stable.
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_6 \
--target-rule-set "sqli-v422-stable" \
--target-rule-ids "owasp-crs-v042200-id942110-sqli,owasp-crs-v042200-id942120-sqli"
Reemplaza lo siguiente:
PRIORITY: Es la prioridad de la regla.POLICY_6: el nombre de la política de seguridad
Aplica el análisis en los valores de encabezado Content-Type personalizados
Cuando Cloud Armor evalúa el cuerpo de la solicitud según las reglas de WAF preconfiguradas, el
encabezado Content-Type indica el formato de los datos en el cuerpo de la solicitud. De forma
predeterminada, Cloud Armor trata el contenido del cuerpo de la solicitud como una
cadena, que es apta para la inspección y la coincidencia en tus
reglas de WAF preconfiguradas. Sin embargo, puedes configurar un análisis más preciso si tus
solicitudes entrantes tienen una codificación diferente.
Cloud Armor admite los siguientes tipos de codificación:
- JSON
- GraphQL
Para obtener más información, consulta Análisis del contenido del cuerpo de la solicitud.
¿Qué sigue?
- Obtén más información sobre las reglas de ajuste.
- Obtén más información para crear y ver políticas de seguridad.
- Obtén más información sobre qué firmas de reglas están disponibles para las reglas de WAF preconfiguradas.
- Obtén más información sobre las reglas de WAF preconfiguradas mediante la referencia del lenguaje de reglas personalizadas.