É possível evitar custos de solicitações inválidas no AWS S3 ou cloudfront durante um ataque DDoS?

5

Existem muitos tutoriais na Internet que promovem hospedagem barata de websites estáticos via AWS S3 + AWS Cloudfront (+ Cloudflare).

Exemplo disso seria:


Eu estava olhando para a estrutura de preços dos serviços da AWS e no caso do S3 ou Cloudfront, acho que é impossível limitar os custos associados a solicitações inválidas, pois a Amazon também está cobrando 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 "Acesso negado" ou algo similar.


Os pedidos inválidos implicam:

  1. solicitações de objetos que não estão presentes
  2. caso de uso "conteúdo privado"
    • parâmetros ausentes para URLs assinados / cookies assinados
    • credenciais de IAM / incógnito incorretas

Precificação (S3 em North-Virginia / Cloudfront USA; 2018-03-25)

---------------------------------------------------------------------------------------
- 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 esse problema especificada por alguns tutoriais é usar o serviço gratuito do CloudNFN CDN que pode manipular todas essas solicitações, fornecendo-lhes um resultado em cache do AWS S3 ou da nuvem AWS.

O único problema, que ainda persiste com essa solução, é que ainda é possível gerar tantos pedidos inválidos quanto ele quiser.

Exemplos:
www.flare-example.com/iza7648hklto
www.flare-example.com/dsatnygp4851021
...

Nesse caso, o atacante ainda pode alcançar a origem com tantas solicitações inválidas quantas as que ele gosta, pois o Cloudflare perderá o cache todas as vezes.

Agora, finalmente, a minha pergunta:

Você só pode escapar desses custos durante um ataque DDoS ao excluir sua distribuição de nuvem ou o bucket do S3 o mais rápido possível?

Ou cometi um erro na estrutura de preços da AWS?

    
por user1861174 25.03.2018 / 18:21

1 resposta

2

Análise muito interessante. Acho que única maneira é ter um monitoramento rigoroso sobre o tráfego e também o custo. Além disso, pode dar uma olhada no AWS Shield advanced. Mesmo que haja um custo adicional por mês, eles irão obsedar cobranças de escalonamento devido ao DDOS.

With AWS Shield Advanced, you get "DDoS cost protection", a feature that protects your AWS bill from EC2, Elastic Load Balancing (ELB), Amazon CloudFront and Amazon Route 53 usage spikes as a result of a DDoS attack.

link

    
por 19.05.2018 / 13:57