AWS WAF를 사용하여 DDoS 공격을 완화하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 7월 27일

AWS WAF를 사용하여 DDoS(분산 서비스 거부) 공격을 차단하려면 어떻게 해야 합니까?

간략한 설명

DDoS 공격은 공격자가 표적 시스템의 가용성을 방해하려는 시도입니다.

인프라 계층 공격의 경우, Amazon CloudFront 및 Elastic Load Balancing(ELB)과 같은 AWS 서비스를 사용하여 자동 DDoS 보호를 제공할 수 있습니다. 자세한 내용은 DDoS 복원력에 대한 AWS 모범 사례를 참조하세요.

애플리케이션 계층 공격의 경우, AWS WAF를 기본 완화 수단으로 사용하면 됩니다. AWS WAF 웹 액세스 제어 목록(웹 ACL)을 사용하여 애플리케이션 계층에서 DDoS 공격의 효과를 최소화하려면 다음과 같이 하면 됩니다.

  • 속도 기반 규칙을 사용합니다.
  • 기존의 속도 기반 규칙을 검토하고, 속도 제한 임계값을 낮춰 불량 요청을 차단하는 방안을 고려해 보세요.
  • AWS WAF 로그를 쿼리하여 무단 활동에 대한 구체적인 정보를 수집합니다.
  • 지리적 일치 규칙을 만들어 비즈니스에서 예상하지 않는 국가에서 발생하는 불량 요청을 차단합니다.
  • IP 집합 일치 규칙을 만들어 IP 주소에 따라 불량 요청을 차단합니다.
  • 정규식 일치 규칙을 만들어 불량 요청을 차단합니다.

해결 방법

속도 기반 규칙 사용

전반적인 규칙이나 URI별 속도 기반 규칙을 만들어 웹 애플리케이션을 DDoS 공격으로부터 보호할 수 있습니다. 자세한 내용은 가장 중요한 AWS WAF 속도 기반 규칙 3가지를 참조하세요.

AWS WAF 콘솔에서 전반적인 속도 기반 규칙 생성

전반적인 속도 기반 규칙을 사용하면 IP가 웹 애플리케이션에 전송할 수 있는 요청 수의 임계값을 설정할 수 있습니다.

  1. AWS WAF 콘솔을 엽니다.
  2. RBR을 정의하지 않은 웹 ACL을 선택한 다음 속도 기반 규칙을 선택합니다.
  3. 규칙의 이름을 입력합니다.
  4. 속도 제한을 입력합니다. 속도 제한은 단일 IP 주소에서 5분간 허용된 요청의 최대 수를 말합니다. 이 제한에 도달한 뒤에는 해당 IP 주소에 속도 기반 규칙 작업이 적용됩니다. 해당 IP 주소에서 보낸 요청이 한도 미만으로 떨어지면 작업이 중단됩니다.
    참고: 속도 제한 임계값은 하나의 IP 주소에서 얼마나 많은 요청이 발생해야 너무 많고 악성일 가능성이 있다고 판단할지를 나타냅니다. 이렇게 하지 않으면 양호한 요청을 차단할 가능성이 있습니다. 제한을 어느 정도로 설정해야 할지 잘 모르는 경우, 규칙 작업을 카운트로 설정하고 요청 패턴을 모니터링하는 것이 가장 좋습니다.
  5. 속도 제한에 사용할 IP 주소소스 IP 주소 또는 헤더의 IP 주소를 선택합니다.

    헤더의 IP 주소: 요청이 CDN이나 여타 프록시 네트워크에서 온 경우, 소스 IP 주소가 프록시를 식별하여 원래 IP 주소가 헤더를 통해 전송됩니다. 헤더의 IP 주소 옵션을 사용할 때는 주의해야 합니다. 프록시가 헤더를 일관성 없게 처리할 가능성이 있기 때문입니다. 또한 검사를 우회하도록 헤더가 수정될 수도 있습니다.

    소스 IP 주소: 속도 제한에 요청 수를 반영하는 기준으로 규칙 문장의 기준과 일치하는 요청 카운트를 선택합니다.
  6. 규칙 작업을 카운트로 설정하거나, 요청 수가 한도를 초과하는 경우 IP 주소에서 온 요청을 차단합니다. IP 주소 요청 속도가 변경된 후 1, 2분이 지나야 규칙 작업의 적용 및 제거가 효력을 발휘할 수 있습니다.
  7. 규칙 추가를 선택합니다.
  8. 다음을 선택합니다.

