Instrucción de regla de coincidencia geográfica - AWS WAF, AWS Firewall Manager, y AWS Shield Advanced

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Instrucción de regla de coincidencia geográfica

Utilice instrucciones de concordancia geográfica para administrar las solicitudes web en función del país y la región de origen. Una instrucción de concordancia geográfica agrega etiquetas a las solicitudes web que indican el país de origen y la región de origen. Añade estas etiquetas independientemente de si los criterios de la instrucción coinciden con los de la solicitud. Una instrucción de coincidencia geográfica también realiza una comparación con el país de origen de la solicitud.

¿Cómo usar la instrucción de coincidencia geográfica

Puede usar la instrucción de coincidencia geográfica para la coincidencia de países o regiones, de la siguiente manera:

  • País: puede usar una regla de coincidencia geográfica por sí sola para gestionar las solicitudes en función únicamente de su país de origen. La instrucción de regla coincide con los códigos de país. También puede seguir una regla de coincidencia geográfica con una regla de coincidencia de etiquetas que coincida con la etiqueta del país de origen.

  • Región: use una regla de coincidencia geográfica seguida de una regla de coincidencia de etiquetas para gestionar las solicitudes en función de su región de origen. No puede usar una regla de coincidencia geográfica por sí sola para hacer coincidir los códigos de región.

Para obtener información sobre el uso de las reglas de coincidencia de etiquetas, consulte Instrucción de regla de coincidencia de etiquetas y AWS WAF etiquetas en las solicitudes web.

Cómo funciona la instrucción de coincidencia geográfica

Con la declaración geo match, AWS WAF gestiona cada solicitud web de la siguiente manera:

  1. Determina los códigos de país y región de la solicitud: AWS WAF determina el país y la región de una solicitud en función de su dirección IP. De forma predeterminada, AWS WAF utiliza la dirección IP del origen de la solicitud web. Puedes indicar AWS WAF que uses una dirección IP de un encabezado de solicitud alternativo, por ejemploX-Forwarded-For, habilitando la configuración de IP reenviada en la configuración de la declaración de reglas.

    AWS WAF determina la ubicación de las solicitudes mediante bases de datos de MaxMind GeoIP. MaxMind informa de una precisión muy alta de sus datos a nivel de país, aunque la precisión varía según factores como el país y el tipo de IP. Para obtener más información MaxMind, consulte Geolocalización de MaxMind IP. Si cree que alguno de los datos de GeoIP es incorrecto, puede enviar una solicitud de corrección a Maxmind en MaxMind Correct GeoIP2 Data.

    AWS WAF utiliza los códigos de país y región alfa-2 de la norma 3166 de la Organización Internacional de Normalización (ISO). Puede encontrar los códigos en las siguientes ubicaciones:

  2. Determina la etiqueta de país y la etiqueta de región que se van a agregar a la solicitud: las etiquetas indican si la instrucción de coincidencia geográfica utiliza la configuración de IP de origen o de IP reenviada.

    • ID de origen

      La etiqueta del país es awswaf:clientip:geo:country:<ISO country code>. Ejemplo para los Estados Unidos: awswaf:clientip:geo:country:US.

      La etiqueta de la región es awswaf:clientip:geo:region:<ISO country code>-<ISO region code>. Ejemplo para los Oregón, en Estados Unidos: awswaf:clientip:geo:region:US-OR.

    • IP reenviada

      La etiqueta del país es awswaf:forwardedip:geo:country:<ISO country code>. Ejemplo para los Estados Unidos: awswaf:forwardedip:geo:country:US.

      La etiqueta de la región es awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>. Ejemplo para los Oregón, en Estados Unidos: awswaf:forwardedip:geo:region:US-OR.

    Si el código de país o región no está disponible para la dirección IP especificada de una solicitud, AWS WAF utiliza XX en las etiquetas, en lugar del valor. Por ejemplo, la siguiente etiqueta es para la IP de un cliente cuyo código de país no está disponible: awswaf:clientip:geo:country:XX y la siguiente es para una IP reenviada cuyo país es Estados Unidos, pero cuyo código de región no está disponible: awswaf:forwardedip:geo:region:US-XX.

  3. Evalúa el código de país de la solicitud según los criterios de la regla

La instrucción de coincidencia geográfica agrega etiquetas de país y región a todas las solicitudes que inspecciona, independientemente de si encuentra o no una coincidencia.

nota

AWS WAF añade cualquier etiqueta al final de la evaluación de la solicitud web de una regla. Por este motivo, cualquier coincidencia de etiquetas que utilice con las etiquetas de una instrucción de coincidencia geográfica debe definirse en una regla independiente de la regla que contiene la instrucción de coincidencia geográfica.

Si quiere inspeccionar solo los valores de las regiones, puede escribir una regla de coincidencia geográfica con la acción Count y con una sola coincidencia de códigos de país, seguida de una regla de coincidencia de etiquetas para las etiquetas de las regiones. Debe proporcionar un código de país para que la regla de coincidencia geográfica lo evalúe, incluso para este enfoque. Puede reducir el registro y las métricas de recuento especificando un país que muy probablemente no sea un origen de tráfico para su sitio.

CloudFront distribuciones y la función de restricción CloudFront geográfica

En el caso de CloudFront las distribuciones, si utilizas la función de restricción CloudFront geográfica, ten en cuenta que la función no reenvía las solicitudes bloqueadas a. AWS WAF Reenvía las solicitudes permitidas a AWS WAF. Si quieres bloquear las solicitudes en función de la zona geográfica y de otros criterios que puedas especificar AWS WAF, utiliza la declaración de concordancia AWS WAF geográfica y no utilices la función de restricción CloudFront geográfica.

