
Hay muchos tutoriales en Internet que promueven el alojamiento económico de sitios web estáticos a través de AWS S3 + AWS Cloudfront (+ Cloudflare).
Ejemplo de estos sería:
Estuve analizando la estructura de precios de los servicios de AWS y, en el caso de S3 o Cloudfront, creo que es imposible limitar los costos asociados con solicitudes no válidas, ya que Amazon también factura el tráfico y las solicitudes generadas por solicitudes no válidas o bloqueadas.
Incluso el uso de Amazon WAF, que puede bloquear rangos de direcciones IP específicos, no debería ayudarle, ya que el solicitante aún debería recibir un mensaje de "Acceso denegado" o algo similar.
Las solicitudes no válidas implicarían:
- solicitudes de objetos que no están presentes
- caso de uso"servir contenido privado"
- parámetros faltantes para URL firmadas/cookies firmadas
- Credenciales de IAM/incógnito incorrectas
Precios (S3 en Virginia del Norte / Cloudfront EE. UU.; 25 de marzo de 2018)
---------------------------------------------------------------------------------------
- service - # requests type - pricing -
---------------------------------------------------------------------------------------
- S3 - 1000 PUT/COPY/POST requests - 0.0050 USD -
---------------------------------------------------------------------------------------
- S3 - 1000 GET and other requests - 0.0004 USD -
---------------------------------------------------------------------------------------
- Cloudfront - 10000 HTTP - 0.0075 USD -
---------------------------------------------------------------------------------------
- Cloudfront - 10000 HTTPS - 0.0100 USD -
---------------------------------------------------------------------------------------
Costos de un ataque DDoS con solicitudes no válidas
-------------------------------------------------------------------------------------------------------------
- requests per second - service - type - costs per day - costs per month -
-------------------------------------------------------------------------------------------------------------
- 200 - S3 (North-Verginia) - POST - 86.400 USD - 2592.00 USD -
-------------------------------------------------------------------------------------------------------------
- 500 - S3 (North-Verginia) - POST - 216.000 USD - 6480.00 USD -
-------------------------------------------------------------------------------------------------------------
- 1000 - S3 (North-Verginia) - POST - 432.000 USD - 12960.00 USD -
-------------------------------------------------------------------------------------------------------------
- 200 - S3 (North-Verginia) - GET - 6.912 USD - 207.36 USD -
-------------------------------------------------------------------------------------------------------------
- 500 - S3 (North-Verginia) - GET - 17.280 USD - 518.40 USD -
-------------------------------------------------------------------------------------------------------------
- 1000 - S3 (North-Verginia) - GET - 34.560 USD - 1036.80 USD -
-------------------------------------------------------------------------------------------------------------
- 200 - Cloudfront (USA) - HTTPS - 17.000 USD - 518.40 USD -
-------------------------------------------------------------------------------------------------------------
- 500 - Cloudfront (USA) - HTTPS - 216.000 USD - 1296.00 USD -
-------------------------------------------------------------------------------------------------------------
- 1000 - Cloudfront (USA) - HTTPS - 432.000 USD - 2592.00 USD -
-------------------------------------------------------------------------------------------------------------
- 10000 - Cloudfront (USA) - HTTPS - 864.000 USD - 25920.00 USD -
-------------------------------------------------------------------------------------------------------------
- 200 - Cloudfront (USA) - HTTP - 12.960 USD - 388.80 USD -
-------------------------------------------------------------------------------------------------------------
- 500 - Cloudfront (USA) - HTTP - 32.400 USD - 972.00 USD -
-------------------------------------------------------------------------------------------------------------
- 1000 - Cloudfront (USA) - HTTP - 64.800 USD - 1944.00 USD -
-------------------------------------------------------------------------------------------------------------
- 10000 - Cloudfront (USA) - HTTP - 648.000 USD - 19440.00 USD -
-------------------------------------------------------------------------------------------------------------
Posible solución: ¿utilizar una CDN?
La solución propuesta para este problema especificada en algunos tutoriales es utilizar el servicio gratuito de Cloudflare CDN que puede manejar todas estas solicitudes entregándoles un resultado almacenado en caché desde AWS S3 o AWS cloudfront.
El único problema que aún persiste con esta solución es que aún se pueden generar tantas solicitudes no válidas como se quiera.
Ejemplos:
www.flare-example.com/iza7648hklto
www.flare-example.com/dsatnygp4851021
...
En ese caso, el atacante aún puede llegar al origen con tantas solicitudes no válidas como desee, ya que Cloudflare tendrá un error de caché cada vez.
Ahora por fin a mi pregunta:
¿Solo puede escapar de estos costos durante un ataque DDoS eliminando su distribución en la nube o su depósito S3 lo más rápido posible?
¿O cometí un error en la estructura de precios de AWS?
Respuesta1
Análisis muy interesante. Supongo que la única manera es tener un control estricto del tráfico y también de los costos. Además, puede echar un vistazo a AWS Shield avanzado. Aunque hay un costo adicional por mes, absorberán los cargos de escalamiento debido a DDOS.
Con AWS Shield Advanced, obtiene "protección de costos DDoS", una característica que protege su factura de AWS de los picos de uso de EC2, Elastic Load Balancing (ELB), Amazon CloudFront y Amazon Route 53 como resultado de un ataque DDoS.