Azure Firewall –Private SNAT-IP-Adressbereiche

Azure Firewall bietet eine SNAT-Funktionalität für sämtlichen ausgehenden Datenverkehr an öffentliche IP-Adressen. Standardmäßig verwendet Azure Firewall SNAT nicht mit Netzwerkregeln, wenn sich die Ziel-IP-Adresse in einem privaten IP-Adressbereich pro IANA RFC 1918 oder freigegebenem Adressraum pro IANA RFC 6598 befindet. Anwendungsregeln verwenden SNAT immer über einen transparenten Proxy , unabhängig von der Ziel-IP-Adresse.

Dieses Standardverhalten eignet sich, wenn der Datenverkehr direkt an das Internet weitergeleitet wird. Es gibt jedoch Szenarien, in denen Sie möglicherweise das Standardmäßige SNAT-Verhalten außer Kraft setzen müssen:

  • Wenn Sie Erzwungenes Tunneln aktivieren, leitet Azure Firewall den ans Internet gebundenen Datenverkehr an eine der privaten IP-Adressen der Firewall im AzureFirewallSubnetz weiter und verbirgt so die Quelle vor Ihrer on-premises Firewall.
  • Wenn Ihre Organisation registrierte IP-Adressbereiche außerhalb von IANA RFC 1918 oder IANA RFC 6598 für private Netzwerke verwendet, führt Azure Firewall SNAT für den Datenverkehr zu einer der privaten IP-Adressen der Firewall im AzureFirewallSubnet durch. Sie können Azure Firewall so konfigurieren, dass Ihr öffentlicher IP-Adressbereich nicht per SNAT weitergeleitet wird. Geben Sie z. B. eine einzelne IP-Adresse als x.x.x.x oder einen Bereich von IP-Adressen als x.x.x.x/24.

Sie können das SNAT-Verhalten von Azure Firewall auf folgende Weise ändern:

  • Wenn Sie Azure Firewall so konfigurieren möchten, dass Datenverkehr, der von Netzwerkregeln verarbeitet wird, niemals mit SNAT weitergeleitet wird, unabhängig von der Ziel-IP-Adresse, verwenden Sie 0.0.0.0/0 als Ihren privaten IP-Adressbereich. Mit dieser Konfiguration kann Azure Firewall den Datenverkehr nicht direkt an das Internet weiterleiten.
  • Verwenden Sie 255.255.255.255.255/255/32 als privaten IP-Adressbereich, um die Firewall so zu konfigurieren, dass der von Netzwerkregeln verarbeitete SNAT-Datenverkehr unabhängig von der Zieladresse immer verarbeitet wird.
  • Um die Azure Firewall so zu konfigurieren, dass sie in regelmäßigen Abständen automatisch registrierte und private IP-Adressbereiche lernt, aktivieren Sie das automatische Lernen von SNAT-Routen. Erlernte Adressbereiche werden als intern behandelt, und Datenverkehr mit Ziel in diesen Bereichen wird keinem SNAT unterzogen.

Wichtig

  • Die private Adressbereichskonfiguration gilt nur für Netzwerkregeln. Anwendungsregeln verwenden immer SNAT.
  • Wenn Sie Ihre eigenen privaten IP-Adressbereiche festlegen und die standardmäßigen IANA RFC 1918-Adressbereiche beibehalten möchten, stellen Sie sicher, dass Ihre benutzerdefinierte Liste den IANA RFC 1918-Bereich noch enthält.

Die folgende Tabelle zeigt die unterstützten Konfigurationsmethoden. Firewalls, die einer Firewallrichtlinie zugeordnet sind, müssen den Bereich in der Richtlinie angeben und dürfen nicht AdditionalProperties verwenden.

Methode Klassische Regeln Firewallrichtlinie
Azure PowerShell Unterstützt Nicht unterstützt
Azure-Befehlszeilenschnittstelle Unterstützt Nicht unterstützt
ARM-Vorlage Unterstützt Unterstützt
Azure-Portal Unterstützt Unterstützt

Konfigurieren Sie SNAT-private IP-Adressbereiche

Wählen Sie Ihre Konfigurationsmethode. Azure PowerShell und Azure CLI unterstützen nur klassische Regeln. Um SNAT-Bereiche mit einer Firewall-Richtlinie zu konfigurieren, verwenden Sie eine ARM-Vorlage oder das Azure-Portal.

