고급 네트워크 보호를 위해 Azure Firewall 구성

고급 네트워크 보호를 위해 Azure Firewall 구성

2024년 8월 8일

이 기술 및 교육 문서는 보안 분석가, IT 관리자 및 시스템 엔지니어가 고급 네트워크 보호를 위해 Azure Firewall을 구성하고 사용하도록 안내하는 것을 목표로 합니다. Azure Firewall은 Azure 네트워크 리소스에 대한 계층 4 및 계층 7 위협 보호를 제공하는 관리형 클라우드 기반 네트워크 보안 서비스로, 네트워크 제어를 중앙 집중화하고 클라우드 환경 전반에 걸쳐 일관된 보안 정책을 구현할 수 있습니다[1].

소개

끊임없이 성장하는 클라우드 환경에서 네트워크 보안은 애플리케이션과 데이터를 보호하기 위한 기본 요소입니다. Azure Firewall은 네트워크 트래픽을 검사하고 제어하기 위한 강력한 솔루션을 제공하며 보안 정책 적용의 중앙 지점 역할을 합니다. FQDN(정규화된 도메인 이름) 기반 트래픽 필터링, 위협 인텔리전스, IDPS(침입 감지 및 방지 시스템), TLS 검사와 같은 고급 기능을 제공하여 기본 NSG(네트워크 보안 그룹)를 뛰어넘어 Azure, 특히 허브 앤 스포크 모델[2]의 보안 네트워크 아키텍처에 필수적입니다.

이 실무 가이드에서는 Azure Firewall 배포, 네트워크 및 애플리케이션 규칙 구성, 위협 인텔리전스 및 IDPS 활성화, 다른 Azure 서비스와의 통합, 네트워크 거버넌스 모범 사례를 다룹니다. 독자가 효과적인 네트워크 보호 전략을 구현하고 검증하여 공격 표면을 줄이고 Azure 인프라의 사이버 탄력성을 강화할 수 있도록 단계별 지침, 예제 Azure CLI 명령 및 예제가 제공됩니다.

고급 네트워크 보호에 Azure Firewall이 중요한 이유는 무엇인가요?

  • 고급 트래픽 필터링: IP 주소, 포트, 프로토콜, FQDN 및 URL을 기반으로 네트워크 트래픽을 필터링하여 세부적인 제어를 제공할 수 있습니다.
  • 위협 인텔리전스: Microsoft 위협 인텔리전스 피드를 기반으로 알려진 악성 도메인 및 IP 주소와 주고받는 트래픽을 자동으로 차단합니다.
  • IDPS(침입 탐지 및 예방 시스템): 취약점 악용 및 악성 코드를 포함한 실시간 시그니처 기반 공격을 탐지하고 차단합니다.
  • TLS 검사: 나가는 TLS/SSL 트래픽을 해독하여 숨겨진 위협을 검사하고 보안 정책을 시행하며 대상으로 보내기 전에 다시 암호화합니다.
  • 중앙 집중식 배포: 허브 가상 네트워크에 배포하여 여러 스포크 가상 네트워크를 보호하고 관리 및 정책 시행을 단순화할 수 있습니다.
  • 고가용성 및 확장성: 통합된 고가용성 및 자동 확장성을 갖춘 완전 관리형 서비스로 트래픽 급증을 처리합니다.
  • Azure 생태계 통합: 중앙 집중식 모니터링, 분석 및 관리를 위해 Azure Monitor, Azure Sentinel 및 Azure Firewall Manager와 원활하게 통합됩니다.

전제조건

