AWS WAF를 사용하여 사용자 에이전트 헤더가 포함되지 않은 HTTP 요청을 차단하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 10월 22일

사용자 에이전트 헤더가 없거나 요청에 사용자 에이전트 헤더 값이 비어있는 HTTP 요청을 차단하려고 합니다. AWS WAF 또는 AWS WAF 클래식을 사용하여 이러한 요청을 차단하려면 어떻게 해야 합니까?

간략한 설명

기본적으로 AWS WAF 필터는 HTTP 요청 매개 변수가 있는지 여부를 확인하지 않습니다. 그러나 이러한 파라미터를 확인하는 조건이 포함된 규칙을 만들 수 있습니다.

AWS WAF에서는 다음 조건을 사용할 수 있습니다.

AWS WAF 클래식을 사용하면 다음 조건을 사용할 수 있습니다.

해결 방법

AWS WAF를 사용하는 경우 다음 두 옵션 중 하나를 선택합니다.

옵션 1: 정규식 패턴 세트가 있는 규칙 만들기

먼저 정규식 패턴 세트를 만듭니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 [정규식 패턴 세트(Regex pattern sets)]를 선택합니다.
  3. [리전(Region)]에 웹 ACL(웹 액세스 제어 목록)을 생성한 리전을 선택합니다.
    참고:  웹 ACL이 Amazon CloudFront에 대해 설정된 경우 [글로벌(Global)]을 선택합니다.
  4. [정규식 패턴 세트 만들기(Create regex pattern sets)]를 선택합니다.
  5. [정규식 패턴 세트 이름(Regex pattern set name)]에 [testpattern]을 입력합니다.
  6. [정규 표현식(Regular expressions)]에 +를 입력합니다.
  7. [정규식 패턴 세트 만들기(Create regex pattern set)]를 선택합니다.

웹 ACL에 정규식 패턴 세트를 추가합니다.

  1. 탐색 창의 AWS WAF에서 웹 ACL을 선택합니다.
  2. [리전(Region)]에서 웹 ACL을 생성한 리전을 선택합니다.
    참고:  웹 ACL이 Amazon CloudFront에 대해 설정된 경우 [글로벌(Global)]을 선택합니다.
  3. 웹 ACL을 선택합니다.
  4. [규칙(Rules)], [규칙 추가(Add Rules)], [자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)]를 순차척으로 선택합니다.
  5. [이름(Name)]에 UA-Rule을 입력합니다.
  6. [요청인 경우(If a request)]에 [문과 일치하지 않음(아님)(doesn’t match the statement(NOT))]을 선택합니다.
  7. [문(Statement)]에 대해 [헤더 검사(Statement)]를 선택합니다.
  8. [헤더 필드 이름(Header field name)]에 User-Agent를 입력합니다.
  9. [일치 유형(Match type)]에 대해 [정규식 패턴 세트에서 일치 패턴(Matches pattern from regex pattern set)]을 선택합니다.
  10. [정규식 패턴 세트(Regex pattern set)]의 경우, [테스트패턴(testpattern)]을 선택합니다.
  11. [텍스트 변환(Text transformation)]의 경우 기본값인 [없음(None)]을 유지합니다.
  12. [작업(Action)]의 경우 기본값인 [차단(Block)]을 유지합니다.
  13. [규칙 추가(Add Rule)]를 선택합니다.
  14. 웹 ACL에서 규칙의 우선 순위를 선택합니다.
  15. [저장(Save)]을 선택합니다.

옵션 2: 크기 제약 조건이 있는 규칙 생성

