AWS WAF를 AWS Global Accelerator와 함께 사용하여 악성 공격으로부터 애플리케이션을 보호하려면 어떻게 해야 하나요?

3분 분량
0

Global Accelerator를 기반으로 하는 Application Load Balancer와 함께 AWS WAF 속도 제한 규칙을 사용하여 Layer 7 DDoS 공격으로부터 애플리케이션을 보호하고 싶습니다.

간단한 설명

AWS Global Accelerator, Application Load Balancer, AWS WAF를 활용하여 애플리케이션 계층의 배포된 서비스 거부(DDoS) 공격으로부터 방어할 수 있습니다.

참고: Application Load Balancer와 WAF를 통해 클라이언트 속도를 제한하려면 가속기에서 소스 IP preserved=TRUE를 설정해야 합니다. 자세한 내용은 AWS Global Accelerator에서 클라이언트 IP 주소 보존을 참조하세요.

해결 방법

AWS WAF 속도 제한 규칙을 사용하면 사용자의 애플리케이션에 엄청난 양의 요청을 보내는 특정 IP 주소의 클라이언트를 자동으로 차단할 수 있습니다. 사용자의 속도 기반 규칙은 슬라이딩 시간 창을 기준으로 각 IP 주소가 보낸 요청 수를 추적합니다. 요청이 속도 제한을 초과하면, 규칙은 해당 주소가 요청 수를 줄일 때까지 소스 IP 주소의 요청을 즉시 차단합니다.

**참고:**사용자는 또한 요청을 보낸 국가를 포함하여 요청의 여러 구성 요소를 검사하고 차단하도록 규칙을 구성할 수 있습니다.

사전 요구 사항

  • Global Accelerator, Application Load Balancer와 AWS WAF에 대해 다음과 같은 트래픽 흐름 구성이 있는지 확인하세요.
    User --> Global Accelerator --> Application Load Balancer with WAF --> EC2 instance
    **참고:**이 설정에서 사용자는 가속기에 요청함으로써 애플리케이션에 액세스합니다. 가속기는 사용자 트래픽을 Application Load Balancer와 이와 관련된 WAF로 라우팅합니다. WAF는 사용자가 생성한 속도 제한 규칙을 사용하여 사용자 요청을 평가하고 차단하거나 허용합니다.
  • GitHub의 loadtest와 같은 부하 시험 도구를 설치하세요. 또는 사용자에게 필요한 가시성을 제공하는 부하 시험 도구를 사용할 수 있으며 이 도구는 사용자가 선택할 수 있습니다.

규칙 기반 웹 ACL 생성

엄격한 속도 제한 100을 가진 속도 기반 규칙을 웹 ACL에 생성합니다. 그런 다음 테스트 사례를 사용하여 규칙이 작동하는지 확인하세요.

  1. AWS WAF 콘솔로 이동하여 웹 ACL 규칙을 생성합니다.
  2. 사용자의 웹 ACL에 사용자 지정 규칙을 추가하세요.
  3. 이름을 지정하고 속도 기반 규칙을 Type으로 설정합니다.
  4. 속도 제한을 100으로 설정합니다.
  5. 다른 모든 설정은 그대로 두세요. 그런 다음 규칙 추가를 클릭합니다.
  6. 웹 ACL을 저장합니다.

결과 테스트

시험은 HTTP 플러드 공격을 시뮬레이션합니다. 부하 시험 도구는 수신된 요청의 진행 상황을 표시합니다. 일부 단계에서는 요청이 실패하기 시작하는데 그 이유는 사용자가 설정한 속도 제한 규칙에 따라 해당 요청들이 차단되기 때문입니다.

  1. 사용자의 컴퓨터에서 부하 시험 도구를 실행합니다.
    **참고:**또는 사용자의 콘솔에서AWS CloudShell을 엽니다(그것이 지원되는 Region으로 전환하라는 메시지가 표시될 수 있음).

    # Install globally as root:
    npm install -g loadtest
    # On AWS CloudShell, Ubuntu or Mac OS X systems install using sudo:
    sudo npm install -g loadtest
  2. 아래와 같이 Global Accelerator의 URL을 입력하세요.

    # Global Accelerator url
    GA_URL=http://your_Global_Acclerator_URL

    참고: your_Global_Accelerator_URL을 사용자의 Global Accelerator URL로 바꾸세요.

  3. 사용자의 터미널에서 명령을 실행하여 엄청난 양의 시뮬레이션 요청에 대한 부하 시험을 시작합니다.

    **참고:**이 작업을 수행하는 데 45초가 걸리므로 흐름을 주시하세요.

    loadtest -n 1000 -c 1 --rps 25 $GA_URL

    이 명령은 초당 1개부터 25개까지의 요청을 동시에 실행하여 총 1000개의 요청을 전송합니다. 이러한 초당 요청 속도를 사용하면, 4초 이내에 사용자가 설정한 제한에 도달하게 됩니다.

  4. 출력 흐름을 분석합니다. 일부 단계에서는 요청이 실패하기 시작했다는 점을 알아두세요. 오류는 WAF 규칙이 사용자 소스 IP 주소의 모든 요청을 차단했음을 나타냅니다.

    [Fri Apr 21 2023 20:26:45 GMT+0000 ] INFO Requests: 0 (0%), requests per second: 0, mean latency: 0 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Requests: 106 (11%), requests per second: 21, mean latency: 22.9 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Errors: 106, accumulated errors: 106, 100% of total requests
AWS 공식
AWS 공식업데이트됨 일 년 전