고급 네트워크 보호를 위해 Azure Firewall을 구성하려면 다음 항목이 필요합니다.

  1. 활성 Azure 구독: 리소스를 생성하고 관리하기 위한 Azure 구독입니다.
  2. 관리 액세스: Azure 구독 또는 방화벽 및 VNet이 배포될 리소스 그룹에서 '소유자' 또는 '기여자' 역할을 가진 계정입니다.
  3. Azure 가상 네트워크(VNet): Azure Firewall 및 이상적으로는 데모용 허브 앤 스포크 아키텍처를 배포하기 위한 하나 이상의 VNet입니다.
  4. 선택 사항: VM(가상 머신): 방화벽 규칙을 테스트하기 위해 스포크 VNet에 배포된 VM입니다.
  5. Azure CLI 또는 Azure PowerShell: Azure와 상호 작용하기 위한 명령줄 도구를 설치하고 구성했습니다.

단계별: 고급 보호를 위해 Azure Firewall 구성

Azure Firewall을 배포하고 주요 기능을 구성해 보겠습니다.

1. 허브 앤 스포크 아키텍처 준비

허브 및 스포크 아키텍처는 허브 VNet에 공유 서비스(예: Azure Firewall)가 포함되고 스포크 VNet에 워크로드가 포함되는 Azure의 일반적인 네트워크 토폴로지입니다. 스포크와 인터넷 사이의 트래픽은 허브를 통해 라우팅됩니다.

  1. 리소스 그룹 생성: 모든 리소스에 대한 리소스 그룹을 생성합니다. ``배쉬 az group create --name RG-Firewall-Artigos --location eastus ````
  2. VN 생성et Hub: Azure Firewall 전용 서브넷('AzureFirewallSubnet')을 사용하여 허브용 VNet을 만듭니다. ``배쉬 az network vnet create --name VNet-Hub --resource-group RG-Firewall-Artigos --address-prefix 10.0.0.0/16 --location eastus az network vnet subnet create --name AzureFirewallSubnet --vnet-name VNet-Hub --resource-group RG-Firewall-Articles --address-prefix 10.0.1.0/24 ````
  3. VNet 스포크 생성: VM용 서브넷을 사용하여 스포크용 VNet을 생성합니다. ``배쉬 az network vnet create --name VNet-Spoke --resource-group RG-Firewall-Artigos --address-prefix 10.1.0.0/16 --location eastus az network vnet subnet create --name WorkloadSubnet --vnet-name VNet-Spoke --resource-group RG-Firewall-Articles --address-prefix 10.1.1.0/24 ````
  4. VNet 피어링 구성: 피어링을 통해 허브 VNet과 스포크 VNet을 연결합니다. ``배쉬 az network vnet Peering create --name HubToSpoke --resource-group RG-Firewall-Articles --vnet-name VNet-Hub --remote-vnet VNet-Spoke --allow-vnet-access az network vnet Peering create --name SpokeToHub --resource-group RG-Firewall-Articles --vnet-name VNet-Spoke --remote-vnet VNet-Hub --allow-vnet-access ````

2. Azure Firewall 배포

  1. Azure Firewall 만들기: 허브 VNet의 'AzureFirewallSubnet'에 Azure Firewall을 배포합니다. ``배쉬 az network Firewall create --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --location eastus --sku 표준 az network Firewall ip-config create --firewall-name AzureFirewall-01 --name AzureFirewall-IP --resource-group RG-Firewall-Articles --vnet-name VNet-Hub --public-ip-address az-firewall-pip ````

    • 참고: 'az network Firewall ip-config create' 명령은 이름(예: 'az-firewall-pip')을 제공하는 경우 방화벽에 대한 공용 IP를 자동으로 만듭니다.
  2. 방화벽 개인 IP 가져오기: Azure Firewall 개인 IP는 라우팅에 사용되므로 기록해 둡니다. ``배쉬 az network Firewall show --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --query ipConfigurations[0].privateIpAddress -o tsv ````

3. Azure Firewall에 대한 라우팅 구성

