Azure Virtual WAN의 프라이빗 엔드포인트로 향하는 트래픽 보호
참고 항목
이 문서는 보안 가상 허브에만 적용됩니다. 허브 가상 네트워크에서 Azure Firewall을 사용하여 프라이빗 엔드포인트로 향하는 트래픽을 검사하려면 Azure Firewall을 사용하여 프라이빗 엔드포인트로 향하는 트래픽 검사를 참조하세요.
Azure 프라이빗 엔드포인트는 Azure Private Link를 만드는 데 사용되는 기본 구성 요소입니다. 프라이빗 엔드포인트를 사용하면 가상 네트워크에 배포된 Azure 리소스가 프라이빗 링크 리소스와 비공개로 통신할 수 있습니다.
프라이빗 엔드포인트를 사용하면 리소스가 가상 네트워크에 배포된 프라이빗 링크 서비스에 액세스할 수 있습니다. 가상 네트워크 피어링 및 온-프레미스 네트워크 연결을 통해 프라이빗 엔드포인트에 액세스하면 연결이 확장됩니다.
Virtual WAN에 연결된 가상 네트워크의 프라이빗 엔드포인트를 통해 노출되는 서비스로 향하는 온-프레미스 또는 Azure 클라이언트의 트래픽을 필터링해야 할 수 있습니다. 이 문서에서는 Azure Firewall을 보안 공급자로 사용하는 보안 가상 허브를 통해 이 작업을 안내합니다.
Azure 방화벽은 다음 방법 중 하나를 사용하여 트래픽을 필터링합니다.
- TCP 및 UDP 프로토콜에 관한 네트워크 규칙의 FQDN
- HTTP, HTTPS 및 MSSQL에 관한 애플리케이션 규칙의 FQDN.
- 네트워크 규칙을 사용하는 원본 및 대상 IP 주소, 포트, 프로토콜
Azure Firewall은 항상 애플리케이션 규칙을 사용하여 SNAT 트래픽을 수행하기 때문에 프라이빗 엔드포인트로 전송되는 트래픽을 검사하기 위해 네트워크 규칙보다 애플리케이션 규칙을 선호하게 됩니다. 프라이빗 엔드포인트란?에 설명되어 있는 제한 사항으로 인해 프라이빗 엔드포인트로 전송되는 트래픽을 검사할 때에는 SNAT가 권장됩니다. 대신 네트워크 규칙을 사용하려는 경우에는 항상 SNAT: Azure Firewall SNAT 개인 IP 주소 범위를 수행하도록 Azure Firewall을 구성하는 것이 좋습니다.
Microsoft는 프라이빗 DNS 영역에 연결할 수 없는 보안 가상 허브를 관리합니다. 이는 프라이빗 링크 리소스 FQDN의 해당 프라이빗 엔드포인트 IP 주소를 확인하는 데 필요합니다.
SQL FQDN 필터링은 프록시 모드에서만 지원됩니다(포트 1433). 프록시 모드는 리디렉션에 비해 더 많은 대기 시간이 발생할 수 있습니다. Azure 내에서 연결하는 클라이언트의 기본값인 리디렉션 모드를 계속 사용하려면 방화벽 네트워크 규칙의 FQDN을 사용하여 액세스를 필터링할 수 있습니다.
Azure Firewall에서 네트워크 또는 애플리케이션 규칙을 사용하여 트래픽 필터링
다음 단계를 통해 Azure Firewall은 네트워크 규칙(FQDN 또는 IP 주소 기반) 또는 애플리케이션 규칙을 사용하여 트래픽을 필터링할 수 있습니다.
네트워크 규칙:
보안 가상 허브에 연결되어 있고 프라이빗 엔드포인트의 A 레코드 유형을 호스팅하는 프라이빗 DNS 영역에 연결된 가상 네트워크에 DNS 전달자 가상 머신을 배포합니다.
보안 가상 허브에 연결된 가상 네트워크의 사용자 지정 DNS 서버를 구성합니다.
- FQDN 기반 네트워크 규칙 - DNS 전달자 가상 머신의 IP 주소를 가리키도록 사용자 지정 DNS 설정을 구성하고 Azure Firewall과 연결된 방화벽 정책에 DNS 프록시를 사용하도록 설정합니다. 네트워크 규칙에서 FQDN 필터링을 수행하려면 DNS 프록시를 사용하도록 설정해야 합니다.
- IP 주소 기반 네트워크 규칙 - 이전 지점에서 설명한 사용자 지정 DNS 설정은 선택 사항입니다. DNS 전달자 가상 머신의 개인 IP를 가리키도록 사용자 지정 DNS 서버를 구성할 수 있습니다.
2단계에서 선택한 구성에 따라 프라이빗 엔드포인트 공용 DNS 영역의 DNS 쿼리를 Azure Firewall의 개인 IP 주소 또는 DNS 전달자 가상 머신으로 전달하도록 온-프레미스 DNS 서버를 구성합니다.
Azure Firewall과 연결된 방화벽 정책에서 필요에 따라 네트워크 규칙을 구성합니다. IP 주소 기반 규칙을 사용하는 경우 대상 유형 IP 주소를 선택하고 프라이빗 엔드포인트의 IP 주소를 대상으로 구성합니다. FQDN 기반 네트워크 규칙의 경우 대상 유형 FQDN을 선택하고 프라이빗 링크 리소스 퍼블릭 FQDN을 대상으로 구성합니다.
보안 가상 허브에 배포된 Azure Firewall과 연결된 방화벽 정책으로 이동합니다. 개인 IP 범위(SNAT)를 선택하고 항상 SNAT 수행 옵션을 선택합니다.
애플리케이션 규칙:
애플리케이션 규칙의 경우 이전 섹션의 1.단계 ~ 3.단계가 계속 적용됩니다. 사용자 지정 DNS 서버 구성의 경우 Azure Firewall을 DNS 프록시로 사용하거나 DNS 전달자 가상 머신을 직접 가리키도록 선택할 수 있습니다.
Azure Firewall과 연결된 방화벽 정책에서 필요에 따라 애플리케이션 규칙을 구성합니다. 대상 유형 FQDN 및 프라이빗 링크 리소스 퍼블릭 FQDN을 대상으로 선택합니다.
마지막으로, Azure Firewall에 구성된 규칙 유형에 관계없이 프라이빗 엔드포인트가 배포된 서브넷에서 네트워크 정책(UDR 지원용 이상)을 사용하도록 설정해야 합니다. 이렇게 하면 프라이빗 엔드포인트로 향하는 트래픽이 Azure Firewall을 우회하지 않습니다.
Important
기본적으로 RFC 1918 접두사는 Azure Firewall의 프라이빗 트래픽 접두사에 자동으로 포함됩니다. 대부분의 프라이빗 엔드포인트의 경우 온-프레미스 클라이언트 또는 동일한 보안 허브에 연결된 다른 가상 네트워크의 트래픽이 방화벽에서 검사되도록 하기에 충분합니다. 프라이빗 엔드포인트로 전송되는 트래픽이 방화벽에 기록되지 않는 경우 각 프라이빗 엔드포인트의 /32 접두사를 프라이빗 트래픽 접두사 목록에 추가해 보세요.
필요한 경우 다음과 같이 보안 허브의 Azure Firewall을 통해 검사되는 CIDR 접두사를 편집할 수 있습니다.
보안 가상 허브에 배포된 Azure Firewall과 연결된 방화벽 정책에서 보안 가상 허브로 이동하고, 프라이빗 엔드포인트로 향하는 트래픽 필터링을 구성할 보안 가상 허브를 선택합니다.
보안 구성으로 이동하고 프라이빗 트래픽에서 Azure Firewall을 통해 보내기를 선택합니다.
프라이빗 트래픽 접두사를 선택하여 보안 가상 허브에서 Azure Firewall을 통해 검사되는 CIDR 접두사를 편집하고 각 프라이빗 엔드포인트에 /32 접두사 하나를 추가합니다.
프라이빗 엔드포인트와 동일한 가상 네트워크에서 클라이언트의 트래픽을 검사하려면 프라이빗 엔드포인트에서 /32 경로를 특별히 재정의할 필요가 없습니다. 프라이빗 엔드포인트 서브넷에서 네트워크 정책을 사용하도록 설정되어 있는 한 더 넓은 주소 범위의 UDR이 우선됩니다. 예를 들어 다음 홉 형식을 가상 어플라이언스로 설정하고, 다음 홉 주소를 Azure Firewall의 개인 IP로 설정하고, 주소 접두사 대상을 가상 네트워크에 배포된 모든 프라이빗 엔드포인트 전용 서브넷으로 설정하여 이 UDR을 구성합니다. 게이트웨이 경로 전파를 예로 설정해야 합니다.
다음 다이어그램에서는 여러 클라이언트가 Azure Virtual WAN에 배포된 프라이빗 엔드포인트에 연결하는 DNS 및 데이터 트래픽 흐름을 보여 줍니다.
문제 해결
보안 가상 허브를 통해 프라이빗 엔드포인트로 향하는 트래픽을 필터링하려고 할 때 발생할 수 있는 주요 문제는 다음과 같습니다.
클라이언트에서 프라이빗 엔드포인트에 연결할 수 없습니다.
Azure Firewall이 우회됩니다. 이 증상은 Azure Firewall에 네트워크 또는 애플리케이션 규칙 로그 항목이 없는지 확인하면 알 수 있습니다.
대부분의 경우 다음 문제 중 하나로 인해 이러한 문제가 발생합니다.
잘못된 DNS 이름 확인
잘못된 라우팅 구성
잘못된 DNS 이름 확인
가상 네트워크 DNS 서버가 사용자 지정으로 설정되어 있고 IP 주소가 보안 가상 허브에 있는 Azure Firewall의 개인 IP 주소인지 확인합니다.
Azure CLI:
az network vnet show --name <VNET Name> --resource-group <Resource Group Name> --query "dhcpOptions.dnsServers"
DNS 전달자 가상 머신과 동일한 가상 네트워크에 있는 클라이언트가 DNS 전달자로 구성된 가상 머신을 직접 쿼리하여 프라이빗 엔드포인트 공용 FQDN의 해당 개인 IP 주소를 확인할 수 있는지 확인합니다.
Linux:
dig @<DNS forwarder VM IP address> <Private endpoint public FQDN>
AzureFirewallDNSProxy Azure Firewall 로그 항목을 검사하고 클라이언트에서 DNS 쿼리를 수신하고 해결할 수 있는지 확인합니다.
AzureDiagnostics | where Category contains "DNS" | where msg_s contains "database.windows.net"
DNS 프록시가 사용하도록 설정되어 있고 ,보안 가상 허브의 Azure Firewall과 연결된 방화벽 정책에 DNS 전달자 가상 머신 IP 주소의 IP 주소를 가리키는 사용자 지정 DNS 서버가 구성되어 있는지 확인합니다.
Azure CLI:
az network firewall policy show --name <Firewall Policy> --resource-group <Resource Group Name> --query dnsSettings
잘못된 라우팅 구성
보안 가상 허브에 배포된 Azure Firewall과 연결된 방화벽 정책에서 보안 구성을 확인합니다. 프라이빗 트래픽 열 아래에서 트래픽을 필터링하려는 모든 가상 네트워크 및 분기 연결에 대해 Azure Firewall로 보호됨이 표시되는지 확인합니다.
보안 가상 허브에 배포된 Azure Firewall과 연결된 방화벽 정책에서 보안 구성을 확인합니다. 프라이빗 엔드포인트로 전송되는 트래픽이 방화벽에 기록되지 않는 경우 각 프라이빗 엔드포인트의 /32 접두사를 프라이빗 트래픽 접두사 목록에 추가해 보세요.
가상 WAN의 보안 가상 허브에서 트래픽을 필터링하려는 가상 네트워크 및 분기 연결과 관련된 경로 테이블에 대한 유효 경로를 검사합니다. 트래픽을 검사하려는 각 프라이빗 엔드포인트에 대해 /32 항목이 추가된 경우 해당 항목이 유효 경로에 나열되어 있는지 확인합니다.
트래픽을 필터링하려는 가상 네트워크에 배포된 가상 머신과 연결된 NIC의 유효 경로를 검사합니다. 트래픽을 필터링하려는 각 프라이빗 엔드포인트의 개인 IP 주소에 대해 /32 항목이 있는지 확인합니다(추가된 경우).
Azure CLI:
az network nic show-effective-route-table --name <Network Interface Name> --resource-group <Resource Group Name> -o table
온-프레미스 라우팅 디바이스의 라우팅 테이블을 검사합니다. 프라이빗 엔드포인트가 배포된 가상 네트워크의 주소 공간을 알아보고 있는지 확인합니다.
Azure Virtual WAN은 방화벽 정책 보안 구성의 프라이빗 트래픽 접두사에 구성된 접두사를 온-프레미스에 보급하지 않습니다. /32 항목은 온-프레미스 라우팅 디바이스의 라우팅 테이블에 표시되지 않을 것으로 예상됩니다.
AzureFirewallApplicationRule 및 AzureFirewallNetworkRule Azure Firewall 로그를 검사합니다. 프라이빗 엔드포인트로 향하는 트래픽이 로그되고 있는지 확인합니다.
AzureFirewallNetworkRule 로그 항목에는 FQDN 정보가 포함되지 않습니다. 네트워크 규칙을 검사할 때 IP 주소 및 포트를 기준으로 필터링합니다.
Azure Files 프라이빗 엔드포인트로 향하는 트래픽을 필터링할 때 AzureFirewallNetworkRule 로그 항목은 클라이언트가 처음으로 파일 공유에 탑재하거나 연결하는 경우에만 생성됩니다. Azure Firewall은 파일 공유의 파일에 대한 CRUD 작업 로그를 생성하지 않습니다. 클라이언트가 파일 공유에 처음 연결하거나 탑재할 때 열린 영구 TCP 채널을 통해 CRUD 작업이 수행되기 때문입니다.
애플리케이션 규칙 로그 쿼리 예제:
AzureDiagnostics | where msg_s contains "database.windows.net" | where Category contains "ApplicationRule"