AWS 기술 블로그

AWS Shield와 AWS WAF로 효과적인 DDoS 대응 방안 구축하기

AWS는 보안을 최우선 과제(job zero)로 간주합니다. 고객의 워크로드를 안전하게 보호하기 위해 다양한 보안 서비스와 활용 방안을 제공하고 있습니다. 최근 분산 서비스 거부(Distributed Denial-of-Service, DDoS) 공격이 증가함에 따라 워크로드 보호 방안에 대한 문의가 늘고 있습니다. 이에 두 편의 게시물을 통해 아키텍처 설계와 방어 규칙 설정을 통한 효과적인 DDoS 대응 방안을 설명하고자 합니다.

분산 서비스 거부(Distributed Denial-of-Service, DDoS)는 IT 시스템을 무력화하는 매우 강력한 공격 중 하나입니다. 이것은 기존 온프레미스에 구축된 시스템뿐만 아니라 클라우드에서도 동일합니다. 많은 기업들이 DDoS 공격에 대응하기 위해 고민하고 있으며 여러 가지 방법들을 사용해서 공격을 탐지하거나 완화하고 있습니다. 이 기술 블로그에서는 AWS가 DDoS 공격을 어떻게 효과적으로 탐지하고 완화하는지 알아보고자 합니다.

DDoS 공격 형태

AWS는 글로벌 환경에서 대규모 DDoS 공격을 받고 있으며 이를 매우 효과적으로 완화시키고 있습니다. 이러한 DDoS 공격의 탐지와 완화는 AWS Shield를 통해 이루어지며, AWS Shield는 AWS Shield Standard 와 AWS Shield Advanced 의 두 가지 카테고리로 제공됩니다. AWS Shield Standard는 OSI 계층 3–4(네트워크,전송 계층)의 공격을 방어하는 서비스입니다. 이 서비스는 별도의 설정이나 구성, 추가 비용 없이 기본적으로 제공됩니다. AWS가 네트워크 DDoS 공격에 대한 보호를 기본 서비스로 제공하는 이유는 개별 사용자 보호뿐만 아니라 AWS 인프라 자체를 보호하기 위함입니다. 하지만 DDoS 공격은 네트워크 계층뿐만 아니라 HTTP 프로토콜을 이용한 OSI 계층 6 -7(애플리케이션 계층)에서도 발생합니다. 이러한 고도화된 공격에 대응하기 위해서는 AWS WAFAWS Shield Advanced를 함께 사용해야 합니다. AWS WAF는 대량 데이터를 탐지 및 조치하도록 다수의 서버로 구성되어 있으며 DDoS 방어에 특화된 기능을 가지고 있습니다. 또한 AWS Shield Advanced는 AWS WAF에 더해서 자동 완화, SRT 지원, 가시성 등의 추가적인 보호 기능들을 제공합니다. 단, AWS Shield Advanced를 사용하기 위해서는 1년 단위로 구독하여야 하며 이로 인한 월 구독 비용이 발생합니다.

글로벌 DDoS 공격 추이 그래프 – AWS Shield 대시보드

확장이 불가능한 워크로드에 대한 DDoS 공격 방어 전략

확장이 불가능한 워크로드의 서비스 구성 사례

게임사나 증권사와 같이 지연시간이 매우 중요한 워크로드의 경우 TCP/UDP 통신을 기반으로 응답시간을 줄이기 위해서 스테이트풀(Stateful) 서비스를 구성하므로 수평적 확장이 제한되는 경우가 많습니다. 이 경우 클라이언트는 ELB(Elastic Load Balancer)를 통해 로드 밸런싱을 하는 형태가 아닌 직접 Elastic IP로 인스턴스를 확정하여 통신하는 경우가 많습니다. 이러한 구성에서는 특정 인스턴스가 DDoS 공격의 직접적인 대상이 될 수 있으며, 이는 서비스 가용성에 치명적인 영향을 미칠 수 있습니다. 이러한 위험에 대응하기 위해서는 AWS Shield Advanced를 구독을 통한 추가 보호가 권장됩니다. AWS Shield Advanced 구독 시 SRT(Shield Response Team)의 전문적인 지원을 받을 수 있고, 이를 통해 사용자 지정 완화 정책 설정을 적용할 수 있으며 AWS Shield Standard보다 더욱 민감한 DDoS 공격 탐지와 방어를 할 수 있습니다.

TCP/UDP 프로토콜을 사용한 네트워크 DDoS 공격을 완화하는 아키텍처

AWS 네트워크 DDoS 방어 아키텍처

AWS는 다음과 같은 서비스 및 완화 기능들을 통해 네트워크 계층의 DDoS 공격을 효과적으로 방어합니다.

네트워크 DDoS 공격을 완화하는 방법은 크게 2가지입니다.

아키텍처를 개선하는 방법

