Azure Firewall integreren met NAT Gateway V2

Deze zelfstudie laat zien hoe u Azure Firewall implementeert met NAT Gateway V2 (StandardV2 SKU) voor zone-redundante uitgaande SNAT. U implementeert ook een virtuele testmachine en Azure Bastion om de configuratie te controleren.

Azure Firewall biedt 2496 SNAT-poorten per openbaar IP-adres dat is geconfigureerd per instantie van de virtuele-machineschaalset van de back-end (ten minste twee exemplaren). U kunt maximaal 250 openbare IP-adressen koppelen. Als u uitgaande SNAT-poorten wilt schalen en dynamisch wilt toewijzen, gebruikt u Azure NAT Gateway.

Waarom NAT Gateway V2?

De Standard NAT Gateway-SKU biedt geen ondersteuning voor zone-redundante implementaties. Als u een zoneredundante Azure Firewall implementeert met een Standard NAT-gateway, wordt de NAT-gateway een single point of failure tijdens een zonegebonden storing. NAT Gateway V2 (StandardV2 SKU) ondersteunt zone-redundante implementaties, waardoor het de aanbevolen keuze is bij het integreren met een zone-redundante Azure Firewall.

Zie NAT Gateway-SKU's voor meer informatie over NAT Gateway-SKU's.

Opmerking

In het artikel SNAT-poorten schalen met Azure NAT Gateway wordt de integratie met Standard NAT Gateway beschreven. In deze handleiding wordt de StandardV2-SKU (V2) beschreven, waarmee zone-redundante ondersteuning wordt toegevoegd.

Verkeersafwikkeling

Wanneer u NAT Gateway V2 koppelt aan het AzureFirewallSubnet, gebruikt binnenkomend en uitgaand verkeer verschillende openbare IP-adressen:

  • Uitgaand verkeer (SNAT) stroomt via het openbare IP-adres van de NAT-gateway V2.
  • Binnenkomend verkeer (DNAT) loopt via het eigen openbare IP-adres van Azure Firewall.
  • Beheerverkeer (statustests, rapportage van metrische gegevens en platformbeheer) maakt gebruik van het eigen openbare IP-adres van Azure Firewall. De firewall heeft nog steeds een eigen openbaar IP-adres nodig, zelfs wanneer een NAT-gateway uitgaande SNAT verwerkt.

Deze architectuur maakt geen gebruik van dubbele NAT. Azure Firewall-exemplaren verzenden verkeer naar de NAT-gateway met behulp van hun privé-IP-adres in plaats van het openbare IP-adres van Azure Firewall.

Verkeerstype Openbaar IP-adres gebruikt
Uitgaand (SNAT) NAT-gateway versie 2 PIP
Inkomend (DNAT) Azure Firewall PIP
Beheer- en gezondheidstests Azure Firewall PIP

In deze handleiding leer je hoe je:

  • Maak een virtueel netwerk met een AzureFirewallSubnet, workloadsubnet en AzureBastionSubnet.
  • Maak een NAT Gateway V2 met een openbaar STANDAARDV2-IP-adres en koppel deze aan het firewallsubnet.
  • Implementeer een Azure Firewall en configureer een firewallbeleid met toepassings- en netwerkregels.
  • Maak een routetabel om verkeer via de firewall te verzenden.
  • Implementeer een test-VM en Azure Bastion om te controleren of uitgaande SNAT gebruikmaakt van het openbare IP-adres van de NAT Gateway V2.

Vereiste voorwaarden

  • Een Azure-abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
  • Azure CLI versie 2.78 of hoger. Voer az --version uit om de versie te vinden. Als u Azure CLI wilt installeren of upgraden, raadpleegt u Azure CLI installeren.

Een brongroep maken

Gebruik az group create om een resourcegroep te maken voor de implementatie.

az group create \
  --name rg-azfw-natgwv2-test \
  --location eastus2

Het virtuele netwerk en subnetten maken

Maak een virtueel netwerk met drie subnetten:

  • AzureFirewallSubnet : vereiste naam voor Azure Firewall (ten minste /26).
  • workload-subnet : fungeert als host voor de virtuele testmachine.
  • AzureBastionSubnet : vereiste naam voor Azure Bastion (ten minste /26).

Gebruik az network vnet create om het virtuele netwerk te maken met het eerste subnet. Gebruik vervolgens az network vnet subnet create om de resterende subnetten toe te voegen.

az network vnet create \
  --resource-group rg-azfw-natgwv2-test \
  --name vnet-azfw-natgwv2 \
  --address-prefixes 10.0.0.0/16 \
  --subnet-name AzureFirewallSubnet \
  --subnet-prefixes 10.0.1.0/24 \
  --location eastus2

az network vnet subnet create \
  --resource-group rg-azfw-natgwv2-test \
  --vnet-name vnet-azfw-natgwv2 \
  --name workload-subnet \
  --address-prefixes 10.0.2.0/24

