Teilen über


Bereitstellen und Konfigurieren von Azure Firewall mithilfe von Azure CLI

Die Steuerung des ausgehenden Netzwerkzugriffs ist ein wichtiger Teil eines umfassenden Netzwerksicherheitsplans. Vielleicht möchten Sie beispielsweise den Zugriff auf Websites einschränken. Mitunter kann es auch empfehlenswert sein, die verfügbaren Ports einzuschränken.

Eine Möglichkeit zur Steuerung des ausgehenden Netzwerkzugriffs aus einem Subnetz ist Azure Firewall. Mit Azure Firewall können Sie Folgendes konfigurieren:

  • Anwendungsregeln, die vollqualifizierte Domänennamen (Fully Qualified Domain Names, FQDNs) definieren, auf die von einem Subnetz aus zugegriffen werden kann. Der FQDN kann auch SQL-Instanzen enthalten.
  • Netzwerkregeln, die die Quelladresse, das Protokoll, den Zielport und die Zieladresse definieren.

Die konfigurierten Firewallregeln werden auf den Netzwerkdatenverkehr angewendet, wenn Sie Ihren Netzwerkdatenverkehr an die Firewall als Subnetz-Standardgateway weiterleiten.

In diesem Artikel erstellen Sie der Einfachheit halber ein einzelnes vereinfachtes VNET mit drei Subnetzen. Für Produktionsbereitstellungen wird ein Hub-Spoke-Modell empfohlen. Die Firewall befindet sich dabei in einem eigenen VNET. Die Workloadserver befinden sich in per Peering verknüpften VNETs in derselben Region mit einem oder mehreren Subnetzen.

  • AzureFirewallSubnet: Das Subnetz mit der Firewall.
  • Workload-SN: Das Subnetz mit dem Workloadserver. Der Netzwerkdatenverkehr dieses Subnetzes durchläuft die Firewall.
  • AzureBastionSubnet – Azure Bastion befindet sich in diesem Subnetz und bietet sicheren Zugriff auf den Workloadserver.

Diagramm der Netzwerkinfrastruktur.

In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Einrichten einer Netzwerkumgebung zu Testzwecken
  • Bereitstellen einer Firewall
  • Erstellen einer Standardroute
  • Konfigurieren einer Anwendungsregel zum Zulassen des Zugriffs auf www.microsoft.com
  • Konfigurieren einer Netzwerkregel, um den Zugriff auf externe DNS-Server zuzulassen
  • Testen der Firewall

Dieses Verfahren kann auch mit dem Azure-Portal oder mit Azure PowerShell durchgearbeitet werden.

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Voraussetzungen

  • Für diesen Artikel ist mindestens Version 2.55.0 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

Einrichten des Netzwerks

Erstellen Sie zunächst eine Ressourcengruppe für die Ressourcen, die zum Bereitstellen der Firewall benötigt werden. Erstellen Sie dann ein VNet, Subnetze und Testserver.

Erstellen einer Ressourcengruppe

Die Ressourcengruppe enthält alle Ressourcen für die Bereitstellung.

az group create --name Test-FW-RG --location eastus

Erstellen eines VNET

Dieses virtuelle Netzwerk umfasst drei Subnetze.

Hinweis

Die Größe des Subnetzes AzureFirewallSubnet beträgt /26. Weitere Informationen zur Subnetzgröße finden Sie unter Azure Firewall – Häufig gestellte Fragen.

az network vnet create \
  --name Test-FW-VN \
  --resource-group Test-FW-RG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name AzureFirewallSubnet \
  --subnet-prefix 10.0.1.0/26
az network vnet subnet create \
  --name Workload-SN \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.2.0/24
az network vnet subnet create \
  --name AzureBastionSubnet \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.3.0/26

Erstellen eines virtuellen Computers

Erstellen Sie zum Testen eine Netzwerkkarte für Srv-Work mit spezifischen DNS-Server-IP-Adressen und keiner öffentlichen IP-Adresse.