AWS 사용자들은 모든 리전에서 AWS Shield Standard를 통한 OSI 계층 3-4에 대한 기본 DDoS 보호 기능을 제공받을 수 있습니다. AWS Shield는 AWS의 네트워크 경계(인터넷과 AWS 리전간 네트워크 연결 영역)와 엣지 로케이션(CDN 및 DNS 서버가 있는 영역)에서 동작하며 두 영역의 탐지 로직이 다릅니다. 네트워크 경계 영역에서는 모든 트래픽을 인라인 검사를 하지 않으며 트래픽이 비정상으로 판단될 때 해당 트래픽을 Shield DDoS 완화 시스템으로 우회시켜서 차단합니다. 하지만 엣지 로케이션의 CloudFront를 사용하게 되면 모든 패킷을 지속적으로 검사하고 Syn Proxy 및 패킷 유효성 검사 기능을 제공하여 수 초 내에 DDoS 공격을 감지하고 차단할 수 있습니다. 또한 AWS 백본 네트워크를 경유하기 때문에 보다 안전하고 높은 네트워크 대역폭을 통한 높은 탄력성을 가질 수 있습니다.

AWS Shield Advanced를 사용하는 방법

로드밸런서를 사용할 수 없거나 수평 확장이 제한적인 워크로드의 경우는 AWS Shield Advanced를 통해 리전 내 리소스인 Elastic IP나 엣지 리소스인 Global Accelerator를 추가 보호할 수 있습니다. 해당 리소스를 Shield Advanced의 보호 자원으로 등록하면 트래픽 임계값을 낮춰 더욱 민감하게 탐지가 가능하여 간헐적인 공격을 보호하고, 어플리케이션의 상태 기반 탐지와 같은 이점을 얻을 수 있습니다. 위에서 말한 것과 같이 AWS의 네트워크 경계에서의 트래픽 감지는 인라인 검사를 수행하지 않기에 공격을 탐지하여 완화하는데 수분의 시간이 필요하며, 확장이 불가능한 워크로드는 심각한 서비스 장애가 발생할 수 있습니다. 이를 완화하기 위해서는 네트워크 성능 사양이 큰 인스턴스를 사용하거나 SRT를 통한 사용자 지정 완화 정책을 이용하는 방법이 있습니다. SRT는 AWS Shield를 대응하는 전담팀으로 Shield Advanced를 구독하면 지원받을 수 있으며 L3-4 트래픽에 대해서 사용자 지정 완화 규칙을 별도로 배포할 수 있습니다. 사용자 지정 완화 규칙을 통해 지리적 셰이핑, 바이트 패턴 매칭과 같은 정책을 통해서 비정상 트래픽을 식별하여 공격을 완화시킬 수 있습니다.

바이트 패턴 매칭 규칙 사례 – 임의의 데이터 스트림에서 특정한 바이트 패턴을 찾아내는 작업을 말합니다. 이를 통해서 악성코드 탐지 및 데이터 검증을 할수 있습니다.

확장 가능한 워크로드에 대한 DDoS 공격 방어 전략

Amazon EC2 Auto Scaling이나 Amazon Elastic Kubernetes Service(Amazon EKS), Amazon Elastic Container Service(Amazon ECS) 기반으로 구성된 워크로드의 경우, 자동 확장 기능을 통해 DDoS 공격에 대해 기본적인 대응이 가능합니다. 하지만 일반적으로 인터넷을 통해 트래픽이 들어올 때 서드 파티 방화벽이나 IDS, IPS 장비를 거치게 되는데 이러한 어플라이언스들의 경우 라이선스 구조로 인해 수평적 확장이 제한되어, 대규모 DDoS 공격 시 병목 현상이 발생할 수 있습니다. 이런 경우엔 Amazon CloudFront와 AWS WAF를 연동하여 엣지 계층에서 방어하는 것을 최우선으로 고려할 수 있습니다. CloudFront 사용이 불가능하다면 리전 내에서 Application Load Balancer와 AWS WAF를 방화벽 앞에 두는 구조로 공격의 영향을 최소화할 수 있습니다.

Application DDoS 공격(HTTP)을 완화하는 아키텍처

아래는 애플리케이션 DDoS와 관련된 AWS 서비스 및 완화 기능들입니다.

HTTP 기반 워크로드에서의 DDoS 완화 방법은 2가지입니다.

아키텍처를 개선하는 방법

엣지 로케이션을 기반으로 한 아키텍처 도입을 적극 권장합니다. AWS Shield는 Route 53의 쿼리 속도를 모니터링하여 쿼리 비율이 임계값을 초과하면 해당 영역을 분리하는 방식으로 DNS Cachebursting 공격을 효과적으로 막을 수 있습니다. 또한 CloudFront는 AWS 리전의 네트워크 경계 대비 가용 대역폭이 훨씬 크며 SYN Flood와 같은 TCP 프로토콜을 이용한 공격은 Syn Proxy 기능을 사용해서 수초내로 탐지 및 차단이 가능합니다.

