Azure Front Door용 WAF를 사용하여 IP 제한 규칙 구성

이 문서에서는 Azure Portal, Azure CLI, Azure PowerShell 또는 Azure Resource Manager 템플릿을 사용하여 Azure Front Door용 WAF(웹 애플리케이션 방화벽)에서 IP 제한 규칙을 구성하는 방법을 보여줍니다.

IP 주소 기반 액세스 제어 규칙은 웹 애플리케이션에 대한 액세스를 제어할 수 있는 사용자 지정 WAF 규칙입니다. 규칙은 CIDR(Classless Interdomain Routing) 형식으로 IP 주소나 IP 주소 범위의 목록을 지정합니다.

IP 주소 일치에는 RemoteAddrSocketAddr 등 두 가지 형식의 일치 변수가 있습니다. RemoteAddr 변수는 일반적으로 X-Forwarded-For 요청 헤더를 통해 전송되는 원래 클라이언트 IP입니다. SocketAddr 변수는 WAF에서 확인하는 원본 IP 주소입니다. 사용자가 프록시 뒤에 있는 경우 SocketAddr이 프록시 서버 주소인 경우가 많습니다.

기본적으로 인터넷에서 웹 애플리케이션에 액세스할 수 있습니다. 알려진 IP 주소나 IP 주소 범위의 목록에서 클라이언트에 대한 액세스 권한을 제한하려면 IP 주소 목록이 일치 값으로 포함되어 있으며 연산자가 Not(부정이 true)으로 설정되고 동작이 Block으로 설정된 IP 일치 규칙을 만들면 됩니다. IP 제한 규칙이 적용되면 이 허용 목록 이외의 주소에서 발생한 요청은 403 Forbidden 응답을 수신합니다.

Azure Portal을 사용하여 WAF 정책 구성

Azure Portal을 사용하여 WAF 정책을 구성하려면 다음 단계를 수행합니다.

필수 조건

빠른 시작: 고가용성 글로벌 웹 애플리케이션에 대한 Azure Front Door 만들기에 설명된 지침을 따라 Azure Front Door 프로필을 만듭니다.

WAF 정책 만들기

  1. Azure Portal에서 리소스 만들기를 선택합니다. 검색 서비스 및 마켓플레이스 검색 상자에 웹 애플리케이션 방화벽을 입력하고 Enter 키를 선택합니다. 그런 다음, WAF(Web Application Firewall)를 선택합니다.

  2. 만들기를 실행합니다.

  3. WAF 정책 만들기 페이지에서 다음 값을 사용하여 기본 사항 탭을 완료합니다.

    설정
    정책 글로벌 WAF(Front Door)
    Front Door 계층 Azure Front Door 계층과 일치하도록 프리미엄이나 표준을 선택합니다.
    Subscription 구독을 선택합니다.
    Resource group Azure Front Door가 있는 리소스 그룹을 선택합니다.
    정책 이름 정책 이름을 입력합니다.
    정책 상태 선택됨
    정책 모드 예방
  4. 다음: 관리형 규칙을 선택합니다.

  5. 다음: 정책 설정을 선택합니다.

  6. 사용자 지정 규칙이 적용됐는지 확인할 수 있도록 정책 설정 탭의 차단 응답 본문차단되었습니다.를 입력합니다.

  7. 다음: 사용자 지정 규칙을 선택합니다.

  8. 사용자 지정 규칙 추가를 선택합니다.

  9. 사용자 지정 규칙 추가 페이지에서 다음 테스트 값을 사용하여 사용자 지정 규칙을 만듭니다.

    설정
    사용자 지정 규칙 이름 FdWafCustRule
    상태 Enabled
    규칙 유형 Match
    우선 순위 100
    일치 유형 IP 주소
    일치 변수 SocketAddr
    연산 포함하지 않음
    IP 주소 또는 범위 10.10.10.0/24
    결과 트래픽 거부

    Custom rule

    추가를 선택합니다.

  10. 다음: 연결을 선택합니다.

  11. Front Door 프로필 연결을 선택합니다.

  12. 프런트 엔드 프로필에 프런트 엔드 프로필을 선택합니다.

  13. 도메인에 대해 도메인을 선택합니다.

  14. 추가를 선택합니다.

  15. 검토 + 만들기를 선택합니다.

  16. 정책 유효성 검사를 통과하면 만들기를 선택합니다.