Características de la instrucción de coincidencia geográfica

Se puede anidar: puede anidar este tipo de instrucción.

WCU: 1 WCU.

Configuración: esta instrucción utiliza la siguiente configuración:

  • Códigos de país: conjunto de códigos de países que se pueden comparar para obtener una coincidencia geográfica. Deben ser códigos de país de dos caracteres, de los códigos ISO de país alfa-2 de la norma internacional ISO 3166, por ejemplo, ["US","CN"].

  • (Opcional) Configuración de IP reenviada: de forma predeterminada, AWS WAF utiliza la dirección IP del origen de la solicitud web para determinar el país de origen. Como alternativa, puedes configurar la regla para que utilice una IP reenviada en un encabezado HTTP, como en X-Forwarded-For su lugar. AWS WAF usa la primera dirección IP del encabezado. Con esta configuración, también se especifica un comportamiento alternativo para aplicarlo a una solicitud web con una dirección IP con un formato incorrecto en el encabezado. El comportamiento alternativo establece que el resultado de la solicitud coincide o no coincide. Para obtener más información, consulte Dirección IP reenviada.

Dónde encontrar esta instrucción de regla
  • Generador de reglas en la consola: en Opción de la solicitud, elija Se origina desde un país de.

  • APIGeoMatchStatement

Ejemplos

Puede utilizar la instrucción de coincidencia geográfica para administrar las solicitudes de países o regiones específicos. Por ejemplo, para bloquear determinados países, pero seguir permitiendo solicitudes de un conjunto específico de direcciones IP de uno de esos países, podría crear una regla con la acción establecida en Block y las siguientes instrucciones anidadas:

  • AND instrucción

    • Instrucción de coincidencia geográfica en la que se enumeran los países que desea bloquear

    • NOT instrucción

      • Instrucción de conjuntos de IP que especifica las direcciones IP que desea permitir

O bien, si quiere bloquear algunas regiones de determinados países y, al mismo tiempo, permitir solicitudes de otras regiones de esos países, puede definir primero una regla de coincidencia geográfica con la acción establecida en Count. A continuación, defina una regla de coincidencia de etiquetas que coincida con las etiquetas de coincidencia geográfica agregadas y gestione las solicitudes según sea necesario.

El siguiente pseudocódigo describe un ejemplo de este enfoque:

  1. Instrucción de coincidencia geográfica en la que se enumeran los países cuyas regiones quiere bloquear, pero con la acción configurada como Recuento. Esto etiqueta todas las solicitudes web, independientemente del estado de coincidencia, y también proporciona métricas de recuento de los países de interés.

  2. Instrucción AND con acción de bloqueo

    • Instrucción de concordancia de etiquetas que especifica las etiquetas de los países que desea bloquear

    • NOT instrucción

      • Instrucción de coincidencia de etiquetas que especifica las etiquetas de las regiones de los países por los que quiere permitir el paso

La siguiente lista de JSON muestra una implementación de las dos reglas descritas en el pseudocódigo anterior. Estas reglas bloquean todo el tráfico procedente de los Estados Unidos, excepto el tráfico procedente de Oregón y Washington. La instrucción de coincidencia geográfica agrega etiquetas de país y región a todas las solicitudes que inspecciona. La regla de coincidencia de etiquetas se ejecuta después de la regla de coincidencia geográfica, por lo que puede coincidir con las etiquetas de país y región que la regla de coincidencia geográfica acaba de agregar. La instrucción de coincidencia geográfica utiliza una dirección IP reenviada, por lo que la coincidencia de etiquetas también especifica las etiquetas de IP reenviadas.

{ "Name": "geoMatchForLabels", "Priority": 10, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ], "ForwardedIPConfig": { "HeaderName": "X-Forwarded-For", "FallbackBehavior": "MATCH" } } }, "Action": { "Count": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "geoMatchForLabels" } }, { "Name": "blockUSButNotOROrWA", "Priority": 11, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:country:US" } }, { "NotStatement": { "Statement": { "OrStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:region:US-OR" } }, { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:region:US-WA" } } ] } } } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "blockUSButNotOROrWA" } }

Como otro ejemplo, puede combinar la coincidencia geográfica con reglas basadas en tasas para priorizar los recursos para los usuarios de un país o región en particular. Puede crear una instrucción basada en tasas diferente para cada instrucción de coincidencia geográfica o de etiquetas que utilice para diferenciar a sus usuarios. Establezca un límite de frecuencia mayor para los usuarios del país o región preferido y un límite de frecuencia menor para otros usuarios.

La siguiente lista de JSON muestra una regla de coincidencia geográfica seguida de reglas basadas en tasas que limitan la tasa de tráfico procedente de los Estados Unidos. Las normas permiten que el tráfico procedente de Oregón entre a una tasa mayor que el tráfico procedente de cualquier otro lugar del país.

{ "Name": "geoMatchForLabels", "Priority": 190, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ] } }, "Action": { "Count": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "geoMatchForLabels" } }, { "Name": "rateLimitOregon", "Priority": 195, "Statement": { "RateBasedStatement": { "Limit": 3000, "AggregateKeyType": "IP", "ScopeDownStatement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:region:US-OR" } } } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rateLimitOregon" } }, { "Name": "rateLimitUSNotOR", "Priority": 200, "Statement": { "RateBasedStatement": { "Limit": 100, "AggregateKeyType": "IP", "ScopeDownStatement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:country:US" } }, { "NotStatement": { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:region:US-OR" } } } } ] } } } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rateLimitUSNotOR" } }