참고: 기본적으로 계정당 정규식 패턴 세트의 수는 10입니다. 이 AWS WAF 제한을 초과한 경우 다음 크기 제약 솔루션을 사용할 수 있습니다.

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 웹 ACL을 선택합니다.
  3. [리전(Region)]에서 웹 ACL을 생성한 리전을 선택합니다.
    참고:  웹 ACL이 Amazon CloudFront에 대해 설정된 경우 [글로벌(Global)]을 선택합니다.
  4. 웹 ACL을 선택합니다.
  5. [규칙(Rules)], [규칙 추가(Add Rules)], [자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)]를 순차척으로 선택합니다.
  6. [이름(Name)]에 [UA-Rule2]를 입력합니다.
  7. [요청인 경우(If a request)]에 [문과 일치하지 않음(아님)(doesn’t match the statement(NOT))]을 선택합니다.
  8. [문(Statement)]에 대해 [헤더 검사(Statement)]를 선택합니다.
  9. [헤더 필드 이름(Header field name)]에 User-Agent를 입력합니다.
  10. [일치 유형(Match type)]에서 [크거나 같은 크기(Match type)]를 선택합니다.
  11. [크기(Size)]에 0(영)을 입력합니다.
  12. [텍스트 변환(Text transformation)]의 경우 기본값인 [없음(None)]을 유지합니다.
  13. [작업(Action)]의 경우 기본값인 [차단(Block)]을 유지합니다.
  14. [규칙 추가(Add Rule)]를 선택합니다.
  15. 웹 ACL에서 규칙을 저장할 위치를 선택합니다.
  16. [저장(Save)]을 선택합니다.

참고: 웹 ACL에서 [핵심 규칙 세트(CRS)(Core rule set (CRS))]를 사용합니다. 이 AWS 관리형 규칙 세트에는 사용자 에이전트가 포함되지 않은 요청을 차단하는 규칙이 포함되어 있습니다. AWS 관리형 규칙을 추가하면 웹 ACL의 WAF 용량 단위(WCU)가 사용됩니다.

AWS WAF 클래식을 사용하는 경우 다음 두 가지 옵션 중 하나를 선택합니다.

옵션 1: 정규식 일치 조건이 있는 규칙 만들기

먼저 정규식 일치 조건을 다음과 같이 생성합니다.

  1. AWS WAF 콘솔을 엽니다.
  2. [AWS WAF 클래식으로 전환(Switch to AWS WAF Classic)]을 선택합니다.
  3. 탐색 창에서 [문자열 및 정규칙 일치(String and Regex matching)]를 선택합니다.
  4. [조건 생성(Create condition)]을 선택합니다.
  5. [이름(Name)]에 UA-condition을 입력합니다.
  6. [리전(Region)]에서 웹 ACL을 생성한 리전을 선택합니다.
    참고:  웹 ACL이 Amazon CloudFront에 대해 설정된 경우 [글로벌(Global)]을 선택합니다.
  7. [유형(Type)]에서 [정규식 일치(Regex match)]를 선택합니다.
  8. [필터링할 요청의 일부(Part of the request to filter on)]에서 [헤더(Header)]를 선택합니다.
  9. [헤더(Header)]에서 [사용자-에이전트(User-Agent)]를 선택합니다.
  10. [변환(Transformation)]에서 [없음(None)]을 선택합니다.
  11. [요청에 일치하는 정규식 패턴(Regex patterns to match to request)]에서 [정규식 패턴 세트 만들기(Create regex pattern set)]의 기본 선택을 유지합니다.
  12. [새 패턴 세트 이름(New pattern set name)]에 [testpattern]을 입력합니다.
  13. 정규식 .+를 입력한 후 더하기(+) 기호를 선택합니다.
    참고: 정규식(regex)은 줄 종결자를 제외한 모든 문자와 일치합니다.
  14. [패턴 세트 생성 및 필터 추가(Create pattern set and add filter)]를 선택합니다.
  15. [생성(Create)]을 선택합니다.

그런 다음 규칙을 생성하고 조건을 추가합니다.

  1. 탐색 창에서 [규칙(Rules)]을 선택합니다.
  2. [Create rule(규칙 생성)]을 선택합니다.
  3. [이름(Name)]에 UA-Rule을 입력합니다.
    참고: Amazon CloudWatch 지표 이름은 [이름(Name)] 필드의 항목에 따라 자동으로 채워집니다.
  4. [규칙 유형(Rule type)]에서 [일반 규칙(Regular rule)]을 선택합니다.
  5. [리전(Region)]에서 웹 ACL을 생성한 리전을 선택합니다.
    참고: 웹 ACL이 CloudFront에 대해 설정된 경우 [글로벌(Global)]을 선택합니다.
  6. [조건 추가(Add conditions)]에서 [문자열 일치 조건에 있는 필터 중 하나 이상 일치하지(match at least one of the filters in the string match condition)] 및 [않음(does not)]을 선택합니다.
  7. [조건(condition)] 드롭다운 메뉴에서 UA-condition을 선택합니다.
  8. [생성(Create)]을 선택합니다.