az network nic create \
    --resource-group Test-FW-RG \
    --name Srv-Work-NIC \
   --vnet-name Test-FW-VN \
   --subnet Workload-SN \
   --dns-servers <replace with External DNS ip #1> <replace with External DNS ip #2>

Erstellen Sie jetzt den virtuellen Workloadcomputer. Mit dem folgenden Befehl wird eine Ubuntu Server 22.04 LTS-VM mit SSH-Schlüsselauthentifizierung erstellt und Nginx installiert. Wenn Sie dazu aufgefordert werden, speichern Sie den generierten privaten Schlüssel in einer .pem Datei, die beim Herstellen einer Verbindung über Azure Bastion verwendet werden soll.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Work \
    --location eastus \
    --image Ubuntu2204 \
    --nics Srv-Work-NIC \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt

Erstellen Sie eine cloud-init.txt Datei mit dem folgenden Inhalt, um Nginx zu installieren:

#cloud-config
package_upgrade: true
packages:
  - nginx
runcmd:
  - echo '<h1>'$(hostname)'</h1>' | sudo tee /var/www/html/index.html

Hinweis

Azure stellt eine ausgehende Standardzugriffs-IP für VMs bereit, denen keine öffentliche IP-Adresse zugewiesen ist oder die sich im Backendpool eines internen grundlegenden Azure-Lastenausgleichs befinden. Der Mechanismus für Standard-IP-Adressen für den ausgehenden Zugriff stellt eine ausgehende IP-Adresse bereit, die nicht konfigurierbar ist.

Die Standard-IP-Adresse für ausgehenden Zugriff ist deaktiviert, wenn eines der folgenden Ereignisse auftritt:

  • Dem virtuellen Computer wird eine öffentliche IP-Adresse zugewiesen.
  • Die VM wird im Backendpool eines Standardlastenausgleichs platziert (mit oder ohne Ausgangsregeln).
  • Dem Subnetz der VM wird eine Azure NAT Gateway-Ressource zugewiesen.

VMs, die Sie mithilfe von VM-Skalierungsgruppen im Orchestrierungsmodus „Flexibel“ erstellen, haben keinen ausgehenden Standardzugriff.

Weitere Informationen zu ausgehenden Verbindungen in Azure finden Sie unter Standardzugriff in ausgehender Richtung und Verwenden von SNAT (Source Network Address Translation) für ausgehende Verbindungen.

Bereitstellen der Firewall

Stellen Sie nun die Firewall im virtuellen Netzwerk bereit.

az network firewall create \
    --name Test-FW01 \
    --resource-group Test-FW-RG \
    --location eastus
az network public-ip create \
    --name fw-pip \
    --resource-group Test-FW-RG \
    --location eastus \
    --allocation-method static \
    --sku standard
az network firewall ip-config create \
    --firewall-name Test-FW01 \
    --name FW-config \
    --public-ip-address fw-pip \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN
az network firewall update \
    --name Test-FW01 \
    --resource-group Test-FW-RG 
az network public-ip show \
    --name fw-pip \
    --resource-group Test-FW-RG
fwprivaddr="$(az network firewall ip-config list --resource-group Test-FW-RG --firewall-name Test-FW01 --query "[?name=='FW-config'].privateIpAddress" --output tsv)"

Notieren Sie sich die private IP-Adresse. Diese wird später für die Erstellung der Standardroute benötigt.

Bereitstellen von Azure Bastion

Stellen Sie Azure Bastion bereit, um eine sichere Verbindung mit dem Srv-Work virtuellen Computer herzustellen, ohne dass öffentliche IP-Adressen oder ein Sprungserver erforderlich sind.

az network public-ip create \
    --resource-group Test-FW-RG \
    --name bastion-pip \
    --sku Standard \
    --location eastus
az network bastion create \
    --name Test-Bastion \
    --public-ip-address bastion-pip \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN \
    --location eastus \
    --sku Basic

Hinweis

Die Azure Bastion-Bereitstellung kann ungefähr 10 Minuten dauern.

Erstellen einer Standardroute

Erstellen einer Routingtabelle mit deaktivierter BGP-Routenweitergabe

