AWS WAF, AWS Firewall Manager 및 AWS Shield Advanced
개발자 가이드 (API 버전 2015-08-24)

3단계: Amazon CloudFront를 사용하여 성능을 향상하고 공격의 영향을 완화

확장성이 뛰어난 다양한 인터넷 연결은 웹 사이트의 응답 시간을 대폭 줄이고, DDoS 공격의 영향을 효과적으로 완화하며, 오류를 격리할 수 있습니다. Amazon CloudFront 엣지 서버는 Route 53과 함께 이러한 이점을 달성하는 데 필요한 네트워크 인프라 계층을 추가로 제공합니다. 일반적으로 EC2 오리진 서버보다 사용자에게 더 가까운 위치에서 콘텐츠가 처리되고 DNS 쿼리가 확인됩니다. 따라서 오리진 EC2 서버에 걸리는 부하가 줄어듭니다.

중요

이 자습서에서 실행하는 AWS 서비스에 대한 비용은 여러분이 지불해야 합니다. CloudFront 비용에 대한 전체 내용은 CloudFront 요금 페이지 단원을 참조하십시오.

Amazon CloudFront를 사용하여 콘텐츠 전송

Amazon CloudFront는 정적, 동적, 스트리밍, 대화형 콘텐츠를 비롯한 전체 웹 사이트를 전송하는 데 사용할 수 있는 콘텐츠 전송 네트워크(CDN) 서비스입니다. 지속적인 TCP 연결과 변수 TTL(Time-To-Live)을 사용하여 엣지 로케이션에서 캐시할 수 없는 경우에도 콘텐츠 전송 속도를 높일 수 있습니다. 따라서 정적 콘텐츠를 처리 중이지 않은 경우에도 CloudFront를 사용하여 웹 애플리케이션을 보호할 수 있습니다.

CloudFront는 SYN floodUDP 반사 공격 등 일반적인 여러 DDoS 공격이 오리진에 도달하지 않도록 잘 구성된 연결만 허용합니다. CloudFront는 잠재적 DDoS 공격을 나타낼 수 있는 비정상적으로 느린 연결을 자동으로 닫습니다.

또한 DDoS 공격이 소스와 지리적으로 가까운 곳에서 격리되므로 해당 트래픽이 다른 위치에 영향을 주는 것을 방지합니다. 또한 CloudFront 지리적 제한 기능을 사용하여 특정 지리적 위치의 사용자가 콘텐츠에 액세스하지 못하도록 할 수도 있습니다. 이는 사용자에게 서비스를 제공하지 않는 지리적 위치에서 비롯된 공격을 차단하고자 하는 경우에 유용할 수 있습니다.

이러한 모든 기능을 통해 대규모 DDoS 공격 중에 사용자에게 계속해서 더욱 원활하게 트래픽을 제공할 수 있습니다.

Amazon CloudFront를 구현하려면

  1. https://console.aws.amazon.com/cloudfront/에서 CloudFront 콘솔을 엽니다.

  2. [Create Distribution]을 선택합니다.

  3. [Select a delivery method for your content]의 [Web] 섹션에서 [Get Started]를 선택합니다.

  4. [Create Distribution] 페이지의 [Origin name]에 이 자습서에서 앞서 만든 로드 밸런서의 이름을 입력합니다. 이름을 찾으려면 Amazon EC2 대시보드로 이동하여 탐색 창에서 로드 밸런서를 선택합니다. 앞서 만든 로드 밸런서를 선택합니다.

  5. [Origin Settings] 필드의 나머지에 모든 기본값을 적용합니다.

  6. Default Cache Behavior Settings(기본 캐시 동작 설정) 아래에서 기본값을 적용하면 CloudFront가 다음을 수행합니다.

    • 배포를 위해 CloudFront URL(예: http://d111111abcdef8.cloudfront.net/image.jpg)을 사용하는 모든 요청을 앞서 지정한 로드 밸런서에 전달합니다

    • 사용자가 HTTP 또는 HTTPS를 사용해 객체에 액세스할 수 있도록 허용합니다

    • 객체에 대한 요청에 응답합니다

    • 24시간 동안 CloudFront 엣지 로케이션에 객체를 캐시합니다.

    • 기본 요청 헤더만 오리진으로 전달하고 헤더의 값에 따라 객체를 캐시하지는 마십시오

    • 모두가 콘텐츠를 볼 수 있도록 허용합니다

    • 콘텐츠가 자동으로 압축되지 않습니다

    자세한 내용은 캐시 동작 설정을 참조하십시오.

  7. [Distribution Settings] 아래에서 다음을 제외하고 기본값을 적용합니다.

    요금 계층

    CloudFront 서비스를 위해 지급하려는 최고 가격에 해당하는 가격 등급을 선택합니다. 기본적으로 CloudFront는 모든 CloudFront 지역의 에지에서 객체를 제공합니다.

    가격 등급과 가격 등급 선택이 배포를 위한 CloudFront 성능에 미치는 영향에 대한 자세한 내용은 CloudFront 배포의 가격 등급 선택 단원을 참조하십시오. 가격 등급이 리전에 매핑되는 방식을 포함해 요금에 대한 자세한 내용은 Amazon CloudFront 요금 단원을 참조하십시오.

    AWS WAF웹 ACL

    [None]을 선택합니다. 이 자습서에서 나중에 AWS WAF를 구성합니다.

    대체 도메인 이름(CNAME)(선택 사항)

    웹 사이트의 URL에 사용할 도메인 이름을 지정합니다. 예를 들어 example.com을 입력할 수 있습니다.

    기본 루트 객체(선택 사항)

    최종 사용자가 배포의 객체()가 아닌 배포의 루트 URL()을 요청할 때 에서 오리진(예: )으로부터 요청할 객체입니다. 기본 루트 객체를 지정하면 배포 콘텐츠가 노출되지 않습니다.

    설명(선택 사항)

    배포와 함께 저장할 설명을 입력합니다.

  8. [Create Distribution]을 선택합니다.

  9. CloudFront에서 배포를 생성하면 배포에 대한 Status 열의 값이 InProgress에서 Deployed로 변경됩니다. 배포를 활성화하도록 선택한 후에는 요청을 처리할 수 있습니다. 이때 걸리는 시간은 15분 미만입니다.

    CloudFront가 배포에 할당하는 도메인 이름이 배포 목록에 나타납니다. 선택한 배포에 대한 [General] 탭에도 나타납니다. 이 자습서에서 나중에 필요하므로 이 이름과 배포 ID를 모두 적어 둡니다.

  10. CloudFront 콘솔에서 방금 생성한 배포 ID를 적어 둡니다. 나중에 이 자습서에서 이 ID가 필요합니다.

CloudFront 배포를 테스트하려면

  1. CloudFront 콘솔에서 방금 생성한 배포 ID를 선택합니다. 그러면 이 배포의 세부 정보 페이지가 열립니다. 도메인 이름을 적어 둡니다.

  2. 브라우저에서 도메인 이름을 엽니다. 웹 사이트가 보일 것입니다. 배포가 활성화되려면 15분 정도 걸릴 수 있습니다. 오리진이 연결을 닫았음을 나타내는 오류가 발생할 경우 시간을 조금 더 두고 다시 시도하십시오. 브라우저에서 페이지를 새로 고쳐야 할 수도 있습니다.

다음: 4단계: Route 53을 사용하여 도메인 이름을 등록하고 DNS 서비스 구현.