Share via


웹 애플리케이션 방화벽 요청 및 파일 업로드 크기 제한

웹 애플리케이션 방화벽을 사용하면 하한 및 상한 내에서 요청 크기 제한을 구성할 수 있습니다. 핵심 규칙 집합 3.2 이상을 실행하는 Application Gateways 웹 애플리케이션 방화벽에는 요청 및/또는 파일 업로드에 대한 최대 크기 적용을 사용하지 않도록 설정하는 기능을 포함하여 더 많은 요청 및 파일 업로드 크기 컨트롤이 있습니다.

Important

요청 본문 크기, 파일 업로드 크기 및 요청 본문 검사를 보다 쉽게 제어할 수 있도록 핵심 규칙 집합 3.2 이상을 실행하는 Application Gateway v2 웹 애플리케이션 방화벽에 대한 새로운 기능을 배포하는 중입니다. 핵심 규칙 집합 3.2 이상을 사용하여 Application Gateway v2 웹 애플리케이션 방화벽을 실행하고 크기 제한에 대한 요청이 거부되거나 거부되지 않는 경우 이 페이지 아래쪽의 문제 해결 단계를 참조하세요.

제한

요청 본문 크기 필드와 파일 업로드 크기 제한은 모두 웹 애플리케이션 방화벽 내에서 구성할 수 있습니다. KB(킬로바이트) 단위로 지정되는 최대 요청 본문 크기 필드는 파일 업로드를 제외한 전체 요청 크기 제한을 제어합니다. 파일 업로드 제한 필드는 메가바이트 단위로 지정되며 허용되는 최대 파일 업로드 크기를 제어합니다. 요청 크기 제한 및 파일 업로드 크기 제한은 Application Gateway 제한을 참조 하세요.

핵심 규칙 집합 3.2 이상을 실행하는 Application Gateway v2 웹 애플리케이션 방화벽의 경우 최대 요청 본문 크기 적용 및 최대 파일 업로드 크기 적용을 사용하지 않도록 설정할 수 있으며 웹 애플리케이션 방화벽은 너무 커서 더 이상 요청 또는 파일 업로드를 거부하지 않습니다. 웹 애플리케이션 방화벽 내에서 최대 요청 본문 크기 적용 및 최대 파일 업로드 크기 적용을 사용하지 않도록 설정하면 Application Gateway의 제한에 따라 허용되는 최대 크기가 결정됩니다. 자세한 내용은 Application Gateway 제한을 참조 하세요.

콘텐츠 유형이 multipart/form-data인 요청만 파일 업로드에 고려됩니다. 콘텐츠가 파일 업로드로 간주되려면 filename 헤더가 있는 멀티파트 형식의 일부여야 합니다. 다른 모든 콘텐츠 형식의 경우 요청 본문 크기 제한이 적용됩니다.

참고 항목

핵심 규칙 집합 3.2 이상을 실행하고 있으며 요청 헤더, 쿠키 또는 URI의 내용에 따라 작업을 수행하는 우선 순위가 높은 사용자 지정 규칙이 있는 경우 이는 최대 요청 크기 또는 최대 파일 업로드 크기, 제한보다 우선합니다. 이 최적화를 통해 웹 애플리케이션 방화벽은 먼저 전체 요청을 읽을 필요가 없는 높은 우선 순위의 사용자 지정 규칙을 실행할 수 있습니다.

예: 헤더 xyz를 사용하여 요청을 허용하도록 우선 순위가 0(가장 높은 우선 순위)인 사용자 지정 규칙이 있는 경우 요청 크기가 최대 요청 크기 제한보다 크더라도 최대 크기 제한이 적용되기 전에 허용됩니다.

요청 본문 검사