속도 기반 규칙 문을 만드는 법에 대한 자세한 내용은 속도 기반 규칙 문을 참조하세요.

AWS WAF 콘솔에서 URI별 속도 기반 규칙 생성

  1. AWS WAF 콘솔을 엽니다.
  2. 속도 기반 규칙을 정의하지 않은 웹 ACL을 선택한 다음 속도 기반 규칙을 선택합니다.
  3. 규칙의 이름을 입력합니다.
  4. 속도 제한을 입력합니다.
  5. 속도 제한에 사용할 IP 주소소스 IP 주소 또는 더의 IP 주소를 선택합니다.
  6. 속도 제한에 요청 수를 반영하는 기준에는 규칙 문의 기준과 일치하는 요청만 고려를 선택합니다.
  7. 다음과 같은 변수를 사용하여 을 만듭니다.
    검사URI 경로를 선택합니다.
    일치 유형에는 문자열과 정확히 일치를 선택합니다.
    일치시킬 문자열/login을 입력합니다. 사용자 애플리케이션에만 해당하는 URI를 선택해도 됩니다.
    텍스트 변환의 경우, 없음으로 그대로 둡니다.
  8. 규칙 작업카운트로 설정하거나, 요청 수가 한도를 초과하는 경우 IP 주소에서 온 요청을 차단합니다.
  9. 규칙 추가를 선택합니다.
  10. 다음을 선택합니다.

기존의 속도 기반 규칙을 검토하고, 속도 제한 임계값을 낮춰 불량 요청을 차단하는 방안을 고려

콘솔에서 기존 속도 기반 규칙을 수정하는 방법:

  1. AWS WAF 콘솔을 엽니다.
  2. 웹 ACL을 선택하고 기존의 속도 기반 규칙을 선택합니다.
  3. 필요에 따라 속도 제한 임계값을 낮춥니다.
  4. 규칙 작업차단으로 설정합니다.
  5. 규칙 저장을 선택합니다.
  6. 다음을 선택합니다.

자세한 내용은 속도 기반 규칙 문을 참조하세요.

속도 기반 규칙에 따라 추적 및 카운트되는 요청의 범위를 좁힐지 고려

AWS WAF가 추적하고 카운트하는 요청의 범위를 좁히려면, 속도 기반 문 내에서 범위 축소 문을 사용합니다. 그러면 AWS WAF가 해당 범위 축소 문과 일치하는 요청을 카운트합니다.

예시

미국의 어느 공격자가 수행한 최근의 요청에 따라, 다음과 같은 범위 축소 문을 사용해 속도 기반 규칙을 만듭니다.

  1. 출처가 미국인 요청을 명시하는 지리적 일치 일치 문.
  2. 사용자 에이전트 헤더에서 Badbot 문자열을 검색하는 문자열 일치 문.

속도 제한을 1,000으로 설정했다고 가정합시다. AWS WAF가 각 IP 주소마다 중첩된 문 둘 모두의 기준에 부합하는 요청을 카운트합니다. 문 두 개에 모두 부합하지 않는 요청은 카운트하지 않습니다. 한 IP 주소의 카운트가 5분간 요청 1,000개를 초과하는 경우, 해당 IP 주소에 대하여 규칙의 작업이 트리거됩니다.