마지막으로 이 규칙을 웹 ACL에 추가합니다.

  1. 탐색 창에서 [Web ACL]을 선택합니다.
  2. 웹 ACL 이름을 선택합니다.
  3. [규칙(Rules)] 탭을 선택하고 [web ACL 편집(Edit web ACL)]을 선택합니다.
  4. [규칙(Rules)]에서 [UA-Rule]을 선택합니다.
  5. [규칙을 web ACL에 추가(Add rule to web ACL)]를 선택합니다.
  6. [작업(Action)]에 [차단(Block)]이 선택되어 있는지 확인합니다.
  7. [기본 작업(Default action)]에서 [규칙과 일치하지 않는 모든 요청 허용(Allow all requests to do match any rules)]을 선택합니다.
  8. [업데이트(Update)]를 선택합니다.

옵션 2: 크기 제약 조건이 있는 규칙 생성

참고: 기본적으로 계정당 패턴 세트의 수는 5입니다. 이 AWS WAF 제한을 초과한 경우 다음 크기 제약 솔루션을 사용할 수 있습니다.

먼저 크기 제약 조건을 생성합니다.

  1. AWS WAF 콘솔을 엽니다.
  2. [AWS WAF 클래식으로 전환(Switch to AWS WAF Classic)]을 클릭합니다.
  3. 탐색 창에서 [크기 제약(Size constraints)]을 선택합니다.
  4. [조건 생성(Create condition)]을 선택합니다.
  5. [이름(Name)]에 UA-condition2를 입력합니다.
  6. [리전(Region)]에서 웹 ACL을 생성한 리전을 선택합니다.
    참고: 웹 ACL이 CloudFront에 대해 설정된 경우 [글로벌(Global)]을 선택합니다.
  7. [필터링할 요청의 일부(Part of the request to filter on)]에서 [헤더(Header)]를 선택합니다.
  8. [헤더(Header)]에 [User-Agent]를 입력합니다.
  9. [비교 연산자(Comparison operator)]에서 [크거나 같음(Greater than or equal)]을 선택합니다.
  10. [크기(바이트)(Size(Bytes))]에서 기본값 0을 유지합니다.
  11. [변환(Transformation)]에서 [없음(None)]을 선택합니다.
  12. [필터 추가(Add filter)]를 선택합니다.
  13. [생성(Create)]을 선택합니다.

그런 다음 규칙을 생성하고 조건을 추가합니다.

  1. 탐색 창에서 [규칙(Rules)]을 선택합니다.
  2. [Create rule(규칙 생성)]을 선택합니다.
  3. [이름(Name)]에 [UA-Rule2]를 입력합니다.
    참고:  CloudWatch 지표 이름은 [이름(Name)] 필드의 항목에 따라 자동으로 채워집니다.
  4. [규칙 유형(Rule type)]에서 [일반 규칙(Regular rule)]을 선택합니다.
  5. [리전(Region)]에서 웹 ACL을 생성한 리전을 선택합니다.
    참고: 웹 ACL이 CloudFront에 대해 설정된 경우 [글로벌(Global)]을 선택합니다.
  6. [조건 추가(Add conditions)]에서 [크기 제약 조건 중 하나 이상의 필터와 일치하지(match at least one of the filters in the size constraint condition)] 및 [않음(does not)]을 선택합니다.
  7. [조건(condition)] 드롭다운 메뉴에서 [UA-condition2]를 선택합니다.
  8. [생성(Create)]을 선택합니다.

마지막으로 이 규칙을 웹 ACL에 추가합니다.

  1. 탐색 창에서 [Web ACL]을 선택합니다.
  2. 웹 ACL 이름을 선택합니다.
  3. [규칙(Rules)] 탭을 선택하고 [web ACL 편집(Edit web ACL)]을 선택합니다.
  4. [규칙(Rules)]에서 [UA-Rule]을 선택합니다.
  5. [규칙을 web ACL에 추가(Add rule to web ACL)]를 선택합니다.
  6. [작업(Action)]에 [차단(Block)]이 선택되어 있는지 확인합니다.
  7. [기본 작업(Default action)]에서 [규칙과 일치하지 않는 모든 요청 허용(Allow all requests to do match any rules)]을 선택합니다.
  8. [업데이트(Update)]를 선택합니다.

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


결제 또는 기술 지원이 필요합니까?