다음을 통해 공유


Web Application Firewall 요청 및 파일 업로드 크기 제한

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

Important

요청 본문 크기, 파일 업로드 크기 및 요청 본문 검사를 더 효과적으로 제어할 수 있는 핵심 규칙 집합 3.2 이상을 실행하는 Application Gateway v2 Web Application Firewall에 대한 새로운 기능을 배포하는 중입니다. 핵심 규칙 집합 3.2 이상이 포함된 Application Gateway v2 Web Application Firewall을 실행 중이고 크기 제한으로 인해 요청이 거부되는 경우(또는 거부되지 않는 경우) 이 페이지 하단의 문제 해결 단계를 참조하세요.

제한

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

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

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

참고 항목

핵심 규칙 집합 3.2 이상을 실행 중이고 요청 헤더, 쿠키 또는 URI의 콘텐츠에 따라 조치를 취하는 우선 순위가 높은 사용자 지정 규칙이 있는 경우 이는 최대 요청 크기, 최대 파일 업로드 크기, 제한보다 우선 적용됩니다. 이 최적화를 통해 Web Application Firewall은 전체 요청을 먼저 읽을 필요가 없는 우선 순위가 높은 사용자 지정 규칙을 실행할 수 있습니다.

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

요청 본문 검사

Web Application Firewall은 요청 본문 검사를 사용하거나 사용하지 않도록 설정하는 구성 설정을 제공합니다. 요청 본문 검사는 기본적으로 사용됩니다. 요청 본문 검사가 사용하지 않도록 설정된 경우 Web Application Firewall은 HTTP 메시지 본문의 콘텐츠를 평가하지 않습니다. 이러한 경우 Web Application Firewall은 헤더, 쿠키 및 URI에 Web Application Firewall 규칙을 계속 적용합니다. 핵심 규칙 집합 3.1 이하를 실행하는 Web Application Firewall에서 요청 본문 검사가 꺼진 경우 최대 요청 본문 크기 필드가 적용되지 않으며 설정할 수 없습니다.

핵심 규칙 집합 3.2 이상을 실행하는 정책 Web Application Firewall의 경우 요청 본문 검사는 요청 본문 크기 적용 및 파일 업로드 크기 제한과 관계없이 사용하거나 사용하지 않도록 설정할 수 있습니다. 또한 핵심 규칙 집합 3.2 이상을 실행하는 정책 Web Application Firewall은 최대 요청 본문 크기와 관계없이 최대 요청 본문 검사 제한을 설정할 수 있습니다. 최대 요청 본문 검사 제한은 Web Application Firewall이 규칙을 검사하고 적용해야 하는 요청의 세부 사항을 알려 줍니다. 이 필드에 더 낮은 값을 설정하면 Web Application Firewall 성능이 개선될 수 있지만 검사되지 않은 악성 콘텐츠가 Web Application Firewall을 통과하도록 허용할 수 있습니다.

핵심 규칙 집합 3.1 이하를 실행하는 이전 Web Application Firewall의 경우 요청 본문 검사를 끄면 128KB보다 큰 메시지를 Web Application Firewall로 보낼 수 있지만 메시지 본문에 취약성이 검사되지는 않습니다. 핵심 규칙 집합 3.2 이상을 실행하는 정책 Web Application Firewall의 경우 최대 요청 본문 제한을 사용하지 않도록 설정하여 동일한 결과를 얻을 수 있습니다.

Web Application Firewall이 크기 제한을 초과하는 요청을 받으면 동작은 Web Application Firewall의 모드와 사용하는 관리 규칙 집합의 버전에 따라 달라집니다.

  • Web Application Firewall 정책이 방지 모드에 있으면 Web Application Firewall은 크기 제한을 초과하는 요청과 파일 업로드를 기록하고 차단합니다.
  • Web Application Firewall 정책이 검색 모드에 있으면 Web Application Firewall은 지정된 제한까지 본문을 검사하고 나머지는 무시합니다. Content-Length 헤더가 있고 파일 업로드 제한보다 큰 경우 Web Application Firewall은 전체 본문을 무시하고 요청을 기록합니다.

문제 해결

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

요청 본문 검사 적용

  • PowerShell: "RequestBodyCheck"
  • CLI: "request_body_check"
  • Web Application Firewall이 요청 본문을 검사하고 Web Application Firewall 정책 설정에 따라 요청 본문 트래픽에 관리 및 사용자 지정 규칙을 적용하는지 여부를 제어합니다.

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

  • PowerShell: "RequestBodyInspectLimitInKB"
  • CLI: "request_body_inspect_limit_in_kb"
  • Web Application Firewall이 요청 본문을 얼마나 깊이 검사하고 관리/사용자 지정 규칙을 적용하는지 제어합니다. 일반적으로 이 설정을 가능한 최댓값으로 설정하려고 하지만 일부 고객은 성능 개선을 위해 더 낮은 값으로 설정하기를 원할 수도 있습니다.

최대 요청 본문 제한 적용

  • PowerShell: "RequestBodyEnforcement"
  • CLI: "request_body_enforcement"
  • Web Application Firewall이 요청 본문에 최대 크기 제한을 적용하는지 여부를 제어합니다. 꺼져 있으면 너무 크다는 이유로 요청을 거부하지 않습니다.

최대 요청 본문 크기(KB)

  • PowerShell: "MaxRequestBodySizeInKB"
  • CLI: "max_request_body_size_in_kb"
  • Web Application Firewall이 최대 크기 설정을 초과하여 요청을 거부하기 전까지 요청 본문의 크기를 제어합니다.

최대 파일 업로드 제한 적용

  • PowerShell: "FileUploadEnforcement"
  • CLI: "file_upload_enforcement"
  • Web Application Firewall이 파일 업로드에 대한 최대 크기 제한을 적용하는지 여부를 제어합니다. 꺼져 있으면 너무 크다는 이유로 요청을 거부하지 않습니다.

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

  • PowerShell: "FileUploadLimitInMB"
  • CLI: file_upload_limit_in_mb
  • 최대 크기 설정을 초과하여 Web Application Firewall이 파일 업로드를 거부하기 전까지 파일 업로드 크기를 제어합니다.

참고 항목

"요청 본문 검사"는 이전에 요청 본문이 검사되고 규칙이 적용되었는지 여부는 물론 요청 본문에 최대 크기 제한이 적용되었는지 여부를 제어했습니다. 이제 이는 독립적으로 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='128' policySettings.max_request_body_size_in_kb='128' policySettings.file_upload_limit_in_mb='100' --query policySettings -o table

출력:

FileUploadEnforcement    FileUploadLimitInMb    MaxRequestBodySizeInKb    Mode       RequestBodyCheck    RequestBodyEnforcement    RequestBodyInspectLimitInKB    State
-----------------------  ---------------------  ------------------------  ---------  ------------------  ------------------------  -----------------------------  -------
True                     100                   128                      Detection  True                True                      128                           Enabled

다음 단계