az network vnet subnet create \
  --resource-group rg-azfw-natgwv2-test \
  --vnet-name vnet-azfw-natgwv2 \
  --name AzureBastionSubnet \
  --address-prefixes 10.0.3.0/26

De NAT-gateway V2 maken

VOOR NAT Gateway V2 is een openbaar IP-adres van standardV2-SKU vereist. U kunt geen openbaar IP-adres van een standard-SKU koppelen aan een StandardV2 NAT-gateway.

Gebruik az network public-ip create om de StandardV2 openbare IP-adres te maken. Gebruik vervolgens az network nat gateway create om de NAT-gateway te maken.

az network public-ip create \
  --resource-group rg-azfw-natgwv2-test \
  --name pip-natgw-v2 \
  --sku StandardV2 \
  --allocation-method Static \
  --location eastus2

az network nat gateway create \
  --resource-group rg-azfw-natgwv2-test \
  --name natgw-v2 \
  --sku StandardV2 \
  --public-ip-addresses pip-natgw-v2 \
  --idle-timeout 4 \
  --location eastus2

De NAT Gateway V2 koppelen aan het AzureFirewallSubnet

Gebruik az network vnet subnet update om de NAT-gateway te koppelen aan het firewallsubnet.

az network vnet subnet update \
  --resource-group rg-azfw-natgwv2-test \
  --vnet-name vnet-azfw-natgwv2 \
  --name AzureFirewallSubnet \
  --nat-gateway natgw-v2

De Azure Firewall maken

De firewall heeft een eigen openbaar IP-adres nodig voor beheer en binnenkomend DNAT. Een standaard-SKU openbaar IP-adres is standaard zone-redundant, zodat deze overeenkomt met de zone-redundante firewallimplementatie.

Gebruik az network public-ip create om het openbare IP-adres van de firewall te maken, gebruik az network firewall create om de firewall te implementeren en gebruik az network firewall ip-config create om deze te koppelen aan het virtuele netwerk.

az network public-ip create \
  --resource-group rg-azfw-natgwv2-test \
  --name pip-azfw \
  --sku Standard \
  --allocation-method Static \
  --location eastus2

az network firewall create \
  --resource-group rg-azfw-natgwv2-test \
  --name azfw-natgwv2-test \
  --location eastus2 \
  --sku AZFW_VNet \
  --tier Standard \
  --zones 1 2 3

az network firewall ip-config create \
  --resource-group rg-azfw-natgwv2-test \
  --firewall-name azfw-natgwv2-test \
  --name azfw-ipconfig \
  --public-ip-address pip-azfw \
  --vnet-name vnet-azfw-natgwv2

Gebruik az network firewall show om het privé IP-adres van de firewall op te halen.

FIREWALL_PRIVATE_IP=$(az network firewall show \
  --resource-group rg-azfw-natgwv2-test \
  --name azfw-natgwv2-test \
  --query "ipConfigurations[0].privateIPAddress" \
  --output tsv)

echo $FIREWALL_PRIVATE_IP

Een routeringstabel maken

Gebruik az network route-table create om een routetabel te maken, gebruik az network route-table route create om een standaardroute toe te voegen waarmee al het verkeer naar de Azure Firewall wordt verzonden en gebruik az network vnet subnet update om deze te koppelen aan het workloadsubnet.

az network route-table create \
  --resource-group rg-azfw-natgwv2-test \
  --name rt-workload \
  --location eastus2

az network route-table route create \
  --resource-group rg-azfw-natgwv2-test \
  --route-table-name rt-workload \
  --name default-to-firewall \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $FIREWALL_PRIVATE_IP

az network vnet subnet update \
  --resource-group rg-azfw-natgwv2-test \
  --vnet-name vnet-azfw-natgwv2 \
  --name workload-subnet \
  --route-table rt-workload

Een firewallbeleid maken

Maak een firewallbeleid en koppel dit aan Azure Firewall. Voeg zowel netwerkregels als toepassingsregels toe.

Aanbeveling

Webverkeer (HTTP of HTTPS) toestaan met behulp van netwerkregels of toepassingsregels. Gebruik toepassingsregels voor webverkeer. Toepassingsregels bieden filteren op basis van FQDN, TLS-inspectie en URL-filtering die niet beschikbaar zijn met netwerkregels.

Gebruik az network firewall policy create om het beleid te maken.

az network firewall policy create \
  --resource-group rg-azfw-natgwv2-test \
  --name policy-azfw-natgwv2 \
  --location eastus2 \
  --sku Standard

Gebruik az network firewall policy rule-collection-group create om een netwerkregelverzamelingsgroep te maken en voeg-filter-verzameling toe om een regel toe te voegen waarmee TCP- en UDP-verkeer vanuit het workloadsubnet wordt toegestaan.

az network firewall policy rule-collection-group create \
  --resource-group rg-azfw-natgwv2-test \
  --policy-name policy-azfw-natgwv2 \
  --name DefaultNetworkRuleCollectionGroup \
  --priority 200

