다음을 통해 공유


Azure Front Door의 Azure Web Application Firewall에 대한 사용자 지정 규칙

Azure Front Door의 Azure Web Application Firewall을 사용하면 정의하는 조건에 따라 웹 애플리케이션에 대한 액세스를 제어할 수 있습니다. 사용자 지정 WAF(웹 애플리케이션 방화벽) 규칙은 우선 순위 번호, 규칙 유형, 일치 조건, 작업으로 구성됩니다.

사용자 지정 규칙의 두 가지 유형은 일치 규칙과 속도 제한 규칙입니다. 일치 규칙은 일치 조건 집합에 따라 액세스를 제어합니다. 속도 제한 규칙은 들어오는 요청 속도와 일치 조건에 따라 액세스를 제어합니다. 사용자 지정 규칙을 사용하지 않도록 설정하여 평가를 받지 않으면서 구성은 계속 유지하도록 할 수 있습니다.

속도 제한에 대한 자세한 내용은 Azure Front Door의 속도 제한이란?을 참조하세요.

우선 순위, 작업 유형 및 일치 조건

우선 순위 번호, 규칙 유형, 일치 조건 배열, 작업을 정의하는 사용자 지정 WAF 규칙을 사용하여 액세스를 제어할 수 있습니다.

  • 우선 순위

    WAF 규칙의 평가 순서를 설명하는 고유한 정수입니다. 우선 순위 값이 낮은 규칙은 값이 높은 규칙보다 먼저 평가됩니다. 로그를 제외한 모든 규칙 작업에서 규칙 평가가 중지됩니다. 우선 순위 번호는 모든 사용자 지정 규칙에서 고유해야 합니다.

  • 작업

    WAF 규칙이 일치하는 경우 요청을 라우팅하는 방법을 정의합니다. 다음 작업 중 요청이 사용자 지정 규칙과 일치하는 경우 적용할 작업을 선택할 수 있습니다.

    • Allow: WAF는 요청 처리를 허용하고 WAF 로그에 항목을 기록하고 종료합니다.
    • Block: 요청이 차단됩니다. WAF는 요청을 더 이상 전달하지 않고 클라이언트에 응답을 보냅니다. WAF는 WAF 로그에 항목을 기록하고 종료합니다.
    • Log: WAF는 WAF 로그에 항목을 로그하고 우선 순위에 따라 다음 규칙을 계속 평가합니다.
    • Redirect: WAF는 요청을 지정된 URI로 리디렉션하고, WAF 로그에 항목을 로그하고, 종료합니다.
  • 일치 조건

    일치 변수, 연산자 및 일치 값을 정의합니다. 각 규칙에는 여러 일치 조건이 포함될 수 있습니다. 일치 조건은 지리적 위치, 클라이언트 IP 주소(CIDR), 크기 또는 문자열 일치를 기반으로 할 수 있습니다. 문자열 일치는 일치 변수 목록과 다를 수 있습니다.

    • 일치 변수

      • RequestMethod
      • QueryString
      • PostArgs
      • RequestUri
      • RequestHeader
      • RequestBody
      • 쿠키
    • Operator

      • Any: 일치하는 규칙이 없는 경우 기본 작업을 정의하는 데 종종 사용됩니다. Any는 모두 일치 연산자입니다.
      • 같음
      • 포함
      • LessThan: 크기 제약 조건
      • GreaterThan: 크기 제약 조건
      • LessThanOrEqual: 크기 제약 조건
      • GreaterThanOrEqual: 크기 제약 조건
      • BeginsWith
      • EndsWith
      • Regex
    • Regex

      다음 작업을 지원하지 않습니다.

      • 역참조 및 하위 식 캡처
      • 임의 0 너비 어설션
      • 서브루틴 참조 및 재귀 패턴
      • 조건부 패턴
      • 제어 동사 역추적
      • \C 단일 바이트 지시문
      • \R 줄 바꿈 일치 지시문
      • \K 일치 시작 초기화 지시문
      • 설명선 및 포함된 코드
      • 원자성 그룹화 및 독점적 한정자
    • 부정[선택 사항]

      조건 결과가 부정되어야 하는 경우 negate 조건을 true로 설정할 수 있습니다.

    • 변환[선택 사항]

      일치를 시도하기 전에 실행할 변환 이름이 포함된 문자열의 목록입니다. 다음 변환일 수 있습니다.

      • 대문자
      • 소문자
      • Trim
      • RemoveNulls
      • UrlDecode
      • UrlEncode
    • 일치 값

      지원되는 HTTP 요청 메서드 값은 다음과 같습니다.

      • GET
      • POST
      • PUT
      • HEAD
      • Delete
      • LOCK
      • UNLOCK
      • 프로필
      • OPTIONS
      • PROPFIND
      • PROPPATCH
      • MKCOL
      • 복사
      • MOVE
      • PATCH
      • CONNECT