WAF 정책 테스트

  1. WAF 정책 배포가 완료되면 Azure Front Door 프런트 엔드 호스트 이름으로 이동합니다.

  2. 사용자 지정 차단 메시지가 표시되어야 합니다.

    WAF rule test

    참고 항목

    사용자 지정 규칙에서는 규칙이 트리거되도록 보장하기 위해 의도적으로 개인 IP 주소가 사용되었습니다. 실제 배포에서는 특정 상황에 대해 IP 주소를 사용하여 허용거부 규칙을 만듭니다.

Azure CLI를 사용하여 WAF 정책 구성

Azure CLI를 사용하여 WAF 정책을 구성하려면 다음 단계를 수행합니다.

필수 조건

IP 제한 정책 구성을 시작하기 전에 CLI 환경을 설정하고 Azure Front Door 프로필을 만듭니다.

Azure CLI 환경 설정

  1. Azure CLI를 설치하거나 Azure Cloud Shell을 사용합니다. Azure Cloud Shell은 Azure Portal에서 직접 실행할 수 있는 평가판 Bash 셸입니다. Azure CLI가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다. 다음에 나오는 CLI 명령에서 사용해 보세요. 단추를 선택합니다. 그런 다음, 열리는 Cloud Shell 세션에서 Azure 계정에 로그인합니다. 세션이 시작되면 az extension add --name front-door를 입력하여 Azure Front Door 확장을 추가합니다.
  2. Bash에서 로컬로 CLI를 사용하는 중인 경우 az login을 사용하여 Azure에 로그인합니다.

Azure Front Door 프로필 만들기

빠른 시작: 고가용성 글로벌 웹 애플리케이션에 대한 Azure Front Door 만들기에 설명된 지침을 따라 Azure Front Door 프로필을 만듭니다.

WAF 정책 만들기

az network front-door waf-policy create 명령을 사용하여 WAF 정책을 만듭니다. 아래 예제에서 정책 이름 IPAllowPolicyExampleCLI를 고유한 정책 이름으로 바꿉니다.

az network front-door waf-policy create \
  --resource-group <resource-group-name> \
  --subscription <subscription ID> \
  --name IPAllowPolicyExampleCLI

사용자 지정 IP 액세스 제어 규칙 추가

az network front-door waf-policy custom-rule create 명령을 사용하여 생성된 WAF 정책에 대한 사용자 지정 IP 액세스 제어 규칙을 추가합니다.

아래 예제에서 다음을 수행합니다.

  • IPAllowPolicyExampleCLI를 앞에서 만든 고유한 정책으로 바꿉니다.
  • ip-address-range-1, ip-address-range-2를 고유한 범위로 바꿉니다.

먼저, 이전 단계에서 만든 정책에 대해 IP 허용 규칙을 만듭니다.

참고 항목

다음 단계에서 규칙에 일치 조건이 추가되어야 하므로 --defer가 필요합니다.

az network front-door waf-policy rule create \
  --name IPAllowListRule \
  --priority 1 \
  --rule-type MatchRule \
  --action Block \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI --defer

다음으로 규칙에 일치 조건을 추가합니다.

az network front-door waf-policy rule match-condition add \
--match-variable SocketAddr \
--operator IPMatch \
--values "ip-address-range-1" "ip-address-range-2" \
--negate true \
--name IPAllowListRule \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI

WAF 정책의 ID 찾기

az network front-door waf-policy show 명령을 사용하여 WAF 정책의 ID를 찾습니다. 다음 예제의 IPAllowPolicyExampleCLI를 앞에서 만든 고유한 정책으로 바꿉니다.

az network front-door  waf-policy show \
  --resource-group <resource-group-name> \
  --name IPAllowPolicyExampleCLI

az network front-door update 명령을 사용하여 Azure Front Door WebApplicationFirewallPolicyLink ID를 정책 ID로 설정합니다. IPAllowPolicyExampleCLI를 앞에서 만든 고유한 정책으로 바꿉니다.

az network front-door update \
  --set FrontendEndpoints[0].WebApplicationFirewallPolicyLink.id=/subscriptions/<subscription ID>/resourcegroups/resource-group-name/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/IPAllowPolicyExampleCLI \
  --name <frontdoor-name> \
  --resource-group <resource-group-name>

이 예제에서는 WAF 정책이 FrontendEndpoints[0]에 적용됩니다. WAF 정책을 임의의 프런트 엔드에 연결할 수 있습니다.

참고 항목

WAF 정책을 Azure Front Door 프런트 엔드에 연결하려면 WebApplicationFirewallPolicyLink 속성을 한 번만 설정해야 합니다. 이후의 정책 업데이트는 프런트 엔드에 자동으로 적용됩니다.

Azure PowerShell을 사용하여 WAF 정책 구성