Verwenden Sie Azure PowerShell, um private IP-Adressbereiche für die Firewall anzugeben.

Hinweis

Die Firewalleigenschaft PrivateRange wird für Firewalls ignoriert, die einer Firewallrichtlinie zugeordnet sind. Du musst die SNAT Eigenschaft in firewallPolicies wie im ARM-Vorlagen-Tab beschrieben verwenden.

Neue Firewall

Für eine neue Firewall, die klassische Regeln verwendet, erstellen Sie die Firewall mit New-AzFirewall:

$azFw = @{
   Name               = '<fw-name>'
   ResourceGroupName  = '<resourcegroup-name>'
   Location           = '<location>'
   VirtualNetworkName = '<vnet-name>'
   PublicIpName       = '<public-ip-name>'
   PrivateRange       = @("IANAPrivateRanges", "192.168.1.0/24", "192.168.1.10")
}

New-AzFirewall @azFw

Hinweis

  • Um Azure Firewall mithilfe von New-AzFirewall bereitzustellen, sind ein vorhandenes virtuelles Netzwerk und eine öffentliche IP-Adresse erforderlich. Eine vollständige Bereitstellungsanleitung finden Sie unter Bereitstellen und Konfigurieren der Azure Firewall mit Azure PowerShell.
  • IANAPrivateRanges erweitert die aktuellen Standardeinstellungen auf Azure Firewall, während die anderen Bereiche hinzugefügt werden. Damit die IANAPrivateRanges Standardeinstellung in Ihrer Spezifikation für private Bereiche beibehalten wird, muss sie in Ihrer PrivateRange Spezifikation verbleiben, wie im Beispiel gezeigt.

Vorhandene Firewall

Um eine bestehende Firewall mit klassischen Regeln zu konfigurieren, holen Sie die Firewall mit Get-AzFirewall und aktualisieren Sie sie mit Set-AzFirewall:

$azfw = Get-AzFirewall -Name '<fw-name>' -ResourceGroupName '<resourcegroup-name>'
$azfw.PrivateRange = @("IANAPrivateRanges", "192.168.1.0/24", "192.168.1.10")
Set-AzFirewall -AzureFirewall $azfw

SNAT-Routen automatisch lernen

Du kannst die Azure Firewall so konfigurieren, dass sie alle 30 Minuten sowohl registrierte als auch private Bereiche automatisch lernt. Diese gelernten Adressbereiche sind netzwerkintern, so dass der Datenverkehr zu Zielen in den gelernten Bereichen nicht SNATed wird. Sowohl Bereitstellungen virtueller Netzwerke (VNet) als auch Bereitstellungen sicherer virtueller Hubs (vHub) unterstützen automatisch erlernte SNAT-Routen.

Hinweis

  • Auto-learn SNAT erfordert, dass Azure Firewall mit Azure Route Server verknüpft ist.
  • Für VNet-Deployments müssen Sie Azure Route Server im selben virtuellen Netzwerk wie die Azure Firewall bereitstellen.
  • Für vHub-Deployments ist der Azure Route Server standardmäßig bereits bereitgestellt und zugeordnet.
  • Für beide Bereitstellungsmodelle musst du nach Abschluss der Verknüpfung das automatische Lernen von SNAT in der Azure Firewall Policy aktivieren.
  • Weitere Informationen zu Azure Firewall-Architekturoptionen finden Sie unter Welche Optionen bietet die Azure Firewall Manager-Architektur?.

VNet-Firewall

Für VNet-Deployments muss man den Azure Route Server bereitstellen und zuordnen, bevor man automatische SNAT-Routen aktiviert.

Voraussetzungen:

In den folgenden Beispielen ersetzen Sie die Variablennamen ($azureFirewallName, $rgname, $location, usw.) durch Ihre eigenen Werte.

  1. Erstellen Sie eine neue Firewall mit einer Route-Server-ID mit New-AzFirewall.

    # Specify the Route Server resource ID
    $routeServerId="/subscriptions/your_sub/resourceGroups/testRG/providers/Microsoft.Network/virtualHubs/TestRS"
    
    # Create the firewall
    $azureFirewall = New-AzFirewall -Name $azureFirewallName `
        -ResourceGroupName $rgname `
        -Location $location `
        -RouteServerId $routeServerId
    
    # Verify the Route Server ID is set
    Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname
    
  2. Verknüpfen Sie einen Routenserver mit einer bestehenden Firewall, indem Sie Get-AzFirewall und Set-AzFirewall verwenden.

    # Specify the Route Server resource ID
    $routeServerId="/subscriptions/your_sub/resourceGroups/testRG/providers/Microsoft.Network/virtualHubs/TestRS"
    
    # Get the firewall
    $azFirewall = Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname
    
    # Associate the Route Server and update the firewall
    $azFirewall.RouteServerId = $routeServerId
    Set-AzFirewall -AzureFirewall $azFirewall
    
    # Verify the Route Server ID is updated
    Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname
    
  3. Erstellen Sie eine neue Firewall-Richtlinie mit aktiviertem Auto-Learn, indem Sie New-AzFirewallPolicySnat und New-AzFirewallPolicy verwenden.

    # Include AutoLearnPrivateRange to enable auto-learn
    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange -AutoLearnPrivateRange
    
    # Create the firewall policy with SNAT configuration
    $azureFirewallPolicy = New-AzFirewallPolicy -Name $azureFirewallPolicyName `
        -ResourceGroupName $rgname `
        -Location $location `
        -Snat $snat
    
    # Verify the firewall policy
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  4. Aktualisieren Sie eine bestehende Firewall-Richtlinie mit SNAT, indem Sie New-AzFirewallPolicySnat und Set-AzFirewallPolicy verwenden.

    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange2 -AutoLearnPrivateRange
    
    # Update the firewall policy
    $azureFirewallPolicy.Snat = $snat
    Set-AzFirewallPolicy -InputObject $azureFirewallPolicy
    
    # Verify the update
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  5. Verifizieren Sie die gelernten Präfixe mit Get-AzFirewallLearnedIpPrefix.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

vHub-Firewall

Für vHub-Deployments ist der Azure Route Server standardmäßig bereits bereitgestellt und zugeordnet. Du musst nur das automatische Lernen in deiner Firewall-Richtlinie aktivieren.

In den folgenden Beispielen ersetzen Sie die Variablennamen ($azureFirewallName, $rgname, $location, usw.) durch Ihre eigenen Werte.

  1. Erstellen Sie eine neue Firewall-Richtlinie mit aktiviertem Auto-Learn, indem Sie New-AzFirewallPolicySnat und New-AzFirewallPolicy verwenden.

    # Include AutoLearnPrivateRange to enable auto-learn
    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange -AutoLearnPrivateRange
    
    # Create the firewall policy with SNAT configuration
    $azureFirewallPolicy = New-AzFirewallPolicy -Name $azureFirewallPolicyName `
        -ResourceGroupName $rgname `
        -Location $location `
        -Snat $snat
    
    # Verify the firewall policy
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  2. Aktualisieren Sie eine bestehende Firewall-Richtlinie mit SNAT, indem Sie New-AzFirewallPolicySnat und Set-AzFirewallPolicy verwenden.

    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange2 -AutoLearnPrivateRange
    
    # Update the firewall policy
    $azureFirewallPolicy.Snat = $snat
    Set-AzFirewallPolicy -InputObject $azureFirewallPolicy
    
    # Verify the update
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  3. Erhalten Sie den virtuellen Hub mit Get-AzVirtualHub und die Firewall-Richtlinie mit Get-AzFirewallPolicy.

    $Hub = Get-AzVirtualHub -ResourceGroupName $rgname -Name $virtualHubName
    $azureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  4. Erstellen Sie mithilfe von New-AzFirewallHubPublicIpAddress und New-AzFirewallHubIpAddress eine öffentliche IP-Konfiguration.

    $azureFirewallPIPs = New-AzFirewallHubPublicIpAddress -Count 1
    $azureFirewallHubIPs = New-AzFirewallHubIpAddress -PublicIP $azureFirewallPIPs
    
  5. Erstellen Sie die vHub-Firewall mit der Auto-Learn-Policy mit New-AzFirewall.

    $azureFirewall = New-AzFirewall -Name $azureFirewallName `
        -ResourceGroupName $rgname `
        -Location $location `
        -VirtualHubId $Hub.Id `
        -FirewallPolicyId $azureFirewallPolicy.Id `
        -SkuName "AZFW_Hub" `
        -HubIPAddress $azureFirewallHubIPs `
        -SkuTier $FirewallTier
    
  6. Verifizieren Sie die gelernten Präfixe mit Get-AzFirewallLearnedIpPrefix.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

Nächste Schritte