다음을 통해 공유


Azure Front Door 제외 목록을 사용하는 Web Application Firewall

경우에 따라 Azure Front Door의 Azure Web Application Firewall이 합법적인 요청을 차단할 수 있습니다. WAF(웹 애플리케이션 방화벽) 튜닝의 일환으로 애플리케이션에 대한 요청을 허용하도록 WAF를 구성할 수 있습니다. WAF 제외 목록을 사용하면 WAF 평가에서 특정 요청 특성을 생략할 수 있습니다. 나머지 요청은 정상으로 평가됩니다.

예를 들어 Microsoft Entra ID는 인증에 사용되는 토큰을 제공합니다. 이러한 토큰이 요청 헤더에 사용되는 경우 하나 이상의 WAF 규칙에 의해 가양성 검색을 트리거할 수 있는 특수 문자를 포함할 수 있습니다. 헤더를 제외 목록에 추가할 수 있습니다. 이 헤더는 헤더를 무시하도록 WAF에 지시합니다. WAF는 여전히 의심스러운 콘텐츠에 대한 요청의 나머지 부분을 검사합니다.

제외 범위

제외는 다음 범위에서 만들 수 있습니다.

  • 규칙 집합: 이러한 제외는 규칙 집합 내의 모든 규칙에 적용됩니다.
  • 규칙 그룹: 이러한 제외는 규칙 집합 내 특정 범주의 모든 규칙에 적용됩니다. 예를 들어 모든 SQL 삽입 규칙에 적용되는 제외를 구성할 수 있습니다.
  • 규칙: 이러한 제외는 단일 규칙에 적용됩니다.

제외 선택기

제외 선택기는 제외가 적용되는 요청 부분을 식별합니다. WAF는 요청의 지정된 부분에서 찾은 모든 검색을 무시합니다. 단일 제외에서 여러 개의 제외 선택기를 지정할 수 있습니다.

각 제외 선택기에서 일치 변수, 연산자 및 선택기를 지정했습니다.

일치 변수

제외에 다음 요청 특성을 추가할 수 있습니다.

  • 요청 헤더 이름
  • 요청 쿠키 이름
  • 쿼리 문자열 인수 이름
  • 요청 본문 POST 인수 이름
  • 요청 본문 JSON 인수 이름(DRS 2.0 이상에서 지원됨)

사용하는 필드의 값은 WAF 규칙에 따라 평가되지 않지만 해당 이름은 평가됩니다. 제외 목록은 필드 값 검사를 사용하지 않도록 설정합니다. 그러나 필드 이름은 계속 평가됩니다. 자세한 내용은 다른 요청 특성 제외를 참조하세요.

연산자

일치시킬 정확한 요청 헤더, 본문, 쿠키 또는 쿼리 문자열 특성을 지정할 수 있습니다. 필요한 경우 부분 일치를 지정할 수도 있습니다. 일치 조건에 지원되는 연산자는 다음과 같습니다.

  • 같음: 지정된 선택기 값과 정확히 일치하는 모든 요청 필드를 일치시킵니다. 예를 들어 bearerToken이라는 헤더를 선택하려면 선택기가 bearerToken으로 설정된 Equals 연산자를 사용합니다.
  • 시작: 지정된 선택기 값으로 시작하는 모든 요청 필드를 일치시킵니다.
  • : 지정된 선택기 값으로 끝나는 모든 요청 필드를 일치시킵니다.
  • 포함: 지정된 선택기 값을 포함하는 모든 요청 필드를 일치시킵니다.
  • 모두 같음: 모든 요청 필드를 일치시킵니다. Equals any 연산자를 사용하면 선택기 값이 자동으로 *로 설정됩니다. 예를 들어 Equals any 연산자를 사용하여 모든 요청 헤더에 적용되는 제외를 구성할 수 있습니다.

대/소문자 구분

헤더 및 쿠키 이름은 대/소문자를 구분하지 않습니다. 쿼리 문자열, POST 인수 및 JSON 인수는 대/소문자를 구분합니다.