스포크 VNet 트래픽이 Azure Firewall을 통과하려면 경로 테이블을 만들고 이를 스포크 서브넷과 연결해야 합니다.

  1. 라우팅 테이블 생성: 라우팅 테이블을 생성합니다. ``배쉬 az network Route-table create --name FirewallRouteTable --resource-group RG-Firewall-Artigos --location eastus ````
  2. 기본 경로 추가: 모든 트래픽을 Azure Firewall 개인 IP로 전달하는 기본 경로(0.0.0.0/0)를 추가합니다. ``배쉬 # 를 이전 단계에서 얻은 개인 IP로 바꿉니다. FIREWALL_PRIVATE_IP=$(az network Firewall show --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --query ipConfigurations[0].privateIpAddress -o tsv) az network Route-table Route create --name DefaultRouteToFirewall --resource-group RG-Firewall-Artigos --route-table-name FirewallRouteTable --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address $FIREWALL_PRIVATE_IP ````
  3. 스포크 서브넷에 경로 테이블 연결: 경로 테이블을 VNet-SpokeWorkloadSubnet에 연결합니다. ``배쉬 az network vnet subnet update --name WorkloadSubnet --vnet-name VNet-Spoke --resource-group RG-Firewall-Articles --route-table FirewallRouteTable ````

4. Azure Firewall 규칙 구성

Azure Firewall은 규칙 컬렉션을 사용하여 트래픽을 제어합니다. 규칙에는 '네트워크 규칙', '응용 프로그램 규칙', 'NAT 규칙'의 세 가지 유형이 있습니다.

4.1. 네트워크 규칙

레이어 3 및 레이어 4 트래픽(IP, 포트, 프로토콜)을 제어합니다.

  1. DNS에 대한 아웃바운드 트래픽 허용: 이름 확인에 필수적입니다. ``배쉬 az network Firewall network-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-DNS" --name "Allow-DNS-Outbound" --resource-group RG-Firewall-Articles --priority 100 --action Allow --source-addresses "" --destination-addresses "" --protocols UDP --destination-ports 53 ````

  2. 특정 IP로 나가는 트래픽 허용: 예: 패치 서버에 대한 액세스를 허용합니다. ``배쉬 az network Firewall 네트워크 규칙 생성 --firewall-name AzureFirewall-01 --collection-name "Allow-Patch-Server" --name "Allow-Patch-Server-Outbound" --resource-group RG-Firewall-Articles --priority 110 --action--source-addresses "10.1.1.0/24" --destination-addresses "20.1.2.3" --protocols TCP --destination-ports 443 허용 ````

4.2. 신청 규칙

FQDN을 기반으로 레이어 7 트래픽(HTTP/HTTPS)을 제어합니다.

  1. Microsoft 사이트에 대한 액세스 허용: 예: learn.microsoft.com에 대한 액세스를 허용합니다. ``배쉬 az network Firewall application-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-Microsoft-Sites" --name "Allow-Learn-Microsoft" --resource-group RG-Firewall-Articles --priority 100 --action Allow --source-addresses "10.1.1.0/24" --protocols Http=80 Https=443 --fqdn-tags "Microsoft.Websites" --target-fqdns "learn.microsoft.com" ````

    • : Fqdn-tags는 Microsoft에서 일반 서비스에 대해 사전 정의한 FQDN 그룹입니다.
  2. 악성 웹 사이트에 대한 액세스 차단: 기본적으로 Azure Firewall은 명시적으로 허용되지 않는 모든 것을 차단합니다. 그러나 특정 FQDN에 대해서는 명시적 거부 규칙을 만들 수 있습니다. ``배쉬 az network Firewall application-rule create --firewall-name AzureFirewall-01 --collection-name "Block-Malicious-Sites" --name "Block-Bad-Site" --resource-group RG-Firewall-Articles --priority 200 --action Deny --source-addresses "10.1.1.0/24" --protocols Https=443 --target-fqdns "badsite.com" ````

4.3. NAT(네트워크 주소 변환) 규칙

