Plages d’adresses IP privées de SNAT du Pare-feu Azure

Le Pare-feu Azure offre la capacité SNAT pour l’ensemble du trafic sortant à destination d’adresses IP publiques. Par défaut, le Pare-feu Azure n’utilise pas SNAT avec des règles de réseau lorsque l’adresse IP de destination se trouve dans une plage d’adresses IP privée par IANA RFC 1918 ou un espace d’adressage partagé par IANA RFC 6598. Les règles d’application utilisent toujours SNAT via un proxy transparent quel que soit l’adresse IP de destination.

Ce comportement par défaut est approprié lors du routage du trafic directement vers Internet. Toutefois, il existe des scénarios où vous devrez peut-être remplacer le comportement SNAT par défaut :

  • Si vous activez le tunneling forcé, le pare-feu Azure applique le SNAT au trafic à destination d'Internet en le redirigeant vers l’une des adresses IP privées du pare-feu dans AzureFirewallSubnet, masquant ainsi la source de votre pare-feu sur site.
  • Si votre organisation utilise des plages d'adresses IP enregistrées en dehors de IANA RFC 1918 ou IANA RFC 6598 pour les réseaux privés, le pare-feu Azure traduit le trafic par SNAT en utilisant l'une des adresses IP privées du pare-feu situées dans AzureFirewallSubnet. Vous pouvez configurer le pare-feu Azure pour ne pas appliquer SNAT à votre plage d'adresses IP publiques. Par exemple, spécifiez une adresse IP individuelle en tant qu’adresse x.x.x.x IP ou une plage d’adresses IP en tant que x.x.x.x/24.

Vous pouvez modifier le comportement SNAT du pare-feu Azure de la manière suivante :

  • Pour configurer le Pare-feu Azure de manière à ce que le trafic SNAT ne soit jamais traité par les règles de réseau, quelle que soit l’adresse IP de destination, utilisez 0.0.0.0/0 comme plage d’adresses IP privées. Avec cette configuration, le Pare-feu Azure ne peut pas acheminer le trafic directement vers Internet.
  • Pour configurer le pare-feu pour toujours traiter le trafic SNAT traité par les règles réseau, quelle que soit l’adresse de destination, utilisez 255.255.255.255/32 comme plage d’adresses IP privées.
  • Pour configurer Pare-feu Azure afin qu’il apprend automatiquement les plages d’adresses IP enregistrées et privées à intervalles réguliers, activez l’apprentissage automatique des routes SNAT. Les plages d’adresses apprises sont traitées comme internes et le trafic destiné à ces plages ne fait pas l’objet d’un SNAT.

Important

  • La configuration de la plage d’adresses privées s’applique uniquement aux règles de réseau. Les règles d’application utilisent toujours SNAT.
  • Si vous souhaitez spécifier vos propres plages d’adresses IP privées et conserver les plages d’adresses IANA RFC 1918 par défaut, assurez-vous que votre liste personnalisée comprend toujours la plage IANA RFC 1918.

Le tableau suivant présente les méthodes de configuration prises en charge. Les pare-feu associés à une stratégie de pare-feu doivent spécifier la plage dans la stratégie et ne pas utiliser AdditionalProperties.

Méthode Règles classiques Stratégie de pare-feu
Azure PowerShell Soutenu Non pris en charge
Azure CLI Soutenu Non pris en charge
Modèle ARM Soutenu Soutenu
Portail Azure Soutenu Soutenu

Configurez les plages d’adresses IP privées SNAT

Choisissez votre méthode de configuration. Azure PowerShell et Azure CLI ne prennent en charge que les règles classiques. Pour configurer les plages SNAT avec une politique de pare-feu, utilisez un modèle ARM ou le portail Azure.

Utilisez Azure PowerShell pour spécifier des plages d’adresses IP privées pour le pare-feu.

Remarque

La propriété de pare-feu PrivateRange est ignorée pour les pare-feu associés à une stratégie de pare-feu. Vous devez utiliser la SNAT propriété dans firewallPolicies comme décrit dans l’onglet modèle ARM .

Nouveau pare-feu

Pour un nouveau pare-feu utilisant des règles classiques, créez-le en utilisant 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