본문 내용 검사

관리되는 규칙 중 일부는 POST 인수 또는 JSON 인수로 구문 분석되기 전에 요청 본문의 원시 페이로드를 평가합니다. 따라서 경우에 따라 matchVariableName 값이 InitialBodyContents 또는 DecodedInitialBodyContents인 로그 항목이 표시될 수 있습니다.

예를 들어 Request body POST args의 일치 변수와 FOO라는 POST 인수를 식별하고 무시하는 선택기를 사용하여 제외를 만든다고 가정합니다. matchVariableName 값이 PostParamValue:FOO인 로그 항목이 더 이상 표시되지 않습니다. 그러나 규칙을 트리거하는 텍스트가 FOO라는 POST 인수에 포함되면 로그에 초기 본문 내용의 검색이 표시될 수 있습니다. 현재 초기 본문 내용에 대한 제외를 만들 수 없습니다.

Azure Web Application Firewall 로그를 기반으로 하는 제외 규칙 정의

로그를 사용하여 규칙을 트리거한 요청 부분을 포함하여 차단된 요청의 세부 정보를 볼 수 있습니다. 자세한 내용은 Azure Web Application Firewall 모니터링 및 로깅을 참조하세요.

경우에 따라 특정 WAF 규칙은 요청 본문의 요청 헤더, 쿠키, POST 인수, 쿼리 문자열 인수 또는 JSON 필드에 포함된 값에서 가양성 검색을 생성합니다. 이러한 가양성 검색이 발생하는 경우 평가에서 요청의 관련 부분을 제외하도록 규칙을 구성할 수 있습니다.

다음 표에서는 WAF 로그의 예제 값과 만들 수 있는 해당 제외 선택기를 보여 줍니다.

WAF 로그에서의 matchVariableName 포털에서 규칙 제외
CookieValue:SOME_NAME 요청 쿠키 이름이 SOME_NAME과 같음
HeaderValue:SOME_NAME 요청 헤더 이름이 SOME_NAME과 같음
PostParamValue:SOME_NAME 요청 본문 POST 인수 이름이 SOME_NAME과 같음
QueryParamValue:SOME_NAME 쿼리 문자열 인수 이름이 SOME_NAME과 같음
JsonValue:SOME_NAME 요청 본문 JSON 인수 이름이 SOME_NAME과 같음

JSON 요청 본문에 대한 제외

DRS 버전 2.0부터 JSON 요청 본문은 WAF에서 검사됩니다. 예를 들어 다음 JSON 요청 본문을 고려합니다.

{
  "posts": [
    {
      "id": 1,
      "comment": ""
    },
    {
      "id": 2,
      "comment": "\"1=1\""
    }
  ]
}

요청에는 WAF에서 잠재적인 SQL 삽입 공격으로 검색하는 SQL 주석 문자 시퀀스가 ​​포함됩니다.

요청이 합법적인 것으로 확인되면 Request body JSON args name의 일치 변수, Equals의 연산자 및 posts.comment의 선택기를 사용하여 제외를 만들 수 있습니다.

다른 요청 특성 제외

위 표에 없는 WAF 로그 항목에 matchVariableName 값이 표시되면 제외를 만들 수 없습니다. 예를 들어 현재 쿠키 이름, 헤더 이름, POST 매개 변수 이름 또는 쿼리 매개 변수 이름에 대한 제외를 만들 수 없습니다.

대신 다음 작업 중 하나를 수행하는 것이 좋습니다.

  • 가양성을 제공하는 규칙을 사용하지 않도록 설정합니다.
  • 이러한 요청을 명시적으로 허용하는 사용자 지정 규칙을 만듭니다. 요청은 모든 WAF 검사를 무시합니다.

특히 matchVariableName 값이 CookieName, HeaderName, PostParamName 또는 QueryParamName인 경우 해당 값이 아닌 필드 이름이 규칙을 트리거했음을 의미합니다. 현재 규칙 제외는 이러한 matchVariableName 값을 지원하지 않습니다.

다음 단계