웹 애플리케이션 방화벽은 요청 본문 검사를 사용하거나 사용하지 않도록 설정하는 구성 설정을 제공합니다. 요청 본문 검사는 기본적으로 사용됩니다. 요청 본문 검사를 사용하지 않도록 설정하면 웹 애플리케이션 방화벽은 HTTP 메시지 본문의 내용을 평가하지 않습니다. 이러한 경우 웹 애플리케이션 방화벽은 헤더, 쿠키 및 URI에 웹 애플리케이션 방화벽 규칙을 계속 적용합니다. 핵심 규칙 집합 3.1 이하를 실행하는 웹 애플리케이션 방화벽에서 요청 본문 검사가 꺼져 있으면 최대 요청 본문 크기 필드를 적용할 수 없으며 설정할 수 없습니다.

핵심 규칙 집합 3.2 이상을 실행하는 정책 웹 애플리케이션 방화벽의 경우 요청 본문 크기 적용 및 파일 업로드 크기 제한과는 별도로 요청 본문 검사를 사용하거나 사용하지 않도록 설정할 수 있습니다. 또한 핵심 규칙 집합 3.2 이상을 실행하는 정책 웹 애플리케이션 방화벽은 최대 요청 본문 크기와 독립적으로 최대 요청 본문 검사 제한을 설정할 수 있습니다. 최대 요청 본문 검사 제한은 웹 애플리케이션 방화벽이 규칙을 검사하고 적용해야 하는 요청의 깊이를 알려줍니다. 이 필드에 대해 더 낮은 값을 설정하면 웹 애플리케이션 방화벽 성능이 향상될 수 있지만 검색되지 않은 악성 콘텐츠가 웹 애플리케이션 방화벽을 통과하도록 허용할 수 있습니다.

핵심 규칙 집합 3.1 이하를 실행하는 이전 웹 애플리케이션 방화벽의 경우 요청 본문 검사를 해제하면 128KB보다 큰 메시지를 웹 애플리케이션 방화벽으로 보낼 수 있지만 메시지 본문은 취약성을 검사하지 않습니다. 핵심 규칙 집합 3.2 이상을 실행하는 정책 웹 애플리케이션 방화벽의 경우 최대 요청 본문 제한을 사용하지 않도록 설정하여 동일한 결과를 얻을 수 있습니다.

웹 애플리케이션 방화벽이 크기 제한을 초과한 요청을 받으면 동작은 웹 애플리케이션 방화벽의 모드 및 사용하는 관리되는 규칙 집합의 버전에 따라 달라집니다.

  • 웹 애플리케이션 방화벽 정책이 방지 모드인 경우 웹 애플리케이션 방화벽은 크기 제한을 초과한 요청 및 파일 업로드를 기록하고 차단합니다.
  • 웹 애플리케이션 방화벽 정책이 검색 모드에 있는 경우 웹 애플리케이션 방화벽은 지정된 제한까지 본문을 검사하고 나머지는 무시합니다. 헤더가 Content-Length 있고 파일 업로드 제한보다 큰 경우 웹 애플리케이션 방화벽은 전체 본문을 무시하고 요청을 기록합니다.

문제 해결

핵심 규칙 집합 3.2 이상을 실행하는 Application Gateway v2 웹 애플리케이션 방화벽 고객이 요청 또는 파일 업로드에 문제가 있거나, 최대 크기에 대해 잘못 거부되거나, 요청이 완전히 검사되지 않는 경우 모든 값이 올바르게 설정되었는지 확인해야 할 수 있습니다. PowerShell 또는 Azure 명령줄 인터페이스를 사용하여 각 값이 설정되었는지 확인하고 필요에 따라 값을 업데이트할 수 있습니다.

요청 본문 검사 적용

  • PS: "RequestBodyCheck"
  • CLI: "request_body_검사"
  • 웹 애플리케이션 방화벽이 요청 본문을 검사하고 웹 애플리케이션 방화벽 정책의 설정에 따라 요청 본문 트래픽에 관리 및 사용자 지정 규칙을 적용할지를 제어합니다.