az network route-table create \
    --name Firewall-rt-table \
    --resource-group Test-FW-RG \
    --location eastus \
    --disable-bgp-route-propagation true

Erstellen Sie die Route.

az network route-table route create \
  --resource-group Test-FW-RG \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $fwprivaddr

Ordnen Sie die Routingtabelle dem Subnetz zu.

az network vnet subnet update \
    --name Workload-SN \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN \
    --address-prefixes 10.0.2.0/24 \
    --route-table Firewall-rt-table

Konfigurieren einer Anwendungsregel

Die Anwendungsregel lässt den ausgehenden Zugriff auf www.microsoft.com zu.

az network firewall application-rule create \
   --collection-name App-Coll01 \
   --firewall-name Test-FW01 \
   --name Allow-Microsoft \
   --protocols Http=80 Https=443 \
   --resource-group Test-FW-RG \
   --target-fqdns www.microsoft.com \
   --source-addresses 10.0.2.0/24 \
   --priority 200 \
   --action Allow

Azure Firewall enthält eine integrierte Regelsammlung für Infrastruktur-FQDNs, die standardmäßig zulässig sind. Diese FQDNs sind plattformspezifisch und können nicht für andere Zwecke verwendet werden. Weitere Informationen finden Sie unter Infrastruktur-FQDNs.

Konfigurieren einer Netzwerkregel

Die Netzwerkregel lässt ausgehenden Zugriff auf zwei öffentliche DNS-IP-Adressen Ihrer Wahl über Port 53 (DNS) zu.

az network firewall network-rule create \
   --collection-name Net-Coll01 \
   --destination-addresses <replace with DNS ip #1> <replace with DNS ip #2> \
   --destination-ports 53 \
   --firewall-name Test-FW01 \
   --name Allow-DNS \
   --protocols UDP \
   --resource-group Test-FW-RG \
   --priority 200 \
   --source-addresses 10.0.2.0/24 \
   --action Allow

Testen der Firewall

Testen Sie nun die Firewall, um sicherzustellen, dass sie wie erwartet funktioniert.

  1. Notieren Sie die private IP-Adresse des virtuellen Computers Srv-Work:

    az vm list-ip-addresses \
    --resource-group Test-FW-RG \
    --name Srv-Work
    
  2. Navigieren Sie im Azure-Portal zum virtuellen Srv-Work-Computer , und wählen Sie Connect>über Bastion aus.

  3. Geben Sie den Benutzernamen azureuser an, und laden Sie die private Schlüsseldatei .pem hoch, die beim Erstellen der VM generiert wurde. Wählen Sie "Verbinden" aus, um eine SSH-Sitzung zu öffnen.

  4. Führen Sie in der SSH-Sitzung die folgenden Befehle aus, um die DNS-Auflösung zu testen:

    nslookup www.google.com
    nslookup www.microsoft.com
    

    Für beide Befehle sollten Antworten zurückgegeben werden, was zeigt, dass Ihre DNS-Abfragen die Firewall durchqueren.

  5. Führen Sie die folgenden Befehle aus, um den Webzugriff zu testen:

    curl https://www.microsoft.com
    curl https://www.google.com
    

    Die www.microsoft.com Anforderung sollte erfolgreich sein und HTML-Inhalte zurückgeben, während die www.google.com Anforderung fehlschlägt oder timeout ist. Dies zeigt, dass Ihre Firewallregeln erwartungsgemäß funktionieren.

Damit haben Sie sich vergewissert, dass die Firewallregeln funktionieren:

  • Sie können DNS-Namen mithilfe des konfigurierten externen DNS-Servers auflösen.
  • Sie können zum einzigen zulässigen FQDN navigieren, aber nicht zu anderen.

Bereinigen von Ressourcen

Sie können die Firewallressourcen für das nächste Tutorial behalten oder die Ressourcengruppe Test-FW-RG löschen, wenn Sie sie nicht mehr benötigen. Dadurch werden alle firewallbezogenen Ressourcen gelöscht:

az group delete \
  --name Test-FW-RG

Nächste Schritte