Implementar la solución Security Automations para AWS WAF mediante Terraform - 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.

Implementar la solución Security Automations para AWS WAF mediante Terraform

Creado por el Dr. Rahul Sharad Gaikwad (AWS) y Tamilselvan (AWS)

Repositorio de códigos: -samples aws-waf-automation-terraform

Entorno: PoC o piloto

Tecnologías: seguridad, identidad, cumplimiento; infraestructura; entrega de contenido; DevOps

Carga de trabajo: todas las demás cargas de trabajo

Servicios de AWS: AWS WAF

Resumen

AWS WAF es un firewall de aplicaciones web que ayuda a proteger las aplicaciones de los ataques más comunes mediante reglas personalizables, que se definen e implementan en listas de control de acceso (ACL) web. Configurar las reglas de AWS WAF puede resultar difícil, especialmente para las organizaciones que no cuentan con equipos de seguridad especializados. Para simplificar este proceso, Amazon Web Services (AWS) ofrece la solución Automatizaciones de seguridad para AWS WAF, que implementa automáticamente una única ACL web con un conjunto de reglas de AWS WAF que filtra los ataques basados en la web. Durante la implementación de Terraform, puede especificar qué características de protección desea incluir. Tras implementar esta solución, AWS WAF inspecciona las solicitudes web a las CloudFront distribuciones de Amazon o a los balanceadores de carga de aplicaciones existentes y bloquea las solicitudes que no cumplan con las reglas.

La solución Security Automations for AWS WAF se puede implementar mediante CloudFormation AWS según las instrucciones de la Guía de implementación de Security Automations for AWS WAF. Este patrón ofrece una opción de implementación alternativa para las organizaciones que utilizan HashiCorp Terraform como su herramienta preferida de infraestructura como código (IaC) para aprovisionar y administrar su infraestructura de nube. Al implementar esta solución, Terraform aplica automáticamente los cambios en la nube e implementa y configura los ajustes y las funciones de protección de AWS WAF.

Requisitos previos y limitaciones

Requisitos previos

  • Una cuenta de AWS activa.

  • Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada con los permisos necesarios. Para obtener más información, consulte Introducción (documentación de AWS CLI).

  • Terraform instalado y configurado. Para obtener más información, consulte Instalar Terraform (documentación de Terraform).

Versiones de producto

  • Versión 2.4.25 o posterior de la CLI de AWS

  • Versión de Terraform 1.1.9 o posterior

Arquitectura

Arquitectura de destino

Este patrón despliega la solución Security Automations para AWS WAF. Para obtener más información sobre la arquitectura de destino, consulte la descripción general de la arquitectura en la Guía de implementación de automatizaciones de seguridad para AWS WAF. Para obtener más información sobre las automatizaciones de AWS Lambda en esta implementación, el analizador de registros de aplicaciones, el analizador de registros de AWS WAF, el analizador de listas de IP y el controlador de acceso, consulte los detalles de los componentes en la Guía de implementación de automatizaciones de seguridad para AWS WAF.

Implementación de Terraform

Cuando ejecuta terraform apply, Terraform hace lo siguiente:

  1. Terraform crea roles de IAM y funciones de Lambda en función de las entradas del archivo testing.tfvars.

  2. Terraform crea reglas de ACL y conjuntos de IP de AWS WAF en función de las entradas del archivo testing.tfvars.

  3. Terraform crea los depósitos de Amazon Simple Storage Service (Amazon S3), las reglas de Amazon EventBridge , las tablas de bases de datos de AWS Glue y los grupos de trabajo de Amazon Athena en función de las entradas del archivo testing.tfvars.

  4. Terraform implementa la CloudFormation pila de AWS para aprovisionar los recursos personalizados.

  5. Terraform crea los recursos de Amazon API Gateway en función de las entradas proporcionadas del archivo testing.tfvars.

Automatizar y escalar