Syn Proxy – 대량의 Syn 패킷 공격을 막기 위한 방법으로 클라이언트에게 SYN-ACK 패킷을 보내고 클라이언트의 ACK 패킷을 기다려서 ACK 가 정상적으로 오면 실제 서버와 연결을 하는 방법입니다.

AWS WAF 와 AWS Shield Advanced 를 이용하는 방법

HTTP 프로토콜 기반의 OSI 계층 6-7의 공격은 AWS Shield의 기본 기능으로는 완화가 되지 않으며 AWS WAF를 이용해야 방어가 가능합니다. AWS WAF는 규칙 기반으로 웹 애플리케이션에 대한 공격 벡터를 탐지하고 차단하는 서비스로 일반 공격 벡터 대응을 위한 일반 규칙과 DDoS 공격 대응을 위한 속도 기반 규칙이 있습니다. 속도 기반 규칙은 공격자의 여러 소스 데이터를 집계하여 해당 임계치를 초과하였을 때 차단합니다. 주로 HTTP Flood 공격을 막기 위해 사용됩니다. 이외에도 AWS 관리형 규칙으로 IP 평판(IP Reputation) 규칙, 익명 IP 목록(AnonymousIPList) 규칙 등을 활용하여 L7 DDoS 공격을 방어할 수 있습니다. 또한 Shield Advanced 의 애플리케이션 계층 DDoS 자동 완화 기능을 통해서 평균적인 운영 트래픽을 분석하여 베이스라인을 구성한 후 트래픽 패턴이 이상할 경우 공격으로 감지하여 자동으로 AWS WAF 규칙을 생성하여 공격을 차단하는 방법도 사용할 수 있습니다. 하지만 이때는 오탐이 발생할 가능성이 있으므로 Route 53의 상태 확인 기능과 연동하여 탐지를 더욱 민감하게 할 수 있습니다. 마지막으로 SRT의 도움을 받을 수도 있습니다. 만약 대량의 애플리케이션 계층 DDoS 공격이 발생되고 이것을 사용자가 적절히 차단하지 못한다면 SRT가 선제적인 대응을 할수 있습니다. SRT는 사용자에게 공격에 대한 공지 및 WAF 규칙을 생성해주는 작업을 진행하게 되고 해당 이벤트가 지나면 규칙은 자동으로 삭제가 됩니다. 물론 SRT의 선제적인 지원을 받으려면 몇 가지 사전 조건– AWS Shield Advanced 가입, Business Support 플랜 가입, 리소스가 보호 자원에 등록되어 있어야 함-이 필요합니다.

아래는 AWS Shield Advanced를 통해 L7 DDoS 공격에 대응하는 설정 절차 입니다.

  1. 보호 리소스 등록
    AWS Shield Advanced는 보호 자원로 등록된 리소스만 보호하게 되어있습니다. 그러므로 꼭 보호 리소스를 등록합니다.
  2. Web ACL 등록

    Web ACL 을 생성합니다. Web ACL은 AWS Shield Advanced에서도 생성이 가능하며 AWS WAF 메뉴에서 수정이 가능합니다.
  3. 속도 제한 규칙 생성
    속도 기반 규칙의 이름과 임계치(Rate limit)를 설정합니다. 임계치는 10 ~ 20억까지 설정이 가능합니다.
  4. RBR (Rate-based Rule) 수정
    AWS WAF 메뉴에서 Web ACL을 수정할 수 있으며 각 항목의 내용은 아래와 같습니다.

    • 타입(Type)
      • Regular Rule : 일반적인 공격 벡터를 차단하는 규칙
      • Rate-based Rule : 임계치 기반으로 DDoS 공격을 차단하는 규칙
    • 평가 시간(Evaluation Window)
      • 1, 2, 5, 10분 중 선택
    • 요청 집계(Request Aggregation)
    • 검사 및 속도 제한 범위(Scope of inspection and rate limiting)
      • 모든 요청, 규칙 조건과 일치하는 요청 중 선택
    • 동작(Action)
      • Block, Count, CAPTCHA, Challenge 중 선택
  5. IP 평판, 익명 IP 목록 규칙 추가
    관리형 규칙을 추가하여 IP 평판 규칙과 익명 IP 목록 규칙을 추가합니다.
  6. 범위 변경 및 동작 수정
    관리형 규칙에 대한 탐지 범위와 동작을 설정합니다.

AWS Shield Advanced와 AWS WAF의 모니터링

AWS Shield Advanced와 AWS WAF는 각 서비스에서 제공하고 있는 대시보드를 통해서 모니터링이 가능합니다.