Remarque

  • Le déploiement du Pare-feu Azure à l’aide de New-AzFirewall nécessite un réseau virtuel existant et une adresse IP publique. Pour obtenir un guide de déploiement complet, consultez Déployer et configurer le Pare-feu Azure à l’aide d’Azure PowerShell.
  • IANAPrivateRanges s’étend sur les valeurs par défaut actuelles sur le Pare-feu Azure, tandis que les autres plages sont ajoutées à celle-ci. Pour conserver la IANAPrivateRanges valeur par défaut dans votre spécification de plage privée, elle doit rester dans votre PrivateRange spécification, comme indiqué dans l’exemple.

Pare-feu existant

Pour configurer un pare-feu existant utilisant des règles classiques, obtenez le pare-feu en utilisant Get-AzFirewall et mettez-le à jour en utilisant 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

Découverte automatique des routes SNAT

Vous pouvez configurer Pare-feu Azure pour qu’il apprend automatiquement les plages enregistrées et privées toutes les 30 minutes. Ces plages d’adresses apprises sont internes au réseau. Le trafic vers les destinations des plages apprises n’est donc pas SNATed. Les déploiements de réseaux virtuels (VNet) et les déploiements de hub virtuel sécurisé (vHub) supportent les routes SNAT d’apprentissage automatique.

Remarque

  • L’auto-apprentissage SNAT nécessite qu’Pare-feu Azure soit associé à Serveur de routes Azure.
  • Pour les déploiements VNet, vous devez déployer Serveur de routes Azure dans le même réseau virtuel qu’Pare-feu Azure.
  • Pour les déploiements vHub, Serveur de routes Azure est déjà déployé et associé par défaut.
  • Pour les deux modèles de déploiement, vous devez activer l’auto-apprentissage SNAT dans la politique Pare-feu Azure une fois l’association terminée.
  • Pour plus d’informations sur les options d’architecture du Pare-feu Azure, consultez Quelles sont les options d’architecture d’Azure Firewall Manager ?

pare-feu VNet

Pour les déploiements VNet, vous devez déployer et associer Serveur de routes Azure avant d’activer l’apprentissage automatique des routes NAT.

Configuration requise :

Dans les exemples suivants, remplacez les noms des variables ($azureFirewallName, $rgname, $location, etc.) par vos propres valeurs.

  1. Créez un nouveau pare-feu avec un identifiant de serveur de routage en utilisant 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. Associez un serveur de routage à un pare-feu existant en utilisant Get-AzFirewall et Set-AzFirewall.

    # 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. Créez une nouvelle politique de pare-feu avec l’auto-apprentissage activé en utilisant New-AzFirewallPolicySnat et New-AzFirewallPolicy.

    # 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. Mettez à jour une politique de pare-feu existante avec SNAT en utilisant New-AzFirewallPolicySnat et Set-AzFirewallPolicy.

    $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. Vérifiez les préfixes appris en utilisant Get-AzFirewallLearnedIpPrefix.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

Pare-feu vHub

Pour les déploiements vHub, Serveur de routes Azure est déjà déployé et associé par défaut. Il suffit d’activer l’auto-apprentissage dans votre politique de pare-feu.

Dans les exemples suivants, remplacez les noms des variables ($azureFirewallName, $rgname, $location, etc.) par vos propres valeurs.

  1. Créez une nouvelle politique de pare-feu avec l’auto-apprentissage activé en utilisant New-AzFirewallPolicySnat et New-AzFirewallPolicy.

    # 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. Mettez à jour une politique de pare-feu existante avec SNAT en utilisant New-AzFirewallPolicySnat et Set-AzFirewallPolicy.

    $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. Obtenez le hub virtuel en utilisant Get-AzVirtualHub et la politique de pare-feu en utilisant Get-AzFirewallPolicy.

    $Hub = Get-AzVirtualHub -ResourceGroupName $rgname -Name $virtualHubName
    $azureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  4. Créez une configuration IP publique en utilisant New-AzFirewallHubPublicIpAddress et New-AzFirewallHubIpAddress.

    $azureFirewallPIPs = New-AzFirewallHubPublicIpAddress -Count 1
    $azureFirewallHubIPs = New-AzFirewallHubIpAddress -PublicIP $azureFirewallPIPs
    
  5. Créez le pare-feu vHub avec la politique d’auto-apprentissage en utilisant 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. Vérifiez les préfixes appris en utilisant Get-AzFirewallLearnedIpPrefix.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

Étapes suivantes