Puede usar este patrón para crear reglas de AWS WAF para varias cuentas y regiones de AWS con el fin de implementar la solución de automatizaciones de seguridad para AWS WAF en todo su entorno de nube de AWS.

Herramientas

Servicios de AWS

  • La interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.

  • AWS WAF es un firewall de aplicación web que le ayuda a monitorizar las solicitudes HTTP y HTTPS que se reenvíen a los recursos de su aplicación web protegida.

Otros servicios

  • Git es un sistema de control de versiones distribuido y de código abierto.

  • HashiCorp Terraform es una aplicación de interfaz de línea de comandos que le ayuda a usar código para aprovisionar y administrar la infraestructura y los recursos de la nube.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub AWS WAF Automation Using Terraform.

Prácticas recomendadas

  • Coloque los archivos estáticos en buckets de S3 separados.

  • Evite codificar variables de forma rígida.

  • Limite el uso de scripts personalizados.

  • Adopte una convención de nomenclatura.

Epics

TareaDescripciónHabilidades requeridas

Instale Git

Siga las instrucciones de Primeros pasos (sitio web de Git) para instalar Git en su estación de trabajo local.

DevOps ingeniero

Clonar el repositorio.

En la estación de trabajo local, introduzca el siguiente comando para clonar el repositorio de código. Para copiar el comando completo, incluida la URL del repositorio, consulte la sección Información adicional de este patrón.

git clone <repo-URL>.git
DevOps ingeniero

Actualice las variables.

  1. Acceda al directorio clonado ejecutando el siguiente comando.

    cd terraform-aws-waf-automation
  2. En cualquier editor de texto, abra el archivo testing.tfvars.

  3. Actualice los valores de las variables en el archivo testing.tfvars.

  4. Guarde y cierre el archivo.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Inicialice la configuración de Terraform.

Introduzca el siguiente comando para inicializar el directorio de trabajo que contiene los archivos de configuración de Terraform.

terraform init
DevOps ingeniero

Obtenga una vista previa del plan Terraform.

Escriba el siguiente comando. Terraform evalúa los archivos de configuración para determinar el estado objetivo de los recursos declarados. A continuación, compara el estado objetivo con el estado actual y crea un plan.

terraform plan -var-file="testing.tfvars"
DevOps ingeniero

Verifique el plan.

Revise el plan y confirme que configura la arquitectura requerida en su cuenta de AWS de destino.

DevOps ingeniero

Implemente la solución.

  1. Escriba el siguiente comando para aplicar el plan.

    terraform apply -var-file="testing.tfvars"
  2. Escriba yes para confirmar. Terraform crea, actualiza o destruye la infraestructura para alcanzar el estado objetivo declarado en los archivos de configuración. Para obtener más información sobre la secuencia, consulte el implementación de Terraform en la sección Arquitectura de este patrón.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Verifique los cambios.

  1. En la consola de Terraform, compruebe que las salidas coincidan con los resultados esperados.

  2. Inicie sesión en la Consola de administración de AWS.

  3. Compruebe que los resultados de la consola de Terraform se hayan implementado correctamente en su cuenta de AWS.

DevOps ingeniero

(Opcional) Limpieza de la infraestructura.

Si desea eliminar todos los cambios de configuración y recursos realizados por esta solución, haga lo siguiente:

  1. En la consola de Terraform, introduzca el siguiente comando.

    terraform destroy -var-file="testing.tfvars”
  2. Escriba yes para confirmar.

DevOps ingeniero

Resolución de problemas

ProblemaSolución

Error de WAFV2 IPSet: WAFOptimisticLockException

Si recibe este error al ejecutar el comando terraform destroy, debe eliminar manualmente los conjuntos de IP. Para obtener instrucciones, consulte Eliminación de un conjunto de IP (documentación de AWS WAF).

Recursos relacionados

Referencias de AWS

Referencias de Terraform

Información adicional

El siguiente comando clona el GitHub repositorio para este patrón.

git clone https://github.com/aws-samples/aws-waf-automation-terraform-samples.git