들어오는 트래픽을 내부 리소스(DNAT - 대상 NAT)로 보낼 수 있습니다.

  1. VM에 대한 외부 RDP 액세스를 허용합니다(주의하세요!): 예: 특정 공용 IP에서 VM에 대한 RDP를 허용합니다. ``배쉬 # 테스트할 WorkloadSubnet에 VM을 만듭니다. az vm create --name TestVM --resource-group RG-Firewall-Articles --image UbuntuLTS --size Standard_B1s --vnet-name VNet-Spoke --subnet WorkloadSubnet --admin-username azureuser --admin-password "P@ssw0rd12345!" --기다리지 마세요

    VM의 개인 IP를 가져옵니다

    VM_PRIVATE_IP=$(az vm show --name TestVM --resource-group RG-Firewall-Artigos --query privateIps -o tsv)

    방화벽 공용 IP를 가져옵니다.

    FIREWALL_PUBLIC_IP=$(az network public-ip show --name az-firewall-pip --resource-group RG-Firewall-Artigos --query ipAddress -o tsv)

    DNAT 규칙을 생성합니다

    az network Firewall nat-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-RDP-Inbound" --name "RDP-to-TestVM" --resource-group RG-Firewall-Articles --priority 100 --action Dnat --source-addresses "YOUR_PUBLIC_IP" --destination-addresses $FIREWALL_PUBLIC_IP --프로토콜 TCP --대상 포트 3389 --번역 주소 $VM_PRIVATE_IP --번역 포트 3389 ```` * 경고: 액세스를 제한하려면 'YOUR_PUBLIC_IP'를 실제 공용 IP 주소로 바꾸세요. DNAT 규칙의 프로덕션에는 "*"를 사용하지 마십시오.

5. Azure Firewall Premium 구성(IDPS 및 TLS 검사)

IDPS 및 TLS 검사와 같은 고급 보호 기능을 사용하려면 Azure Firewall Premium이 필요합니다.

  1. 방화벽 SKU 업그레이드(필요한 경우): 표준 방화벽을 생성한 경우 프리미엄으로 업그레이드할 수 있습니다. ``배쉬 az network Firewall 업데이트 --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --sku Premium ````

  2. TLS 검사 구성: TLS 검사를 위해서는 기업 또는 공용 CA에서 발급하고 Azure Key Vault에 저장된 SSL/TLS 인증서가 필요합니다.

    • 전제 조건: Azure Key Vault 인증(자세한 내용은 Azure Key Vault에 대한 이전 문서 참조).
    • 방화벽 정책을 생성하고 이를 방화벽과 연결합니다. ``배쉬 az 네트워크 방화벽 정책 만들기 --name FirewallPolicy-01 --resource-group RG-Firewall-Artigos --location eastus az network Firewall 정책 업데이트 --name FirewallPolicy-01 --resource-group RG-Firewall-Artigos --threat-intel-mode 경고 az network Firewall 업데이트 --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --firewall-policy FirewallPolicy-01 ````
    • Azure Portal에서 방화벽 정책 -> 설정 -> TLS 검사로 이동합니다.
    • TLS 검사를 활성화하고 Key Vault에 대한 루트 인증서를 선택합니다.
  3. IDPS 구성: IDPS는 방화벽 정책을 통해 활성화되고 구성됩니다.

    • Azure Portal에서 '방화벽 정책' -> 설정 -> IDPS로 이동합니다.
    • IDPS 모드(경고 또는 경고 및 거부)를 구성하고 사용자 정의 IDPS 서명 규칙을 생성할 수 있습니다.

6. 지능 활성화위협의

Azure Firewall 위협 인텔리전스는 알려진 악성 IP 주소 및 FQDN과의 트래픽을 '경고' 또는 '경고 및 거부'하도록 구성할 수 있습니다.

  1. Azure Portal에서 Azure Firewall(AzureFirewall-01)로 이동합니다.
  2. 왼쪽 탐색 창에서 위협 인텔리전스를 선택합니다.
  3. '모드'를 '경고 및 거부'로 설정합니다.

검증 및 테스트

보안 정책이 올바르게 적용되고 있는지 확인하려면 Azure Firewall 구성의 유효성을 검사하는 것이 중요합니다.