AWS Shield – Event

AWS Shield – Event summary

AWS WAF – CloudWatch Log Insights

또한 CloudWatch를 통해서도 모니터링이 가능합니다. 아래는 각 서비스에 대한 지표를 나타냅니다.

AWS Shield Advanced 지표

탐지 지표

  • DDoSDetected : DDoS 이벤트가 특정 Amazon 리소스 이름(ARN)에 진행중인지 여부를 나타냅니다.
  • DDoSAttackBitsPerSecond : 특정 Amazon 리소스 이름(ARN)에 대한 DDoS 이벤트에서 관찰되는 비트수입니다. 이 지표는 네트워크 및 전송 계층 DDoS 이벤트에 대해서만 사용할 수 있습니다.
  • DDoSAttackPacketsPerSecond : 특정 Amazon 리소스 이름(ARN)에 대한 DDoS 이벤트에서 관찰되는 패킷 수입니다. 이 지표는 네트워크 및 전송 계층 DDoS 이벤트에 대해서만 사용할 수 있습니다.
  • DDoSAttackRequestsPerSecond : 특정 Amazon 리소스 이름(ARN)에 대한 DDoS 이벤트에서 관찰되는 요청 수입니다. 이 지표는 어플리케이션 계층 DDoS 이벤트에 대해서만 사용할 수 있습니다.

지표에 포함 되는 공격 유형(AttackVector)

  • ACKFlood
  • ChargenReflection
  • DNSReflection
  • GenericUDPReflection
  • MemcachedReflection
  • MSSQLReflection
  • NetBIOSReflection
  • NTPReflection
  • PortMapper
  • RequestFlood
  • RIPReflection
  • SNMPReflection
  • SSDPReflection
  • SYNFlood
  • UDPFragment
  • UDPTraffic
  • UDPReflection

완화 지표

  • VolumePacketsPerSecond : 탐지된 이벤트에 대한 응답으로 배포된 완화 기능을 통해 삭제되거나 전달된 초당 패킷 수입니다.
  • MitigationAction : 적용된 완화 조치의 결과입니다. 가능한 값은 Pass 또는 Drop입니다.

상위 기여자 지표

  • VolumePacketsPerSecond : 상위 기여자의 초당 패킷 수입니다.
  • VolumeBitsPerSecond : 상위 기여자의 초당 비트 수입니다.

AWS Shield Advanced가 보고하는 자세한 지표에 대한 내용은 AWS Shield Advanced 지표 개발자 문서를 참고하시길 바랍니다.

AWS WAF 지표

핵심 지표

  • AllowedRequests : 허용된 웹 요청의 수.
  • BlockedRequests : 차단된 웹 요청의 수.
  • CountedRequests : 계수된 웹 요청의 수.
  • CaptchaRequests : CAPTCHA 제어가 적용된 웹 요청 수입니다.
  • RequestsWithValidCaptchaToken : CAPTCHA 제어가 적용되고 유효한 CAPTCHA 토큰이 있는 웹 요청 수.
  • CaptchasAttempted : CAPTCHA 퍼즐 챌린지에 대한 응답으로 최종 사용자가 제출한 솔루션 수입니다.
  • CaptchasSolved : 제출된 CAPTCHA 퍼즐 솔루션 중 퍼즐을 성공적으로 해결한 횟수입니다.
  • ChallengeRequests : 챌린지 컨트롤이 적용된 웹 요청 수.
  • RequestsWithValidChallengeToken : 챌린지 제어가 적용되었고 유효한 챌린지 토큰이 있는 웹 요청의 수입니다.
  • PassedRequests : 전달된 요청의 수입니다. 규칙 그룹 규칙과 일치하지 않고 규칙 그룹 평가를 거치는 요청에만 사용됩니다.

AWS WAF가 보고하는 자세한 지표에 대한 내용은 AWS WAF 지표 및 차원 개발자 문서를 참고하시길 바랍니다.

결론

DDoS 공격은 네트워크, 어플리케이션 공격으로 나눠서 대응해야 하며 네트워크 공격은 기본 보호 기능이 제공되지만 추가적인 보호를 위해서는 아키텍처 개선 및 Shield Advanced를 구독하여야 합니다. 어플리케이션 공격은 WAF 를 이용하여 보호하여야 하며 Shield Advanced를 구독하게 되면 더 많은 추가 보호 기능을 가져갈수 있습니다. 이후 WAF 를 기반한 어플리케이션 DDoS 보호를 위한 더 상세한 내용은 다음 블로그에서 확인할수 있습니다.

Jaebo Kim

Jaebo Kim

김재보 솔루션즈 아키텍트는 금융 고객을 대상으로 클라우드 마이그레이션을 제안하고 고객과 함께 최적의 아키텍처를 만드는 작업을 지원하는 역할을 하고 있습니다.