
인터넷에는 AWS S3 + AWS Cloudfront(+ Cloudflare)를 통해 정적 웹 사이트의 저렴한 호스팅을 홍보하는 많은 자습서가 있습니다.
이에 대한 예는 다음과 같습니다.
AWS 서비스의 가격 구조를 살펴보던 중 S3나 Cloudfront의 경우 Amazon도 유효하지 않거나 차단된 요청에 의해 생성된 트래픽과 요청에 대해 비용을 청구하고 있기 때문에 유효하지 않은 요청과 관련된 비용을 제한하는 것은 불가능하다고 생각합니다.
특정 IP 주소 범위를 차단할 수 있는 Amazon WAF를 사용하더라도 요청자는 여전히 '액세스 거부' 메시지 또는 이와 유사한 메시지를 수신해야 하므로 도움이 되지 않습니다.
잘못된 요청에는 다음이 수반됩니다.
- 존재하지 않는 객체에 대한 요청
- 사용 사례"비공개 콘텐츠 제공"
- 서명된 URL/서명된 쿠키에 대한 매개변수 누락
- 잘못된 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을 사용하시겠습니까?
일부 자습서에서 지정한 이 문제에 대해 제안된 솔루션은 AWS S3 또는 AWS cloudfront에서 캐시된 결과를 제공하여 이러한 모든 요청을 처리할 수 있는 Cloudflare CDN의 무료 서비스를 사용하는 것입니다.
이 솔루션에서 여전히 지속되는 유일한 문제는 원하는 만큼 유효하지 않은 요청을 계속 생성할 수 있다는 것입니다.
예:
www.flare-example.com/iza7648hklto
www.flare-example.com/dsatnygp4851021
...
이 경우 공격자는 Cloudflare에서 매번 캐시 누락이 발생하기 때문에 원하는 만큼 유효하지 않은 요청을 많이 사용하여 원본에 계속 도달할 수 있습니다.
이제 마지막으로 내 질문에 :
클라우드프런트 배포 또는 S3 버킷을 최대한 빨리 삭제해야만 DDoS 공격 중에 이러한 비용을 피할 수 있습니까?
아니면 AWS의 가격 구조에 실수를 한 걸까요?
답변1
매우 흥미로운 분석. 유일한 방법은 트래픽과 비용을 엄격하게 모니터링하는 것입니다. 또한 AWS Shield 고급을 살펴볼 수도 있습니다. 월별 추가 비용이 발생하더라도 DDOS로 인한 Scaling 비용을 부담하게 됩니다.
AWS Shield Advanced를 사용하면 DDoS 공격으로 인해 EC2, Elastic Load Balancing(ELB), Amazon CloudFront 및 Amazon Route 53 사용량 급증으로부터 AWS 청구서를 보호하는 기능인 "DDoS 비용 보호"를 얻을 수 있습니다.