1. 네트워크 규칙 테스트

  1. DNS 연결 테스트: WorkloadSubnet의 VM에서 도메인 이름 확인을 시도합니다. DNS 규칙이 구성된 경우 작동합니다. ``배쉬 nslookup google.com ````

    • 예상 결과: DNS 확인에 성공했습니다.
  2. 포트 차단 테스트: 외부 IP가 허용되지 않는 포트에 접속을 시도합니다. ``배쉬 NC -vz 8.8.8.8 80 ````

    • 예상 결과: 연결이 거부되거나 시간 초과되었습니다.

2. 애플리케이션 규칙 테스트

  1. FQDN 액세스 허용 테스트: 'WorkloadSubnet'의 VM에서 브라우저를 통해 'learn.microsoft.com'에 액세스해 봅니다.

    • 예상 결과: 접속에 성공했습니다.
  2. FQDN 차단 테스트: badsite.com에 액세스해 보십시오(거부 규칙을 구성한 경우).

    • 예상 결과: 방화벽에 의해 액세스가 차단되고 브라우저에 오류 메시지가 표시됩니다.

3. NAT 규칙(DNAT) 테스트

  1. Azure 외부 컴퓨터(DNAT 규칙에 지정된 공용 IP 사용)에서 RDP/SSH를 통해 포트 3389/22의 Azure Firewall 공용 IP에 연결해 봅니다.
    • 예상 결과: 내부 VM에 성공적으로 연결되었습니다.

4. Azure Firewall 로그 확인

Azure Firewall 로그는 트래픽을 모니터링하고 규칙을 확인하는 데 필수적입니다.

  1. Azure Portal에서 Azure Firewall(AzureFirewall-01)로 이동합니다.
  2. 왼쪽 탐색 창에서 로그를 선택합니다.
  3. Log Analytics를 사용하여 방화벽 로그를 쿼리할 수 있습니다. 'AzureFirewallNetworkRule' 및 'AzureFirewallApplicationRule' 이벤트를 찾아 트리거된 규칙과 트래픽이 허용 또는 거부되었는지 확인하세요.

5. 위협 인텔리전스 및 IDPS 테스트(프리미엄)

  1. 위협 인텔리전스: 악성으로 알려진 IP 또는 FQDN에 액세스해 보십시오('test.malware.testing.com'과 같은 안전한 악성 코드 테스트 사이트 또는 위협 인텔리전스 테스트 IP를 사용하십시오). 방화벽은 액세스를 차단해야 합니다.
  2. IDPS: IDPS에서 감지할 공격을 시뮬레이션해 봅니다(예: 취약성 테스트 도구를 사용하여 해당하는 경우 스포크 VM의 웹 애플리케이션에 SQL 주입을 시도합니다). 방화벽은 경고를 생성하거나 트래픽을 차단해야 합니다.

보안 팁 및 모범 사례

  • 허브 및 스포크 모델: 가능하면 허브에서 Azure Firewall과 함께 허브 및 스포크 모델을 사용하여 네트워크 제어를 중앙 집중화하고 정책 관리를 단순화합니다.
  • 최소 권한의 원칙: 가능한 최소 권한으로 방화벽 규칙을 만들어 필수 트래픽만 허용합니다. 기본적으로 모든 트래픽을 차단하고 필요한 모든 트래픽을 명시적으로 허용합니다.
  • 규칙 우선순위: 규칙 처리 순서(NAT > 네트워크 > 애플리케이션)와 각 컬렉션 내 우선순위를 이해하여 충돌을 방지하고 원하는 규칙이 적용되도록 합니다.
  • 위협 인텔리전스 활성화: 알려진 악성 소스에 대한 자동 보호를 위해 '경고 및 거부' 모드에서 위협 인텔리전스를 활성화된 상태로 유지합니다.
  • Azure Firewall 프리미엄: 고급 보호가 필요한 환경의 경우 프리미엄 SKU를 사용하여 IDPS 및 TLS 검사와 같은 기능을 활용하세요.
  • TLS 검사: 아웃바운드 트래픽에 대한 TLS 검사를 구현하여 암호화된 세션에 숨겨진 위협을 탐지하지만 인증서 관리에 대해서는 신중하게 계획하세요.
  • 모니터링 및 감사: 지속적인 모니터링, 보안 분석 및 사고 대응을 위해 Azure Firewall 로그를 Azure Monitor 및 Azure Sentinel과 통합합니다.
  • Azure Firewall Manager: 여러 방화벽과 복잡한 정책이 있는 환경의 경우 중앙 집중식 계층적 정책 관리를 위해 Azure Firewall Manager를 사용하세요.
  • 문서화: 방화벽 규칙과 각 규칙에 대한 근거를 명확하게 문서화하여 유지합니다.