az network firewall policy rule-collection-group collection add-filter-collection \
  --resource-group rg-azfw-natgwv2-test \
  --policy-name policy-azfw-natgwv2 \
  --rule-collection-group-name DefaultNetworkRuleCollectionGroup \
  --name allow-outbound \
  --collection-priority 100 \
  --action Allow \
  --rule-type NetworkRule \
  --rule-name allow-tcp-udp \
  --source-addresses "10.0.2.0/24" \
  --destination-addresses "*" \
  --ip-protocols TCP UDP \
  --destination-ports "*"

Belangrijk

Deze regels staan al het uitgaande verkeer toe voor testdoeleinden. Beperk in productie de doeladressen, poorten en FQDN's tot alleen wat uw workloads nodig hebben.

Gebruik az network firewall policy rule-collection-group create om een toepassingsregelverzamelingsgroep te maken en voeg-filter-verzameling toe om een regel toe te voegen waarmee HTTP- en HTTPS-verkeer wordt toegestaan.

az network firewall policy rule-collection-group create \
  --resource-group rg-azfw-natgwv2-test \
  --policy-name policy-azfw-natgwv2 \
  --name DefaultApplicationRuleCollectionGroup \
  --priority 300

az network firewall policy rule-collection-group collection add-filter-collection \
  --resource-group rg-azfw-natgwv2-test \
  --policy-name policy-azfw-natgwv2 \
  --rule-collection-group-name DefaultApplicationRuleCollectionGroup \
  --name allow-web \
  --collection-priority 100 \
  --action Allow \
  --rule-type ApplicationRule \
  --rule-name allow-http-https \
  --source-addresses "10.0.2.0/24" \
  --protocols Http=80 Https=443 \
  --target-fqdns "*"

Gebruik az network firewall policy show om de beleids-id en az network firewall update op te halen om deze te koppelen aan de firewall.

POLICY_ID=$(az network firewall policy show \
  --resource-group rg-azfw-natgwv2-test \
  --name policy-azfw-natgwv2 \
  --query id -o tsv)

az network firewall update \
  --resource-group rg-azfw-natgwv2-test \
  --name azfw-natgwv2-test \
  --firewall-policy "$POLICY_ID"

Een virtuele testmachine implementeren

Gebruik az vm create om een Linux-VM te implementeren in het workloadsubnet zonder openbare IP-adres- en SSH-sleutelverificatie.

az vm create \
  --resource-group rg-azfw-natgwv2-test \
  --name vm-test-workload \
  --image Ubuntu2404 \
  --size Standard_B2s \
  --vnet-name vnet-azfw-natgwv2 \
  --subnet workload-subnet \
  --public-ip-address "" \
  --admin-username azureuser \
  --generate-ssh-keys \
  --location eastus2

Azure Bastion implementeren

Gebruik az network public-ip create om een openbaar IP-adres te maken en az network bastion create om Azure Bastion te implementeren voor het maken van verbinding met de virtuele machine via Azure Portal.

az network public-ip create \
  --resource-group rg-azfw-natgwv2-test \
  --name pip-bastion \
  --sku Standard \
  --allocation-method Static \
  --location eastus2

az network bastion create \
  --resource-group rg-azfw-natgwv2-test \
  --name bastion-azfw-test \
  --public-ip-address pip-bastion \
  --vnet-name vnet-azfw-natgwv2 \
  --sku Standard \
  --location eastus2

De implementatie controleren

  1. Ga in Azure Portal naar vm-test-workload>Connect>Bastion.

  2. Selecteer de persoonlijke SSH-sleutel in het lokale bestand als verificatietype.

  3. Voer azureuser in als de gebruikersnaam en selecteer uw persoonlijke sleutelbestand.

  4. Nadat u verbinding hebt gemaakt, voert u het volgende uit:

    curl icanhazip.com
    

Het antwoord toont het openbare IP-adres van de NAT-gateway V2, waarbij wordt bevestigd dat uitgaand verkeer via Azure Firewall stroomt en via NAT Gateway V2 wordt afgesloten.

Als u wilt controleren zonder de NAT-gateway, gebruikt u az network vnet subnet update om deze tijdelijk los te koppelen.

az network vnet subnet update \
  --resource-group rg-azfw-natgwv2-test \
  --vnet-name vnet-azfw-natgwv2 \
  --name AzureFirewallSubnet \
  --remove natGateway

Voer curl icanhazip.com opnieuw uit. Het antwoord toont nu het eigen openbare IP-adres van Azure Firewall, waarbij wordt bevestigd dat het SNAT-gedrag verandert op basis van NAT Gateway-koppeling.

Gebruik az network vnet subnet update om de NAT Gateway opnieuw te koppelen wanneer u klaar bent.

az network vnet subnet update \
  --resource-group rg-azfw-natgwv2-test \
  --vnet-name vnet-azfw-natgwv2 \
  --name AzureFirewallSubnet \
  --nat-gateway natgw-v2

De hulpbronnen opschonen

Gebruik az group delete om de resourcegroep en alle resources te verwijderen.

az group delete --name rg-azfw-natgwv2-test --yes --no-wait

Volgende stappen