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

웹 ACL 테스트

허용할 웹 요청을 차단하거나 차단할 요청을 허용하도록 AWS WAF를 실수로 구성하지 않았는지 확인하기 위해 웹 사이트나 웹 애플리케이션에서 사용하기 전에 웹 ACL을 철저하게 테스트하는 것이 좋습니다.

웹 ACL에서 규칙과 일치하는 웹 요청 계산

규칙을 웹 ACL에 추가할 때 AWS WAF에서 해당 규칙의 모든 조건과 일치하는 웹 요청을 허용할지, 차단할지 또는 계수할지를 지정합니다. 다음 구성으로 시작하는 것이 좋습니다.

  • 웹 요청을 계산하도록 웹 ACL의 모든 규칙 구성

  • 요청을 허용하도록 웹 ACL에 대한 기본 작업 설정

이 구성에서 AWS WAF는 첫 번째 규칙의 조건을 기반으로 각 웹 요청을 검사합니다. 웹 요청이 해당 규칙의 모든 조건과 일치하는 경우 AWS WAF는 해당 규칙에 대한 카운터를 증가시킵니다. 그런 다음 AWS WAF는 다음 규칙의 조건을 기반으로 웹 요청을 검사합니다. 요청이 해당 규칙의 모든 조건과 일치하는 경우 AWS WAF는 규칙에 대한 카운터를 증가시킵니다. AWS WAF에서 모든 규칙의 조건을 기반으로 요청을 검사할 때까지 이 작업이 계속됩니다.

요청 수를 계산하도록 웹 ACL의 모든 규칙을 구성하고 웹 ACL을 Amazon API Gateway API, CloudFront 배포 또는 Application Load Balancer와 연결한 후에는 Amazon CloudWatch 그래프에서 계수 결과를 볼 수 있습니다. 웹 ACL의 각 규칙과 API 게이트웨이, CloudFront 또는 Application Load Balancer가 웹 ACL용으로 AWS WAF에 전달하는 모든 요청에 대해 CloudWatch에서 다음을 수행할 수 있습니다.

  • 이전 한 시간 또는 이전 세 시간 동안의 데이터 보기

  • 데이터 요소 간의 간격 변경

  • CloudWatch에서 데이터에 대해 수행할 계산 변경(예: 최대, 최소, 평균 또는 합계)

참고

가 포함된 는 글로벌 서비스이며 AWS 콘솔에서 미국 동부(버지니아 북부) 리전을 선택한 경우에만 지표를 사용할 수 있습니다. 다른 리전을 선택한 경우 비 AWS WAF 지표가 CloudWatch 콘솔에 표시됩니다.

웹 ACL에서 규칙에 대한 데이터를 보려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창의 [Metrics]에서 [WAF]를 선택합니다.

  3. 데이터를 보려는 웹 ACL의 확인란을 선택합니다.

  4. 해당되는 설정을 변경합니다.

    통계

    CloudWatch에서 데이터에 대해 수행하는 계산을 선택합니다.

    시간 범위

    이전 한 시간 동안의 데이터를 볼지 또는 이전 세 시간 동안의 데이터를 볼지를 선택합니다.

    기간

    그래프에서 데이터 요소 간의 간격을 선택합니다.

    규칙

    데이터를 보려는 규칙을 선택합니다.

    다음 사항에 유의하십시오.

    • 웹 ACL을 API 게이트웨이 API, CloudFront 배포 또는 Application Load Balancer와 연결한 경우 그래프에 데이터가 나타나고 사용 가능한 지표 목록에 웹 ACL에 대한 지표가 나타날 때까지 몇 분 간 기다려야 할 수 있습니다.

    • 두 개 이상의 API 게이트웨이 API, CloudFront 또는 Application Load Balancer를 웹 ACL과 연결하면 웹 ACL과 연결된 모든 배포에 대한 모든 요청이 CloudWatch 데이터에 포함됩니다.

    • 데이터 요소 위에 마우스 커서를 놓으면 추가 정보를 볼 수 있습니다.

    • 그래프는 자동으로 갱신되지 않습니다. 표시 내용을 업데이트하려면 새로 고침( Icon to refresh the CloudWatch graph ) 아이콘을 선택합니다.

  5. (선택 사항) API 게이트웨이, CloudFront 또는 Application Load Balancer가 AWS WAF에 전달한 개별 요청에 대한 세부 정보를 봅니다. 자세한 내용은 API 게이트웨이, CloudFront 또는 Application Load Balancer가 AWS WAF에 전달한 웹 요청의 샘플 보기 단원을 참조하십시오.

  6. 가로채지 않아야 할 요청을 규칙이 가로채는 것으로 확인되면 해당 설정을 변경합니다. 자세한 정보는 웹 ACL(웹 액세스 제어 목록) 생성 및 구성 단원을 참조하십시오.

    모든 규칙이 올바른 요청만 가로채는 것으로 확인되는 경우 각 규칙에 대한 작업을 [Allow] 또는 [Block]으로 변경합니다. 자세한 내용은 웹 ACL 편집 단원을 참조하십시오.

