
Existem muitos tutoriais na internet que promovem hospedagem barata de sites estáticos via AWS S3 + AWS Cloudfront (+ Cloudflare).
Exemplo destes seria:
Eu estava olhando a estrutura de preços dos serviços AWS e no caso de S3 ou Cloudfront, acho impossível limitar os custos associados a solicitações inválidas, pois a Amazon também cobra tráfego e solicitações geradas por solicitações inválidas ou bloqueadas.
Mesmo o uso do Amazon WAF, que pode bloquear intervalos de endereços IP específicos, não deve ajudá-lo, pois o solicitante ainda deve receber uma mensagem de “Acesso negado” ou algo semelhante.
Solicitações inválidas implicariam:
- solicitações de objetos que não estão presentes
- caso de uso"servindo conteúdo privado"
- parâmetros ausentes para URLs assinados/cookies assinados
- Credenciais IAM/anônimas incorretas
Preços (S3 no Norte da Virgínia / Cloudfront EUA; 25/03/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 -
---------------------------------------------------------------------------------------
Custos de um ataque DDoS com solicitações invá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 -
-------------------------------------------------------------------------------------------------------------
Solução possível: usar um CDN?
A solução proposta para este problema especificada por alguns tutoriais é usar o serviço gratuito Cloudflare CDN que pode lidar com todas essas solicitações, servindo-lhes um resultado armazenado em cache do AWS S3 ou AWS cloudfront.
O único problema que ainda persiste com esta solução é que ainda se pode gerar quantas solicitações inválidas desejar.
Exemplos:
www.flare-example.com/iza7648hklto
www.flare-example.com/dsatnygp4851021
...
Nesse caso, o invasor ainda pode chegar à origem com quantas solicitações inválidas quiser, pois o Cloudflare terá uma perda de cache todas as vezes.
Agora, finalmente, a minha pergunta:
Você só pode escapar desses custos durante um ataque DDoS excluindo sua distribuição cloudfront ou bucket S3 o mais rápido possível?
Ou cometi um erro na estrutura de preços da AWS?
Responder1
Análise muito interessante. Acho que a única maneira é ter um monitoramento rigoroso do tráfego e também dos custos. Você também pode conferir o AWS Shield Advanced. Mesmo que haja um custo adicional por mês, eles absorverão as cobranças de escalonamento devido ao DDOS.
Com o AWS Shield Advanced, você obtém "proteção contra custos DDoS", um recurso que protege sua fatura da AWS contra picos de uso de EC2, Elastic Load Balancing (ELB), Amazon CloudFront e Amazon Route 53 como resultado de um ataque DDoS.