

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.

# Restrinja el acceso en función de la dirección IP o la geolocalización mediante AWS WAF
<a name="aws-waf-restrict-access-geolocation"></a>

*Louis Hourcade, Amazon Web Services*

## Resumen
<a name="aws-waf-restrict-access-geolocation-summary"></a>

[AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)es un firewall de aplicaciones web que ayuda a proteger las aplicaciones web y APIs contra los exploits y bots web más comunes que pueden afectar a la disponibilidad, comprometer la seguridad o consumir recursos excesivos. [Las listas de control de acceso a la web (web ACLs)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) AWS WAF le permiten controlar la forma en que el tráfico llega a sus aplicaciones. En una ACL web, se agregan reglas o grupos de reglas diseñados para permitir el tráfico legítimo, controlar el tráfico de bots y bloquear los patrones de ataque más comunes. Para obtener más información, consulte [Cómo AWS WAF funciona](https://docs.aws.amazon.com/waf/latest/developerguide/how-aws-waf-works.html).

Puede asociar los siguientes tipos de reglas a su AWS WAF web ACLs:
+ [Grupos de reglas AWS gestionadas: los](https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-rule-groups.html) equipos de reglas gestionadas y AWS Marketplace los vendedores ofrecen conjuntos de reglas preconfigurados. Algunos grupos de reglas administradas están diseñados para ayudar a proteger determinados tipos de aplicaciones web. Otros ofrecen una amplia protección contra amenazas conocidas o vulnerabilidades comunes.
+ [Reglas](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) y [grupos de reglas personalizados](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html): también puede crear reglas y grupos de reglas que personalicen el acceso a sus aplicaciones web y APIs. Por ejemplo, puede restringir el tráfico en función de una lista específica de direcciones IP o de países.

Al usar este patrón y el repositorio de código asociado, puede usar la AWS WAF web [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html) ACLs para implementar reglas personalizadas. Estas reglas restringen el acceso a los recursos de la aplicación web según la dirección IP o la ubicación geográfica del usuario final. Si lo desea, también puede adjuntar varios grupos de reglas administrados.

## Requisitos previos y limitaciones
<a name="aws-waf-restrict-access-geolocation-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ [Permisos](https://docs.aws.amazon.com/waf/latest/developerguide/security-iam.html) para implementar AWS WAF recursos
+ AWS CDK[instalado y configurado](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) en su cuenta
+ Git, [instalado](https://github.com/git-guides/install-git)

**Limitaciones**
+ Puede usar este patrón solo Regiones de AWS donde AWS WAF esté disponible. Para obtener información sobre la disponibilidad en regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Tools (Herramientas)
<a name="aws-waf-restrict-access-geolocation-tools"></a>

**Servicios de AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la Nube de AWS infraestructura en el código.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html) es un firewall de aplicación web que lo ayuda a supervisar las solicitudes HTTP y HTTPS que se reenvían a los recursos de su aplicación web protegida.

**Repositorio de código**

El código de este patrón está disponible en el repositorio de [restricciones de GitHub IP y geolocalización](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk). AWS WAF El código despliega dos web. AWS WAF ACLs La primera es una ACL web regional destinada a los recursos de [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html). La segunda es la ACL web global para CloudFront los recursos de [Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html). Ambas páginas ACLs contienen las siguientes reglas personalizadas:
+ `IPMatch` bloquea las solicitudes de direcciones IP no permitidas.
+ `GeoMatch` bloquea las solicitudes de países no permitidos.

Durante la implementación, si lo desea, puede adjuntar todos los siguientes grupos de reglas administradas a su web ACLs:
+ [Conjunto de reglas básicas (CRS)](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-crs): este grupo contiene reglas que son generalmente aplicables a las aplicaciones web. Brinda protección contra la explotación de una amplia gama de vulnerabilidades, incluyendo algunas de las vulnerabilidades de alto riesgo y más comunes descritas en publicaciones de OWASP tales como [OWASP Top 10](https://owasp.org/www-project-top-ten/).
+ [Protección de administración](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-admin): este grupo contiene reglas que permiten bloquear el acceso externo a las páginas administrativas expuestas.
+ [Entradas incorrectas conocidas](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-known-bad-inputs): este grupo de reglas bloquea los patrones de solicitud que se conocen por no ser válidos y que están asociados a la explotación o el descubrimiento de vulnerabilidades.
+ [Lista de reputación de IP de Amazon](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-amazon): este grupo de reglas contiene reglas basadas en la inteligencia de amenazas interna de Amazon. Permite bloquear las direcciones IP que suelen estar asociadas a bots u otras amenazas.
+ [Grupo de reglas administradas en el sistema operativo Linux](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-linux-os): este grupo de reglas bloquean los patrones de solicitud asociados a la explotación de vulnerabilidades específicas de Linux, como los ataques de inclusión de archivos locales (LFI) específicos de Linux.
+ [Grupo de reglas administradas de base de datos de SQL](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-sql-db): este grupo de reglas permite bloquear los patrones de solicitud asociados a la explotación de bases de datos de SQL, como los ataques por inyección de código SQL.

## Epics
<a name="aws-waf-restrict-access-geolocation-epics"></a>

### Configure la AWS WAF web ACLs
<a name="configure-the-waf-web-acls"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio. | Introduzca el siguiente comando para clonar el repositorio [Restricción de IP y geolocalización con AWS WAF](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk) en la estación de trabajo local:<pre>git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git</pre> | Git | 
| Configure las reglas. | 1. En el repositorio clonado, abra el archivo **app.py**.<br />2. Modifique los valores de las siguientes variables para personalizar las reglas:<pre>aws_acccount = "AWS_ACCOUNT"<br />region = "AWS_REGION"<br />ip_list = ["CIDR_RANGE_1", "CIDR_RANGE_2"]<br />geo_list = ["COUNTRY_CODE_1", "COUNTRY_CODE_2"]<br />aws_managed_rules = True</pre><br />Donde:`aws_account`es el ID del objetivo Cuenta de AWS.`region`es el destino Región de AWS de la ACL web para los recursos de API Gateway.La ACL web para CloudFront los recursos es global y se implementará en la `us-east-1` región.`ip_list` es la lista de rangos de CIDR a los que se permite el acceso.`geo_list` es la lista de países a los que está permitido el acceso. Para obtener los valores válidos, consulte la [documentación de AWS WAF](https://docs.aws.amazon.com/waf/latest/APIReference/API_GeoMatchStatement.html).`aws_managed_rules` controla si los grupos de reglas gestionados se agregan a la ACL web. Si este valor es `True`, se agregan. Si este valor es `False`, se excluyen.<br />3. Guarde y cierre el archivo **app.py**. | AWS general, Python | 

### Arranque e implementación del código
<a name="bootstrap-and-deploy-the-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie su AWS entorno. | Si aún no lo ha hecho, debe [iniciar el AWS entorno](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping-env.html) antes de poder implementar la AWS CDK aplicación.1. En la AWS CDK CLI, introduzca el siguiente comando para iniciar la `us-east-1` región:<pre>cdk bootstrap aws://<account-id>/us-east-1</pre><br />2. Si va a implementar la ACL web para API Gateway en una región que no sea `us-east-1`, introduzca el siguiente comando para arrancar la región de destino:<pre>cdk bootstrap aws://<account-id>/<region></pre> | AWS general | 
| Implemente la AWS CDK aplicación. | 1. Introduzca el siguiente comando para implementar la AWS CDK aplicación:<pre>cdk deploy --all</pre><br />2. Espere hasta que se complete el despliegue de la AWS CloudFormation pila. | AWS general | 

### Validación de la implementación
<a name="validate-the-deployment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Confirme que la web se implementó ACLs correctamente. | 1. Inicie sesión en la [AWS WAF consola y Consola de administración de AWS, a continuación, ábrala](https://console.aws.amazon.com/wafv2/).<br />2. En el panel de navegación, elija **Web ACLs**.<br />3. En la lista de Regiones de AWS, elija **Global (CloudFront)**.<br />4. Compruebe que se haya implementado la nueva ACL CloudFront web y confirme que tiene la dirección IP y las reglas de geolocalización que ha definido. El nombre predeterminado de esta ACL web es `WebACLCloudfront-<ID>`.<br />5. En la lista de Regiones de AWS, elija la región en la que desplegó la pila.<br />6. Compruebe que se haya implementado una nueva ACL web para los recursos de API Gateway. Confirme que tiene la dirección IP y las reglas de geolocalización que ha definido. El nombre predeterminado de esta ACL web es `WebACLApiGW-<ID>`. | AWS general | 
| (Opcional) Asocie la web ACLs a sus recursos. | Asocie la AWS WAF web ACLs a sus AWS recursos, como un Application Load Balancer, una API Gateway o CloudFront una distribución. Para obtener instrucciones, consulte [Asociar o desasociar una ACL web con un recurso de ](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html)AWS[https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html). Para ver un ejemplo, consulte [class CfnWeb ACLAssociation (construcción)](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACLAssociation.html) en la AWS CDK documentación. | AWS general | 

### Eliminar recursos
<a name="clean-up-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine las pilas. | 1. Desasocie la ACL web de cualquier AWS recurso. Para obtener instrucciones, consulte la [documentación de AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html).<br />2. En la AWS CDK CLI, introduzca el siguiente comando para eliminar la AWS CDK aplicación.<pre>cdk destroy --all</pre> | AWS general | 

## Recursos relacionados
<a name="aws-waf-restrict-access-geolocation-resources"></a>
+ [Referencia de la API](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) (AWS CDK documentación)
+ [aws-cdk-libMódulo.aws\_wafv2](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2-readme.html) (documentación)AWS CDK 
+ [Trabajar con](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-working-with.html) la web (documentación) ACLs AWS WAF 
+ [Administrar sus propios grupos de reglas](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html) (AWS WAF documentación)
+ [Reglas](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) (AWS WAF documentación)