API 게이트웨이, CloudFront 또는 Application Load Balancer가 AWS WAF에 전달한 웹 요청의 샘플 보기

AWS WAF 콘솔에서 API 게이트웨이, CloudFront 또는 Application Load Balancer가 검사를 위해 AWS WAF에 전달한 요청 샘플을 볼 수 있습니다. 샘플링된 각 요청에 대해 요청에 대한 세부 데이터를 볼 수 있습니다(예: 요청이 시작되는 IP 주소 및 요청에 포함된 헤더). 요청이 어떤 규칙과 일치하는지, 규칙이 요청을 허용하도록 구성되어 있는지 또는 차단하도록 구성되어 있는지도 볼 수 있습니다.

요청 샘플에는 각 규칙의 모든 조건과 일치하는 최대 100개의 요청과 특정 규칙의 모든 조건과 일치하는 않는 규칙에 적용되는 기본 작업에 대한 다른 100개의 요청이 포함되어 있습니다. 샘플의 요청은 모든 API 게이트웨이 API, CloudFront 엣지 로케이션 또는 이전 15분 동안 콘텐츠에 대해 요청을 수신한 Application Load Balancer에서 나옵니다.

API 게이트웨이, CloudFront 또는 Application Load Balancer가 AWS WAF에 전달한 웹 요청의 샘플을 보려면

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/waf/에서 AWS WAF 콘솔을 엽니다.

  2. 탐색 창에서 요청을 보려는 웹 ACL을 선택합니다.

  3. 오른쪽 창에서 [Requests] 탭을 선택합니다.

    [Sampled requests] 테이블에는 각 요청에 대해 다음과 같은 값이 표시됩니다.

    소스 IP

    요청이 시작된 IP 주소 또는 최종 사용자가 HTTP 프록시나 Application Load Balancer를 사용하여 요청을 전송한 경우 프록시 또는 Application Load Balancer의 IP 주소입니다.

    URI

    리소스를 식별하는 URL의 부분입니다(예: /images/daily-ad.jpg).

    일치 규칙

    웹 요청이 모든 조건과 일치하는 웹 ACL의 첫 번째 규칙을 식별합니다. 웹 요청이 웹 ACL의 한 규칙이 있는 모든 조건과 일치하지 않는 경우 [Matches rule]의 값은 [Default]입니다.

    웹 요청이 규칙의 모든 조건과 일치하고 해당 규칙에 대한 작업이 개수이면 AWS WAF는 웹 ACL의 이후 규칙을 기반으로 웹 요청을 계속 검사합니다. 이 경우 샘플링된 요청 목록에 웹 요청이 두 번 나타날 수 있습니다. [Count] 작업이 있는 규칙에 대해 한 번 나타나고 후속 규칙 또는 기본 작업에 대해 다시 한 번 나타납니다.

    작업

    해당 규칙에 대한 작업이 [Allow]인지, [Block]인지 또는 [Count]인지를 나타냅니다.

    시간

    AWS WAF가 API 게이트웨이, CloudFront 또는 Application Load Balancer의 요청을 수신한 시간입니다.

  4. 요청에 대한 추가 정보를 표시하려면 해당 요청에 대한 IP 주소 왼쪽의 화살표를 선택합니다. AWS WAF에는 다음과 같은 정보가 표시됩니다.

    소스 IP

    테이블의 [Source IP] 열에 있는 값과 동일한 IP 주소입니다.

    국가

    요청이 시작되는 국가의 2자 국가 코드입니다. 최종 사용자가 HTTP 프록시 또는 Application Load Balancer를 사용하여 요청을 전송한 경우 이 값은 HTTP 프록시 또는Application Load Balancer가 있는 국가의 2자 국가 코드입니다.

    2자 국가 코드 및 해당 국가 이름의 목록은 Wikipedia 항목 ISO 3166-1 alpha-2를 참조하십시오.

    방법

    요청에 대한 HTTP 요청 메서드입니다. GET, HEAD, OPTIONS, PUT, POST, PATCH 또는 DELETE를 선택할 수 있습니다.

    URI

    테이블의 [URI] 열에 있는 값과 동일한 URI입니다.

    요청 헤더

    요청 헤더 및 요청의 헤더 값입니다.

  5. 샘플 요청의 목록을 새고 고치려면 [Get new samples]를 선택합니다.