AWS WAF의 특정 요청 파라미터 또는 URI에 속도 제한을 적용하려면 어떻게 해야 합니까?
간략한 설명
AWS WAF에는 각 발신 IP 주소에 대한 요청 속도를 추적하는 속도 기반 규칙이 있습니다. 규칙은 5분 내에 지정된 한도를 초과하는 속도를 가진 IP에 대하여 규칙 작업을 시작합니다.
속도 기반 규칙을 사용하여 과도한 요청을 보내는 IP 주소의 요청을 일시적으로 차단할 수 있습니다. 기본적으로 AWS WAF는 웹 요청 오리진의 IP 주소를 기반으로 요청을 집계합니다. 그 대신 X-Forwarded-For와 같은 HTTP 헤더의 IP 주소를 사용하도록 규칙을 구성할 수 있습니다.
이러한 속도 기반 규칙 문의 경우 조건을 범위 다운 문의 일부로 정의할 수도 있습니다. 범위 다운 문과 일치하는 요청만 해당 규칙의 평가를 위해 고려하도록 조건을 정의할 수 있습니다.
참고: AWS WAF 콘솔에는 속도 기반 규칙에 대한 “범위 축소 문” 옵션이 없습니다. 규칙 문의 조건과 일치하는 요청만 고려하기 옵션을 선택하여 범위 다운 문에 해당하는 항목을 만듭니다.
다음 해결 방법에서는 특정 파라미터에 대한 속도 기반 규칙을 사용자 지정할 수 있는 두 가지 시나리오를 고려합니다.
해결 방법
시나리오 1: 특정 URI에 속도 제한 추가
참고: 모든 요청 파라미터를 지정할 수 있습니다.
- AWS WAF 콘솔을 엽니다.
- 웹 ACL(Web ACLs) 선택
- 웹 ACL을 선택한 다음 규칙(Rules) 탭을 선택합니다.
- **규칙 추가(Add rules)**를 선택합니다.
- **자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)**를 선택합니다.
- **규칙 유형(Rule type)**으로 **규칙 빌더(Rule builder)**를 선택합니다.
- **이름(Name)**을 입력하고 **속도 기반 규칙(Rate-based rule)**을 선택합니다.
- **요청 속도 세부 정보(Request rate details)**에서 다음 파라미터를 입력합니다.
속도 제한: 100에서 20,000,000 사이의 숫자를 입력합니다. 5분 동안 모든 IP에서 허용되는 최대 요청 수입니다.
속도 제한에 사용할 IP 주소: 클라이언트 IP 필드를 기준으로 속도 제한을 지정하려면 **소스 IP 주소(Source IP address)**를 선택합니다. 또는 헤더의 IP 주소를 기준으로 속도 제한을 지정하려면 **헤더의 IP 주소(IP address in header)**를 선택합니다. 예를 들어 X-Forwarder-for가 있습니다.
속도 제한에 대한 요청 수 계산 기준: **규칙 설명의 기준과 일치하는 요청만 고려(Only consider requests that match the criteria in a rule statement)**를 선택합니다.
- 요청이 하나인 경우 드롭다운 목록에서 **명령문과 일치(matches the statement)**를 선택합니다. 지정할 조건이 여러 개인 경우 사용 사례에 따라 이 선택을 변경할 수 있습니다.
- 명령문 세부 정보 섹션에서 다음 필드를 작성합니다.
참고: 이 예시에서 속도 제한은 URI 경로 “/admin”에 있습니다. 사용 사례에 따라 세부 정보를 변경할 수 있습니다.
검사: URI 경로
일치 유형: 문자열 포함
일치시킬 문자열: /admin
텍스트 변환: 없음
- 작업(Action) 섹션에서 **차단(Block)**을 선택합니다.
- **규칙 추가(Add rule)**를 선택합니다. 규칙을 사용 사례의 올바른 우선 순위로 이동한 다음 **저장(Save)**을 선택합니다.
시나리오 2: 속도 제한 규칙에서 선택한 내부 IP 제외
이 시나리오에서는 모든 내부 IP를 포함하는 IP 집합을 만듭니다. 그런 다음 범위 축소 문에서 이 IP 집합을 제외합니다.
속도 기반 규칙에서 IP 집합을 제외하려면 다음 단계를 수행합니다.
- AWS WAF 콘솔을 엽니다.
- **웹 ACL(Web ACLs)**을 선택합니다.
- 웹 ACL을 선택한 다음 규칙(Rules) 탭을 선택합니다.
- **규칙 추가(Add rules)**를 선택합니다.
- **자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)**를 선택합니다.
- **규칙 유형(Rule type)**으로 **규칙 빌더(Rule builder)**를 선택합니다.
- **이름(Name)**을 입력하고 **속도 기반 규칙(Rate-based rule)**을 **유형(Type)**으로 선택합니다.
- **요청 속도 세부 정보(Request rate details)**에서 다음 파라미터를 입력합니다.
속도 제한: 100에서 20,000,000 사이의 숫자를 입력합니다. 5분 동안 모든 IP에서 허용되는 최대 요청 수입니다.
속도 제한에 사용할 IP 주소: 클라이언트 IP 필드를 기준으로 속도 제한을 설정하려면 **소스 IP 주소(Source IP address)**를 선택합니다. 또는 헤더의 IP 주소를 기준으로 속도 제한을 설정하려면 **헤더의 IP 주소(IP address in header)**를 선택합니다. 예를 들어 X-Forwarder-for가 있습니다.
속도 제한에 대한 요청 수 계산 기준: **규칙 문의 기준과 일치하는 요청만 고려(Only consider requests that match the criteria in a rule statement)**를 선택합니다.
- 요청이 하나인 경우 드롭다운 목록에서 **명령문과 일치하지 않음(Doesn’t match the statement)(NOT)**을 선택합니다.
- 명령문 세부 정보 섹션에서 다음 필드를 작성합니다.
검사: IP 주소에서 시작됩니다.
IP 세트: 드롭다운 목록에서 IP 세트를 선택합니다.
원래 주소로 사용할 IP 주소: 클라이언트 IP 필드를 기준으로 속도 제한을 설정하려면 **소스 IP 주소(Source IP address)**를 선택합니다. 또는 헤더의 IP 주소를 기준으로 속도 제한을 설정하려면 **헤더의 IP 주소(IP address in header)**를 선택합니다. 예를 들어 X-Forwarder-for가 있습니다.
- 작업(Action) 섹션에서 **차단(Block)**을 선택합니다.
- **규칙 추가(Add rule)**를 선택합니다. 규칙을 사용 사례의 올바른 우선 순위로 이동한 다음 **저장(Save)**을 선택합니다.