Azure PowerShell을 사용하여 WAF 정책을 구성하려면 다음 단계를 수행합니다.

필수 조건

IP 제한 정책 구성을 시작하기 전에 PowerShell 환경을 설정하고 Azure Front Door 프로필을 만듭니다.

PowerShell 환경 설정

Azure PowerShell은 Azure Resource Manager 모델을 사용하여 Azure 리소스를 관리하는 cmdlet 세트를 제공합니다.

로컬 머신에 Azure PowerShell 설치하고 모든 PowerShell 세션에서 사용할 수 있습니다. 페이지의 지침을 따라 Azure 자격 증명을 사용하여 PowerShell에 로그인한 다음, Az 모듈을 설치합니다.

  1. 다음 명령을 사용하여 Azure에 연결한 다음, 대화형 대화 상자를 사용하여 로그인합니다.

    Connect-AzAccount
    
  2. Azure Front Door 모듈을 설치하기 전에 현재 버전의 PowerShellGet 모듈이 설치되어 있는지 확인합니다. 다음 명령을 실행한 다음, PowerShell을 다시 엽니다.

    Install-Module PowerShellGet -Force -AllowClobber
    
  3. 다음 명령을 사용하여 Az.FrontDoor 모듈을 설치합니다.

    Install-Module -Name Az.FrontDoor
    

Azure Front Door 프로필 만들기

빠른 시작: 고가용성 글로벌 웹 애플리케이션에 대한 Front Door 만들기에 설명된 지침에 따라 Azure Front Door 프로필을 만듭니다.

IP 일치 조건 정의

New-AzFrontDoorWafMatchConditionObject 명령을 사용하여 IP 일치 조건을 정의합니다. 다음 예제에서는 ip-address-range-1, ip-address-range-2를 고유한 범위로 바꿉니다.

$IPMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable  SocketAddr `
-OperatorProperty IPMatch `
-MatchValue "ip-address-range-1", "ip-address-range-2"
-NegateCondition 1

사용자 지정 IP 허용 규칙 만들기

New-AzFrontDoorWafCustomRuleObject 명령을 사용하여 동작을 정의하고 우선 순위를 설정합니다. 다음 예제에서는 목록과 일치하는 클라이언트 IP에서 생성되지 않은 요청이 차단됩니다.

$IPAllowRule = New-AzFrontDoorWafCustomRuleObject `
-Name "IPAllowRule" `
-RuleType MatchRule `
-MatchCondition $IPMatchCondition `
-Action Block -Priority 1

WAF 정책 구성

Get-AzResourceGroup을 사용하여 Azure Front Door 프로필이 포함된 리소스 그룹의 이름을 찾습니다. 그런 다음, New-AzFrontDoorWafPolicy를 사용하여 IP 규칙으로 WAF 정책을 구성합니다.

  $IPAllowPolicyExamplePS = New-AzFrontDoorWafPolicy `
    -Name "IPRestrictionExamplePS" `
    -resourceGroupName <resource-group-name> `
    -Customrule $IPAllowRule`
    -Mode Prevention `
    -EnabledState Enabled

기존 WAF 정책의 경우 Update-AzFrontDoorWafPolicy를 사용하여 정책을 업데이트할 수 있습니다.

WAF 정책 개체를 기존 프런트 엔드 호스트에 연결하고 Azure Front Door 속성을 업데이트합니다. 먼저 Get-AzFrontDoor를 사용하여 Azure Front Door 개체를 검색합니다. 다음으로 Set-AzFrontDoor 명령을 사용하여 WebApplicationFirewallPolicyLink 속성을 이전 단계에서 만든 $IPAllowPolicyExamplePS의 리소스 ID로 설정합니다.

  $FrontDoorObjectExample = Get-AzFrontDoor `
    -ResourceGroupName <resource-group-name> `
    -Name $frontDoorName
  $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
  Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

참고 항목

이 예제에서는 WAF 정책이 FrontendEndpoints[0]에 적용됩니다. WAF 정책을 임의의 프런트 엔드에 연결할 수 있습니다. WAF 정책을 Azure Front Door 프런트 엔드에 연결하려면 WebApplicationFirewallPolicyLink 속성을 한 번만 설정해야 합니다. 이후의 정책 업데이트는 프런트 엔드에 자동으로 적용됩니다.

Resource Manager 템플릿으로 WAF 정책 구성

사용자 지정 IP 제한 규칙을 사용하여 Azure Front Door 정책과 WAF 정책을 만드는 템플릿을 보려면 GitHub로 이동합니다.

다음 단계

Azure Front Door 프로필을 만드는 방법을 알아봅니다.