예제

다음 예제를 고려해 보세요.

HTTP 요청 매개 변수를 기반으로 일치

다음 두 조건과 일치하는 요청을 허용하도록 사용자 지정 규칙을 구성해야 한다고 가정합니다.

  • Referer 헤더의 값이 알려진 값과 같습니다.
  • 쿼리 문자열에 password라는 단어가 포함되어 있지 않습니다.

다음은 사용자 지정 규칙에 대한 JSON 설명의 예입니다.

{
  "name": "AllowFromTrustedSites",
  "priority": 1,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestHeader",
      "selector": "Referer",
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "www.mytrustedsites.com/referpage.html"
      ]
    },
    {
      "matchVariable": "QueryString",
      "operator": "Contains",
      "matchValue": [
        "password"
      ],
      "negateCondition": true
    }
  ],
  "action": "Allow"
}

HTTP PUT 요청 차단

HTTP PUT 메서드를 사용하는 모든 요청을 차단해야 한다고 가정합니다.

다음은 사용자 지정 규칙에 대한 JSON 설명의 예입니다.

{
  "name": "BlockPUT",
  "priority": 2,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestMethod",
      "selector": null,
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "PUT"
      ]
    }
  ],
  "action": "Block"
}

크기 제약 조건

Azure Front Door WAF를 사용하면 들어오는 요청의 일부에 길이 또는 크기 제약 조건을 적용하는 사용자 지정 규칙을 빌드할 수 있습니다. 이 크기 제약 조건은 바이트로 측정됩니다.

URL이 100자보다 긴 요청을 차단해야 한다고 가정합니다.

다음은 사용자 지정 규칙에 대한 JSON 설명의 예입니다.

{
  "name": "URLOver100",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "GreaterThanOrEqual",
      "negateCondition": false,
      "matchValue": [
        "100"
      ]
    }
  ],
  "action": "Block"
}

요청 URI에 따라 일치

URI에 'login'이 포함된 요청을 허용해야 한다고 가정합니다.

다음은 사용자 지정 규칙에 대한 JSON 설명의 예입니다.

{
  "name": "URIContainsLogin",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "Contains",
      "negateCondition": false,
      "matchValue": [
        "login"
      ]
    }
  ],
  "action": "Allow"
}

사용자 지정 규칙 복사 및 복제

사용자 지정 규칙은 지정된 정책 내에서 복제할 수 있습니다. 규칙을 복제할 때는 규칙의 고유한 이름과 고유한 우선 순위 값을 지정해야 합니다. 또한 두 정책이 동일한 구독에 있는 경우 사용자 지정 규칙을 하나의 Azure Front Door WAF 정책에서 다른 정책으로 복사할 수 있습니다. 한 정책에서 다른 정책으로 규칙을 복사할 때 규칙을 복사하려는 Azure Front Door WAF 정책을 선택해야 합니다. WAF 정책을 선택하면 규칙에 고유한 이름을 지정하고 우선 순위를 할당해야 합니다.

다음 단계