정규식 매칭 조건 작업 - AWS WAF, AWS Firewall Manager 및 AWS Shield Advanced

정규식 매칭 조건 작업

주의

AWS WAF Classic 지원은 2025년 9월 30일에 종료됩니다.

참고

이것은 AWS WAF Classic 설명서입니다. 2019년 11월 이전에 AWS WAF에서 규칙, 웹 ACL 등의 AWS WAF 리소스를 생성했으며 아직 최신 버전으로 마이그레이션하지 않은 경우, 이 버전만 사용해야 합니다. 웹 ACL 마이그레이션하려면 AWS WAF Classic 리소스를 AWS WAF로 마이그레이션 섹션을 참조하세요.

AWS WAF의 최신 버전은 AWS WAF(을)를 참조하세요.

요청에 나타나며 정규식 패턴과 일치하는 문자열에 근거하여 웹 요청을 허용하거나 차단하려는 경우, 정규식 매칭 조건을 하나 이상 생성합니다. 정규식 매칭 조건은 검색하려는 패턴과 웹 요청 중 AWS WAF Classic이 패턴을 검사할 부분(예: 지정된 헤더 또는 쿼리 문자열)을 식별하는 문자열 매칭 조건의 타입입니다. 이 프로세스에서 나중에 웹 ACL을 생성할 때 패턴이 포함된 요청을 허용할지 또는 차단할지 지정합니다.

정규식 매칭 조건 생성

정규식 매칭 조건을 생성할 때 검색하려는 문자열(정규식 사용)을 식별하는 패턴 세트를 지정합니다. 그런 다음 웹 요청 중 AWS WAF Classic이 패턴 세트가 있는지 검사할 부분(URI 또는 쿼리 문자열)을 지정하는 필터에 해당 패턴 세트를 추가합니다.

패턴 세트 하나에 여러 정규식을 추가할 수 있습니다. 이렇게 하면 해당 정규식이 OR과 결합됩니다. 즉 해당 요청 부분이 열거된 정규식과 일치하면 웹 요청이 패턴 세트와 일치합니다.

규칙에 정규식 매칭 조건을 추가하는 경우, 조건에 있는 값과 일치하지 않는 웹 요청을 허용하거나 차단하도록 AWS WAF Classic을 구성할 수도 있습니다.

AWS WAF Classic은 대부분의 표준 펄 호환 정규식(PCRE)을 지원합니다. 단, 다음은 지원하지 않습니다:

  • 역참조 및 캡처 하위식

  • 임의의 제로 너비 어설션

  • 서브루틴 참조 및 재귀 패턴

  • 조건 패턴

  • 백트래킹 제어 명령어

  • \C 단일 바이트 명령

  • \R 줄 바꿈 일치 명령

  • \K 일치 시작 초기화 명령

  • 설명선 및 포함된 코드

  • 원자 그룹 지정 및 소유 수량자

정규식 매칭 조건을 생성하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/wafv2/에서 AWS WAF 콘솔을 엽니다.

    탐색 창에 AWS WAF Classic으로 전환이 표시되면 그것을 선택하십시오.

  2. 탐색 창에서 [String and regex matching]을 선택합니다.

  3. [Create condition]을 선택합니다.

  4. 해당 필터 설정값을 지정합니다. 자세한 내용은 정규식 매칭 조건을 생성하거나 편집할 때 지정하는 값 섹션을 참조하세요.

  5. 새 패턴 세트를 생성한 경우, [Create pattern set and add filter]를 선택하고, 기존 패턴 세트를 사용한 경우, [Add filter]를 선택합니다.

  6. 생성을 선택합니다.

정규식 매칭 조건을 생성하거나 편집할 때 지정하는 값

정규식 매칭 조건을 생성하거나 업데이트할 때 다음 값을 지정합니다.

명칭