최대 요청 본문 검사 제한(KB)

  • PS: "RequestBodyInspectLimitInKB"
  • CLI: "request_body_inspect_limit_in_kb"
  • 웹 애플리케이션 방화벽이 관리/사용자 지정 규칙을 검사하고 적용할 요청 본문의 심층적인 정도를 제어합니다. 일반적으로 이를 가능한 최대 설정으로 설정하려고 하지만 일부 고객은 성능을 향상시키기 위해 더 낮은 값으로 설정하려고 할 수 있습니다.

최대 요청 본문 제한 적용

  • PS: "RequestBodyEnforcement"
  • CLI: "request_body_enforcement"
  • 웹 애플리케이션 방화벽이 요청 본문에 최대 크기 제한을 적용할지 제어합니다. 끄면 너무 큰 요청을 거부하지 않습니다.

최대 요청 본문 크기(KB)

  • PS: "MaxRequestBodySizeInKB"
  • CLI: "max_request_body_size_in_kb"
  • 웹 애플리케이션 방화벽이 최대 크기 설정을 초과하여 거부하기 전에 요청 본문의 크기를 제어합니다.

최대 파일 업로드 제한 적용

  • PS: "FileUploadEnforcement"
  • CLI: "file_upload_enforcement"
  • 웹 애플리케이션 방화벽이 파일 업로드에 최대 크기 제한을 적용할지 제어합니다. 끄면 너무 큰 파일 업로드를 거부하지 않습니다.

최대 파일 업로드 크기(MB)

  • PS: "FileUploadLimitInMB"
  • CLI: file_upload_limit_in_mb
  • 웹 애플리케이션 방화벽이 최대 크기 설정을 초과하여 파일 업로드를 거부하기 전에 파일 업로드 크기를 제어합니다.

참고 항목

이전에 요청 본문을 검사하고 규칙이 적용되었는지와 요청 본문에 최대 크기 제한이 적용되었는지를 제어한 "요청 본문 검사" 입니다. 이제 ON/OFF를 독립적으로 설정할 수 있는 두 개의 별도 필드에 의해 처리됩니다.

PowerShell

다음 PowerShell 명령을 사용하여 Azure 정책을 반환하고 현재 설정을 확인할 수 있습니다.

$plcy = Get-AzApplicationGatewayFirewallPolicy -Name <policy-name> -ResourceGroupName <resourcegroup-name>
$plcy.PolicySettings

이러한 명령을 사용하여 검사 제한 및 최대 크기 제한 관련 필드에 대한 원하는 값으로 정책 설정을 업데이트할 수 있습니다. 업데이트하려는 다른 값 중 하나에 대해 아래 예제에서 'RequestBodyEnforcement'를 교환할 수 있습니다.

$plcy = Get-AzApplicationGatewayFirewallPolicy -Name <policy-name> -ResourceGroupName <resourcegroup-name>
$plcy.PolicySettings.RequestBodyEnforcement=false
Set-AzApplicationGatewayFirewallPolicy -InputObject $plcy

명령줄 인터페이스

Azure CLI를 사용하여 Azure 정책 설정에서 이러한 필드에 대한 현재 값을 반환하고 이러한 명령을 사용하여 필드를 원하는 값으로 업데이트할 수 있습니다.

az network application-gateway waf-policy update --name <WAF Policy name> --resource-group <WAF policy RG> --set policySettings.request_body_inspect_limit_in_kb='2000' policySettings.max_request_body_size_in_kb='2000' policySettings.file_upload_limit_in_mb='3500' --query policySettings -o table

출력:

FileUploadEnforcement    FileUploadLimitInMb    MaxRequestBodySizeInKb    Mode       RequestBodyCheck    RequestBodyEnforcement    RequestBodyInspectLimitInKB    State
-----------------------  ---------------------  ------------------------  ---------  ------------------  ------------------------  -----------------------------  -------
True                     3500                   2000                      Detection  True                True                      2000                           Enabled

다음 단계