互联网上有许多教程,推广通过 AWS S3 + AWS Cloudfront(+ Cloudflare)廉价托管静态网站。
例如:
我正在查看 AWS 服务的定价结构,对于 S3 或 Cloudfront,我认为不可能限制与无效请求相关的成本,因为亚马逊也会对无效或被阻止的请求产生的流量和请求进行计费。
即使使用可以阻止特定 IP 地址范围的 Amazon WAF 也无济于事,因为请求者仍然会收到“拒绝访问”消息或类似内容。
无效请求将导致:
- 请求不存在的对象
- 用例“提供私人内容”
- 缺少签名 URL/签名 cookie 的参数
- 错误的 IAM/隐身凭证
定价(北弗吉尼亚的 S3 / Cloudfront 美国;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 -
---------------------------------------------------------------------------------------
无效请求的 DDoS 攻击成本
-------------------------------------------------------------------------------------------------------------
- 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 -
-------------------------------------------------------------------------------------------------------------
可能的解决方案:使用 CDN?
一些教程针对此问题提出的解决方案是使用 Cloudflare CDN 的免费服务,该服务可以通过为这些请求提供来自 AWS S3 或 AWS cloudfront 的缓存结果来处理所有这些请求。
该解决方案仍然存在的唯一问题是,人们仍然可以根据需要生成任意数量的无效请求。
例如:
www.flare-example.com/iza7648hklto
www.flare-example.com/dsatnygp4851021
...
在这种情况下,攻击者仍然可以通过任意数量的无效请求到达原点,因为 Cloudflare 每次都会出现缓存未命中的情况。
现在终于可以回答我的问题了:
在 DDoS 攻击期间,您是否只能通过尽快删除云端分发或 S3 存储桶来避免这些成本?
或者我对 AWS 的定价结构犯了错误?
答案1
非常有趣的分析。猜测唯一的方法是严格监控流量和成本。此外,可以看看 AWS Shield 高级版。即使每月有额外的费用,他们也会吸收由于 DDOS 而产生的扩展费用。
使用 AWS Shield Advanced,您可以获得“DDoS 成本保护”,该功能可保护您的 AWS 账单免受由于 DDoS 攻击而导致的 EC2、Elastic Load Balancing (ELB)、Amazon CloudFront 和 Amazon Route 53 使用量激增的影响。