일반적인 문제 해결

  • 교통 차단예기치 않게: Log Analytics에서 Azure Firewall 로그를 확인하세요. 트래픽을 차단한 규칙(네트워크, 애플리케이션 또는 위협 인텔리전스)이 표시됩니다. 필요에 따라 규칙을 조정합니다.
  • 느린 연결: 트래픽이 느린 경우 Azure Monitor에서 방화벽 CPU 사용량을 확인하세요. 방화벽이 성능 한계에 도달했을 수 있습니다. SKU를 확장하거나 규칙을 최적화하는 것을 고려하세요.
  • NAT 규칙이 작동하지 않음: 공용 IP, 대상 및 변환된 포트가 올바른지 확인하세요. NAT 규칙의 소스 IP가 올바른지 확인하세요(제한된 경우). 트래픽을 차단할 수 있는 NSG가 있는지 대상 VM을 확인하세요.
  • TLS 검사 문제: Key Vault 및 방화벽 정책에서 루트 인증서가 올바르게 구성되었는지 확인하세요. 클라이언트가 TLS 검사에 사용되는 루트 CA를 신뢰하는지 확인하십시오.
  • IDPS는 공격을 감지하지 않습니다: IDPS가 '경고 및 거부' 모드에 있고 관련 서명이 활성화되어 있는지 확인하세요. 트래픽이 실제로 방화벽을 통과하고 있는지 확인하십시오.
  • 잘못된 라우팅: VM의 서브넷과 연결된 라우팅 테이블을 확인하세요. 기본 경로(0.0.0.0/0)가 Azure Firewall 개인 IP를 가리키는지 확인하세요.

결론

Azure Firewall은 Azure에서 강력한 네트워크 보안 상태를 설정하기 위한 강력하고 필수적인 도구입니다. 고급 트래픽 필터링, 위협 인텔리전스, IDPS 및 TLS 검사를 구현함으로써 조직은 광범위한 사이버 위협으로부터 워크로드를 보호할 수 있습니다. Azure Firewall을 중심으로 허브 및 스포크 모델을 채택하고 모범 사례 및 지속적인 모니터링을 적용하면 네트워크 트래픽을 효과적으로 검사하고 제어할 수 있습니다. 이 실용적인 가이드를 통해 보안 전문가는 Azure Firewall을 구성 및 관리하여 최신 위협에 대해 Azure 환경의 네트워크 보안과 복원력을 강화할 수 있습니다.


참고자료:

[1] 마이크로소프트 런. Azure 방화벽이란 무엇입니까?. 사용 가능: https://learn.microsoft.com/pt-br/azure/firewall/overview [2] 마이크로소프트 런. Azure Firewall 아키텍처 개요. 사용 가능: https://learn.microsoft.com/pt-br/azure/firewall/firewall-architecture [3] 마이크로소프트 런. Azure 방화벽 프리미엄 기능. 사용 가능: https://learn.microsoft.com/pt-br/azure/firewall/premium-features [4] 마이크로소프트 런. Azure Firewall 위협 인텔리전스를 기반으로 한 필터링. 사용 가능: https://learn.microsoft.com/pt-br/azure/firewall/threat-intel