콘솔의 속도 기반 규칙에 이 예시를 사용해 범위 축소 문을 추가하려면 다음과 같이 하면 됩니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 웹 ACL을 선택하고 기존의 속도 기반 규칙을 선택합니다.
  3. 속도 제한에 요청 수를 반영하는 기준규칙 문의 기준과 일치하는 요청만을 선택합니다.
  4. 다음 문과 일치하는 요청만 카운트:
    요청이 모든 문과 일치(AND)하는 경우
    문 1
    검사: 다음 국가에서 발생을 선택합니다.
    국가 코드: 미국-US를 선택합니다.
    속도 제한에 사용할 IP 주소: 소스 IP 주소헤더의 IP 주소 중 하나를 선택합니다.

    -및-

    문 2
    검사: 단일 헤더를 선택합니다.
    헤더 필드 이름: 사용자 에이전트를 입력합니다.
    일치 유형: 문자열과 정확히 일치를 선택합니다.
    일치시킬 문자열: Badbot을 입력합니다.
  5. 규칙 저장을 선택합니다.
  6. 다음을 선택합니다.

AWS WAF 로그를 쿼리하여 무단 활동에 대한 구체적인 정보 수집

AWS WAF 로깅을 활성화하지 않은 경우, 활성화해야 합니다.

트래픽을 분석하기 위해 웹 ACL에서 로깅을 활성화하고 나서, AWS WAF 로그를 쿼리하여 DDoS 시나리오를 조사합니다. 다음을 사용하여 AWS WAF 로그를 쿼리할 수 있습니다.

Amazon Athena 로그 파서 또는 AWS Lambda 로그 파서 사용

속도 기반 규칙을 사용하면 추적되고 지속적으로 업데이트되는 5분 기간에 단일 IP 주소(종류 불문)에서 허용할 웹 요청의 최대 수를 지정할 수 있습니다. IP 주소가 구성된 한도를 위반하는 경우, 요청 속도가 구성된 임계값 미만으로 떨어질 때까지 새 요청을 차단합니다. 속도 기반 규칙에 허용된 최소 속도 제한 값은 100입니다.

허용된 최소 임계값 때문에 속도 기반 규칙을 사용할 수 없는 상황에서는, AWS WAF Automation에서 제공하는 Athena 로그 파서나 Lambda 로그 파서 구현을 사용해 볼 수 있습니다. 속도 기반 규칙을 사용하는 경우, 기본 차단 기간은 240초입니다. Athena 로그 파서와 Lambda 로그 파서는 모두 해당하는 IP 주소를 차단할 기간(분 단위)을 사용자가 선택할 수 있게 해줍니다.

Athena와 Lambda 로그 파서 구현에는 다음과 같은 파라미터가 있습니다.

  • 요청 임계값: IP 주소당 5분마다 허용 가능한 요청 최대 수입니다.
  • 차단 기간: 해당하는 IP 주소를 차단할 기간(분 단위)입니다.

이러한 두 가지 솔루션 모두 AWS CloudFormation 스택을 프로비저닝하거나 업데이트할 때 파라미터를 정의할 수 있습니다.

Lambda 로그 파서는 속도 기반 규칙이나 Athena 로그 파서를 사용할 수 없는 경우에 사용하세요. 자세한 내용은 AWS Lambda 로그 파서를 참조하세요.

Athena 로그 파서를 사용하면 비용이 인상되니 주의하시기 바랍니다. HTTP 플러드 보호에 이 옵션을 사용하는 경우 Athena 사용량에 대한 요금이 부과됩니다. 기본적으로 각각의 Athena 쿼리는 5분에 한 번씩 실행되며 지난 4시간의 데이터를 스캔합니다. 요금을 저렴하게 유지하기 위해 로그와 Athena 쿼리에는 파티셔닝을 적용합니다. 쿼리가 스캔하는 데이터 시간 수를 구성하려면 WAF 차단 기간 템플릿 파라미터의 값을 변경하면 됩니다. 단, 스캔되는 데이터 양을 늘리면 Athena 비용이 증가할 가능성이 큽니다.

자세한 내용은 Amazon Athena 비용 예측을 참조하세요.

지리적 일치 규칙을 만들어 비즈니스에서 예상하지 않는 국가에서 발생하는 불량 요청 차단

하나 이상의 지리적 일치 규칙 문을 만들면 출신 국가를 기준으로 웹 요청을 허용하거나 차단할 수 있습니다.