정규식 매칭 조건의 명칭을 입력합니다. 명칭은 영숫자(A-Z, a-z, 0-9) 또는 특수 문자(_-!"#`+*},./)만 포함할 수 있습니다. 조건을 생성한 후에는 조건의 명칭을 변경할 수 없습니다.

타입

[Regex match]를 선택합니다.

요청 중 필터링할 부분

각 웹 요청 중 AWS WAF Classic이 매칭시킬 값에서 귀하가 지정한 패턴이 있는지 검사할 부분을 선택하십시오:

헤더

지정된 요청 헤더입니다(예: User-Agent 또는 Referer 헤더). [Header]를 선택하는 경우, [Header] 필드에서 헤더의 명칭을 지정합니다.

HTTP 메서드

요청이 오리진에게 수행할 것을 요구하고 있는 작업의 타입을 표시하는 HTTP 메서드입니다. CloudFront는 다음 메서드를 지원합니다: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT.

쿼리 문자열

URL 중 ? 문자 뒤에 나타나는 부분입니다(있는 경우).

URI

리소스를 식별하는 요청의 URI 경로(예: /images/daily-ad.jpg). 여기에는 URI의 쿼리 문자열 또는 조각 구성 요소는 포함되지 않습니다. 자세한 내용은 Uniform Resource Identifier(URI): Generic Syntax 섹션을 참조하세요.

Transformation(변환)이 지정되지 않은 한, URI는 정규화되지 않고 AWS가 요청의 일부로 클라이언트에서 이를 수신할 때와 마찬가지로 검사가 됩니다. Transformation(변환)은 지정된 대로 URI를 다시 포맷합니다.

본문

요청 중 HTTP 요청 본문으로서 웹 서버에 보낼 추가 데이터(예: 양식의 데이터)가 들어 있는 부분입니다.

참고

요청 중 필터링할 부분 값으로 본문을 선택하는 경우, AWS WAF Classic은 처음 8192바이트(8KB)만 검사합니다. 본문이 8192바이트보다 긴 요청을 허용하거나 차단하려면 크기 제약 조건을 생성할 수 있습니다. (AWS WAF Classic은 요청 헤더에서 본문 길이를 가져옵니다.) 자세한 내용은 크기 제약 조건 작업 섹션을 참조하세요.

단일 쿼리 파라미터(값만 해당)

쿼리 문자열의 일부로 정의한 모든 파라미터입니다. 예컨대, URL이 "www.xyz.com?UserName=abc&SalesRegion=seattle"인 경우, UserName 또는 SalesRegion 파라미터에 필터를 추가할 수 있습니다.

쿼리 문자열에 중복 파라미터가 표시될 경우, 값이 "OR"로 평가됩니다. 즉, 두 값 중 하나가 일치를 트리거합니다. 예컨대, URL "www.xyz.com?SalesRegion=boston&SalesRegion=seattle"에서 매칭시킬 값의 "boston" 또는 "seattle"과 일치하는 패턴이 일치를 트리거합니다.

Single query parameter (value only)(단일 쿼리 파라미터(값만 해당))를 선택하는 경우, Query parameter name(쿼리 파라미터 명칭)도 지정합니다. 이는 검사할 쿼리 문자열의 파라미터입니다(예: UserName 또는 SalesRegion). Query parameter name(쿼리 파라미터 명칭)의 최대 길이는 30자입니다. Query parameter name(쿼리 파라미터 명칭)은 대/소문자를 구분하지 않습니다. 예를 들어, UserName쿼리 파라미터 명칭으로 지정하는 경우, 이 명칭은 사용자 명칭UserName과 같은 UserName의 모든 변형과 일치합니다.

모든 쿼리 파라미터(값만 해당)

단일 쿼리 파라미터(값만 해당)와 비슷하지만, AWS WAF Classic은 단일 파라미터 값을 검사하는 대신 매칭시킬 값에 지정된 패턴이 있는지 쿼리 문자열 내의 모든 파라미터 값을 검사합니다. 예를 들어, URL "www.xyz.com?UserName=abc&SalesRegion=seattle"에서 매칭시킬 값의 패턴이 UserName 또는 SalesRegion의 값과 일치하면 일치가 트리거됩니다.

헤더("요청 중 필터링할 부분"이 "헤더"인 경우에만)

요청 중 필터링할 부분 목록에서 헤더를 선택한 경우, 공통 헤더 목록에서 헤더를 선택하거나 AWS WAF Classic이 검사할 헤더의 명칭을 입력합니다.

변환

변환을 수행하면 AWS WAF Classic이 요청을 검사하기 전에 웹 요청의 형식이 바뀝니다. 이렇게 하면 공격자가 AWS WAF Classic을 우회하기 위해 웹 요청에서 사용하는 일부 이상한 형식이 제거됩니다.

단일 타입의 텍스트 변환만을 지정할 수 있습니다.

변환 기능을 사용하여 다음 작업을 수행할 수 있습니다.

None

AWS WAF Classic은 웹 요청에 매칭시킬 값의 문자열이 있는지 검사하기 전에는 요청에서 텍스트 변환을 수행하지 않습니다.

소문자로 변환

AWS WAF Classic이 대문자(A-Z)를 소문자(a-z)로 변환합니다.

HTML 디코딩

AWS WAF Classic이 HTML로 인코딩된 문자를 인코딩되지 않은 문자로 바꿉니다.

  • "&로 바꿈

  •  를 줄 바꿈하지 않는 공백으로 바꿈

  • &lt;<로 바꿈

  • &gt;>로 바꿈

  • 16진수 형식으로 표현된 문자 &#xhhhh;를 해당 문자로 바꿈

  • 십진수 형식으로 표현된 문자 &#nnnn;을 해당 문자로 바꿈

공백 표준화

AWS WAF Classic은 다음 문자를 공백 문자(십진수 32)로 바꿉니다:

  • \f, 양식 피드, 십진수 12

  • \t, 탭, 십진수 9

  • \n, 줄 바꿈, 십진수 10

  • \r, 캐리지 리턴, 십진수 13

  • \v, 세로 탭, 십진수 11

  • 줄 바꿈하지 않는 공백, 십진수 160

또한 이 옵션은 여러 개의 공백을 하나의 공백으로 바꿉니다.

명령행 간소화

공격자가 작동 시스템 명령행 명령을 삽입하고 이상한 형식을 사용하여 명령의 일부 또는 전부를 위장하고 있는지 우려되는 경우, 이 옵션을 사용하여 다음 변환을 수행합니다.

  • 다음 문자를 삭제: \ " ' ^

  • 다음 문자 앞에 있는 공백 삭제: / (

  • 다음 문자를 공백으로 바꿈: , ;

  • 여러 개의 공백을 하나의 공백으로 바꿈

  • 대문자(A-Z)를 소문자(a-z)로 변환

URL 디코딩

URL 인코딩된 요청을 디코딩합니다.

요청과 매칭시킬 정규식 패턴

기존 패턴 세트를 선택하거나 새 패턴 세트를 생성할 수 있습니다. 새 패턴 세트를 생성하는 경우, 다음을 지정하십시오:

새 패턴 세트 명칭

명칭을 입력한 후 AWS WAF Classic이 검색할 정규식 패턴을 지정합니다.

패턴 세트 하나에 여러 정규식을 추가하면 해당 정규식은 OR과 결합됩니다. 즉 해당 요청 부분이 열거된 정규식과 일치하면 웹 요청이 패턴 세트와 일치합니다.

[Value to match]의 최대 길이는 70자입니다.

정규식 매칭 조건 편집

기존의 정규식 매칭 조건을 다음과 같이 변경할 수 있습니다.

  • 기존 패턴 세트에서 패턴 삭제

  • 기존 패턴 세트에 패턴 추가

  • 기존의 정규식 매칭 조건에서 필터 삭제

  • 기존 정규식 매칭 조건에 필터 추가(정규식 매칭 조건에는 필터를 하나만 사용할 수 있습니다. 따라서 필터를 추가하기 위해서는 기존 필터를 먼저 삭제해야 합니다.)

  • 기존의 정규식 매칭 조건 삭제

참고

기존 필터에서 패턴 세트를 추가하거나 삭제할 수 없습니다. 패턴 세트를 편집하거나 필터를 삭제한 후, 새 패턴 세트로 새 필터를 생성해야 합니다.

기존 패턴 세트에서 패턴을 삭제하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/wafv2/에서 AWS WAF 콘솔을 엽니다.

    탐색 창에 AWS WAF Classic으로 전환이 표시되면 그것을 선택하십시오.

  2. 탐색 창에서 [String and regex matching]을 선택합니다.

  3. [View regex pattern sets]를 선택합니다.

  4. 편집하려는 패턴 세트의 명칭을 선택합니다.

  5. 편집을 선택합니다.

  6. 삭제하려는 패턴 옆의 [X]를 선택합니다.

  7. 저장을 선택합니다.

기존 패턴 세트에 패턴을 추가하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/wafv2/에서 AWS WAF 콘솔을 엽니다.

    탐색 창에 AWS WAF Classic으로 전환이 표시되면 그것을 선택하십시오.

  2. 탐색 창에서 [String and regex matching]을 선택합니다.

  3. [View regex pattern sets]를 선택합니다.

  4. 편집할 패턴 세트의 명칭을 선택합니다.

  5. 편집을 선택합니다.

  6. 새 정규식 패턴을 입력합니다.

  7. 새 패턴 옆의 [+]를 선택합니다.

  8. 저장을 선택합니다.

기존의 정규식 매칭 조건에서 필터를 삭제하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/wafv2/에서 AWS WAF 콘솔을 엽니다.

    탐색 창에 AWS WAF Classic으로 전환이 표시되면 그것을 선택하십시오.

  2. 탐색 창에서 [String and regex matching]을 선택합니다.

  3. 삭제하려는 필터가 있는 조건의 명칭을 선택합니다.

  4. 삭제하려는 필터 옆의 상자를 선택합니다.

  5. [Delete filter]를 선택합니다.

정규식 매칭 조건을 삭제하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/wafv2/에서 AWS WAF 콘솔을 엽니다.

    탐색 창에 AWS WAF Classic으로 전환이 표시되면 그것을 선택하십시오.

  2. 정규식 조건에서 필터를 삭제합니다. 해당 지침은 기존의 정규식 매칭 조건에서 필터를 삭제하려면을 참조하세요.

  3. 정규식 매칭 조건을 사용하고 있는 규칙에서 해당 조건을 제거합니다.

    1. 탐색 창에서 규칙을 선택합니다.

    2. 삭제하려는 정규식 매칭 조건을 사용하고 있는 규칙의 명칭을 선택합니다.

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

    4. 삭제하려는 조건 옆의 [X]를 선택합니다.

    5. 업데이트를 선택합니다.

    6. 삭제하려는 정규식 매칭 조건을 사용하고 있는 나머지 모든 규칙에 대해 반복합니다.

  4. 탐색 창에서 [String and regex matching]을 선택합니다.

  5. 삭제하려는 조건 옆의 버튼을 선택합니다.

  6. Delete(삭제)를 선택합니다.

기존의 정규식 매칭 조건에 필터를 추가하거나 변경하려면

정규식 매칭 조건 하나에 필터 한 개만 허용됩니다. 필터를 추가하거나 변경하려면 먼저 기존 필터를 삭제해야 합니다.

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

    탐색 창에 AWS WAF Classic으로 전환이 표시되면 그것을 선택하십시오.

  2. 변경하려는 정규식 조건에서 필터를 삭제합니다. 해당 지침은 기존의 정규식 매칭 조건에서 필터를 삭제하려면을 참조하세요.

  3. 탐색 창에서 [String and regex matching]을 선택합니다.

  4. 변경하려는 조건의 명칭을 선택합니다.

  5. [Add filter]를 선택합니다.

  6. 새 필터에 대한 적절한 값을 입력한 후 [Add]를 선택합니다.