Restrinja el acceso en función de la dirección IP o la geolocalización mediante AWS WAF - Recomendaciones de AWS

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

Creado por Louis Hourcade () AWS

Repositorio de código: Repositorio de Github en aws-samples

Entorno: PoC o piloto

Tecnologías: seguridad, identidad, conformidad; aplicaciones web y móviles

AWSservicios: AWSCDK; AWS WAF

Resumen

AWS WAFes 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 (webACLs) AWS WAF le permiten controlar la forma en que el tráfico llega a sus aplicaciones. En una webACL, 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, consulta Cómo AWS WAF funciona.

Puede asociar los siguientes tipos de reglas a su AWS WAF webACLs:

  • Grupos de reglas AWS gestionadas: los equipos de reglas gestionadas y AWS Marketplace los vendedores ofrecen conjuntos de reglas preconfigurados. Algunos grupos de reglas gestionados están diseñados para ayudar a proteger tipos específicos de aplicaciones web. Otros ofrecen una amplia protección contra amenazas conocidas o vulnerabilidades comunes.

  • Reglas y grupos de reglas personalizados: también puede crear reglas y grupos de reglas que personalicen el acceso a sus aplicaciones web yAPIs. Por ejemplo, puede restringir el tráfico en función de una lista específica de direcciones IP o de una lista 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)ACLspara implementar reglas personalizadas. Estas reglas restringen el acceso a los recursos de la aplicación web en función de la dirección IP o la geolocalización del usuario final. Si lo desea, también puede adjuntar varios grupos de reglas administrados.

Requisitos previos y limitaciones

Requisitos previos 

Limitaciones

  • Puede usar este patrón solo Regiones de AWS donde AWS WAF esté disponible. Para ver la disponibilidad por región, consulta Servicios de AWS por región.

Herramientas

Servicios de AWS

  • AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir y aprovisionar Nube de AWS la infraestructura en código.

  • AWS WAFes un firewall de aplicaciones web que le ayuda a supervisar HTTP y reenviar las HTTPS solicitudes a los recursos de aplicaciones web protegidas.

Repositorio de código

El código de este patrón está disponible en el repositorio de restricciones de GitHub IP y geolocalización. AWS WAF El código despliega dos web. AWS WAF ACLs La primera es una web ACL regional destinada a los recursos de Amazon API Gateway. La segunda es la web global ACL de CloudFront recursos de Amazon. Ambas páginas ACLs contienen las siguientes reglas personalizadas:

  • IPMatchbloquea las solicitudes de direcciones IP no permitidas.

  • GeoMatchbloquea las solicitudes de países no permitidos.

Durante la implementación, si lo desea, puede adjuntar todos los siguientes grupos de reglas gestionados a su webACLs:

  • Conjunto de reglas principales (CRS): este grupo de reglas contiene reglas que se aplican generalmente a las aplicaciones web. Ayuda a proteger contra la explotación de una amplia gama de vulnerabilidades, incluidas algunas de las vulnerabilidades de alto riesgo y frecuentes que se describen en OWASP publicaciones, como las 10 OWASP principales.

  • Protección de administradores: este grupo de reglas contiene reglas que le ayudan a bloquear el acceso externo a las páginas administrativas expuestas.

  • Entradas incorrectas conocidas: este grupo de reglas ayuda a bloquear los patrones de solicitudes que se sabe que no son válidos y que están asociados a la explotación o el descubrimiento de vulnerabilidades.

  • Lista de reputación IP de Amazon: este grupo de reglas contiene reglas que se basan en la inteligencia de amenazas interna de Amazon. Le ayuda a bloquear las direcciones IP que suelen estar asociadas a bots u otras amenazas.

  • Grupo de reglas gestionado por el sistema operativo Linux: este grupo de reglas ayuda a bloquear los patrones de solicitudes asociados a la explotación de las vulnerabilidades de Linux, incluidos los ataques de inclusión de archivos locales () LFI específicos de Linux.

  • SQLgrupo de reglas gestionado por bases de datos: este grupo de reglas ayuda a bloquear los patrones de solicitudes asociados a la explotación de las SQL bases de datos, como SQL los ataques de inyección.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Introduzca el siguiente comando para clonar la restricción de IP y geolocalización con el AWS WAF repositorio en su estación de trabajo local:

git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git
Git

Configure las reglas.

  1. En el repositorio clonado, abra el archivo app.py.

  2. Modifique los valores de las siguientes variables para personalizar las reglas:

    aws_acccount = "AWS_ACCOUNT" region = "AWS_REGION" ip_list = ["CIDR_RANGE_1", "CIDR_RANGE_2"] geo_list = ["COUNTRY_CODE_1", "COUNTRY_CODE_2"] aws_managed_rules = True

    Donde:

    • aws_accountes el ID del objetivo Cuenta de AWS.

    • regiones el destino de la web Región de AWS ACL para los recursos de API Gateway.

      Nota: La web ACL de CloudFront recursos es global y se implementará en la us-east-1 región.

    • ip_listes la lista de CIDR rangos a los que se permite el acceso.

    • geo_listes la lista de países a los que se permite el acceso. Para ver los valores válidos, consulte la AWS WAF documentación.

    • aws_managed_rulescontrola si los grupos de reglas gestionados se añaden a la webACL. Si este valor esTrue, se añaden. Si este valor esFalse, se excluyen.

  3. Guarde y cierre el archivo app.py.

GeneralAWS, Python
TareaDescripciónHabilidades requeridas

Inicie su entorno. AWS

Si aún no lo ha hecho, debe iniciar el AWS entorno antes de poder implementar la AWS CDK aplicación.

  1. En el AWS CDK CLI, introduzca el siguiente comando para arrancar la us-east-1 región:

    cdk bootstrap aws://<account-id>/us-east-1
  2. Si va a implementar la web ACL para API Gateway en una región que no seaus-east-1, introduzca el siguiente comando para iniciar la región de destino:

    cdk bootstrap aws://<account-id>/<region>
General AWS

Implemente la AWS CDK aplicación.

  1. Introduzca el siguiente comando para implementar la AWS CDK aplicación:

    cdk deploy --all
  2. Espere hasta que se complete el despliegue de la AWS CloudFormation pila.

General AWS
TareaDescripciónHabilidades requeridas

Confirme que la web se implementó ACLs correctamente.

  1. Inicie sesión en la AWS WAF consola y AWS Management Console, a continuación, ábrala.

  2. En el panel de navegación, elija Web ACLs.

  3. En la lista de Regiones de AWS, elija Global (CloudFront).

  4. Compruebe que ACL se haya implementado la nueva CloudFront web y confirme que tiene la dirección IP y las reglas de geolocalización que ha definido. El nombre predeterminado de esta web ACL es. WebACLCloudfront-<ID>

  5. En la lista de Regiones de AWS, elija la región en la que desplegó la pila.

  6. Compruebe que se haya implementado una nueva web ACL 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 web ACL es. WebACLApiGW-<ID>

General AWS

(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 puerta de enlace o CloudFront una distribución. Para obtener instrucciones, consulte Asociar o desasociar una web ACL a un recurso.AWS Para ver un ejemplo, consulte class CfnWeb ACLAssociation (construct) en la documentación. AWS CDK

General AWS
TareaDescripciónHabilidades requeridas

Elimine las pilas.

  1. Disocia la web ACL de cualquier AWS recurso. Para obtener instrucciones, consulte la AWS WAF documentación.

  2. En el AWS CDK CLI, introduzca el siguiente comando para eliminar la AWS CDK aplicación.

    cdk destroy --all
General AWS

Recursos relacionados