AWS WAF 콘솔에서 지리적 일치 규칙을 생성하는 방법:

  1. AWS WAF 콘솔을 엽니다.
  2. 웹 ACL을 선택하고, 일반 규칙을 선택한 다음 지리적 일치 규칙을 만듭니다.
  3. 요청 옵션에서 다음 국가에서 발생을 선택하고 드롭다운 목록에서 국가 코드를(하나 또는 여러 개) 선택합니다.
  4. 규칙 작업차단으로 설정합니다.
  5. 규칙 추가를 선택합니다.

IP 주소에 따라 불량 요청을 차단할 IP 집합 일치 규칙 생성

요청이 발생한 IP 주소에 따라 웹 요청을 허용하거나 차단할 IP 집합 일치 규칙 문을 만듭니다. IP 일치 조건에 요청이 발생하는 IP 주소 또는 IP 주소 범위가 최대 10,000까지 목록으로 나열됩니다. 프로세스 후반에, 웹 ACL을 만들 때 그러한 IP 주소에서 발생한 요청을 허용할지 차단할지 지정하면 됩니다.

AWS WAF 콘솔에서 IP 일치 규칙을 생성하는 방법:

  1. AWS WAF 콘솔을 엽니다.
  2. IP 집합을 생성하고 목록에 해당 IP 주소를 추가합니다.
  3. 웹 ACL을 선택하고, 다음으로 일반 규칙, IP 일치 규칙 생성을 선택합니다.
  4. 요청 옵션에서 다음 IP 주소에서 발생을 선택한 다음 2단계에서 만든 IP 집합을 선택합니다.
  5. 규칙 작업을 차단으로 설정합니다.
  6. 규칙 추가를 선택합니다.

자세한 내용은 IP 집합 생성 및 관리를 참조하세요.

문자열 일치 규칙을 만들어 불량 요청 차단

DDoS 공격 중에는 보통 소스 IP가 하나만 있지 않기 때문에 한 개 또는 몇 개의 IP 주소를 근거로 필터링하기 어렵습니다. 이런 경우, 요청의 모든 섹션을 평가하여 양호한 요청과 불량 요청을 구별하는 패턴을 식별하는 것이 중요합니다. 문자열 일치 규칙이나 정규식 일치 규칙을 만들면 불량 요청을 효율적으로 차단할 수 있습니다.

예를 들어, 불량 요청이 사용자 에이전트: BadBot에서 온 경우, 헤더 세부 정보에 따른 문자열 일치 규칙을 만들면 됩니다.

AWS WAF 콘솔에서 문자열 일치 규칙을 생성하는 방법:

  1. AWS WAF 콘솔을 엽니다.
  2. 웹 ACL을 선택하고, 다음으로 일반 규칙, 문자열 일치 규칙 생성을 선택합니다.
  3. 요청 옵션 아래에서 다음을 선택합니다.
    검사헤더를 선택합니다.
    헤더 필드 이름사용자 에이전트를 입력합니다.
    일치 유형에는 문자열과 정확히 일치를 선택합니다.
    일치시킬 문자열BadBot을 입력합니다.
  4. 규칙 작업차단으로 설정합니다.
  5. 규칙 추가를 선택합니다.

정규식 일치 규칙을 생성하여 불량 요청 차단

정규식 일치 규칙 문은 AWS WAF에 단일 정규식(regex)을 기준으로 요청 구성 요소를 일치시키도록 지시합니다. 요청의 구성 요소가 사용자가 지정한 정규식과 일치하면 해당 웹 요청이 문과 일치하는 것입니다.

AWS WAF 콘솔에서 정규식 일치 규칙을 생성하는 방법:

  1. AWS WAF 콘솔을 엽니다.
  2. 웹 ACL을 선택하고, 다음으로 일반 규칙, 문자열 일치 규칙 생성을 선택합니다.
  3. 요청 옵션 아래에서 다음을 선택합니다.
    검사URI 경로를 선택합니다.
    일치 유형으로 정규식 일치를 선택합니다.
    일치시킬 문자열에 해당 정규식을 입력합니다.
  4. 규칙 작업차단으로 설정합니다.
  5. 규칙 추가를 선택합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?