A lo largo de esta entrada de blog vamos a contar de una manera detallada cómo el equipo de Enimbos afrontó y gestionó un ataque DDoS mediante el sudo de ACLs y AWS Lambda de un cliente que acudió en busca de una solución rápida y completamente eficaz para conseguir mantener la demanda de clientes y usuarios:

 

1       Descripción

El cliente nos comunica su necesidad de instaurar un control de acceso, debido a la aparición esporádica de un número elevado de errores 404. Se planteó en un primer momento el uso de AWS WAF para gestionar el control de peticiones, pero era necesario tener un mayor control de la solución. La necesidad de realizar una serie de listas blancas debido a la realización de tareas de desarrollo sobre el sitio web, dio lugar a la necesidad de plantear una solución dinámica.

 

2       Caso de uso

Tras plantear el uso de soluciones gestionadas por el proveedor cloud, se llega a la conclusión de que es mejor desarrollar una solución propia acorde con los requisitos propuestos por el cliente. Teniendo en cuenta estos criterios y la necesidad de un servicio dinámico, capaz de separar y detectar falsos positivos siempre que se supere un mínimo de peticiones, se decide utilizar microservicios para conseguir este objetivo. En concreto, la solución propuesta se basó en AWS Cloudwatch (Alarmado y lanzamiento del gestor de errores) y AWS Lambda (Gestión de errores utilizando la API de Amazon).

Por lo tanto, si llegado un momento se encontraba un patrón reconocible de direcciones, estas direcciones se añadirían a una lista de control de acceso. Todas las direcciones contenidas en dicha lista tendrían bloqueado el acceso a la página.

El uso de patrones de reconocimiento nos permitió gestionar este asunto de una manera más segura y eficaz, consiguiendo evitar la aparición de falsos positivos utilizando una doble verificación general -> especifica.

 

3       Funcionamiento Interno

En primer lugar, se consultaron las instancias activas del grupo de escalado para la lectura de AWS Cloudwatch y el log de las instancias actuales:

Acto seguido, se consultaron y procesaron los últimos registros de dicho log; consiguiendo una lista de todas las peticiones realizadas a la aplicación web. Para optimizar el procesamiento y disminuir así el tiempo de ataque, solo las peticiones sospechosas fueron programadas para ser almacenadas:

Para cada IP sospechosa se calculó el número de apariciones en los registros y, si dicho número era superior a un umbral previamente establecido, se añadía de manera automática a la lista negra de IPs mediante la creación de una regla en la lista de control de accesos. Para evitar falsos positivos, se incorporó el rango de IPs utilizado por los desarrolladores a una lista blanca de direcciones:

Por último, para mantener el control y la administración del servicio de seguridad, se programó el envío un mensaje a los administradores del sistema cada vez que se detectase un ataque:

About Jose Antonio Gallardo

José Antonio has studied a degree in Computer Engineering at Extremadura University. He has certificates in: Google Cloud Professional - Cloud Architect AWS - Security Specialty  AWS Solutions Architect - Associate AWS Cloud Practitioner Getting Started with AI on Jetson Nano Deep Learning A-ZTM: Hands-On Artificial Neural Networks. In 2019 he joined the Enimbos team as Cloud Consultant.