Netzwerk braucht Firewall-Inspektion? Erstelle Azure Firewall

Veröffentlicht am:

Das CloudTrips-Anwendungssubnetz kann sich über NAT Gateway mit dem Internet verbinden, aber NAT übersetzt nur Adressen. Es entscheidet nicht, welche Ziele oder Protokolle die Workloads verwenden dürfen.

Stelle Azure Firewall als zentralen Netzwerksicherheitsdienst bereit. Füge danach eine benutzerdefinierte Route hinzu, damit internetgebundener Datenverkehr aus snet-app die Firewall passieren muss. Azure Firewall ist zustandsbehaftet: Sie bewertet eine Verbindung einmal und erkennt den zugehörigen Antwortverkehr automatisch.

Dieser Trip baut auf Ein Admin braucht sicheren VM-Zugriff? Erstelle Azure Bastion auf. Behalte oder erstelle dessen private VM und Bastion-Developer-Verbindung für den Abschlusstest erneut.

Der Pfad wird zu:

VM in snet-app -> Routentabelle -> Azure Firewall -> Internet

Azure Firewall verweigert Datenverkehr, auf den keine Allow-Regel zutrifft. Dieser Trip nutzt dieses Default-Deny-Verhalten, um nachzuweisen, dass die Firewall im Pfad liegt. Der nächste Trip erstellt eine zentral verwaltete Firewall Policy und erlaubt ein genehmigtes Ziel.

Azure Firewall Standard ist ab der Bereitstellung kostenpflichtig. Schließe diesen und den folgenden Firewall-Policy-Trip in derselben Lab-Sitzung ab oder führe am Ende dieses Trips die Bereinigung durch.

Entferne den vorherigen NAT-Pfad

Falls natgw-cloudtrips-app-test-weu noch snet-app zugeordnet ist, öffne:

Virtual networks > vnet-cloudtrips-test-weu > Subnets > snet-app

Setze NAT gateway auf None und speichere. Lösche natgw-cloudtrips-app-test-weu und pip-cloudtrips-nat-test-weu, wenn sie nicht mehr benötigt werden.

NAT Gateway und Azure Firewall sind beide gültige ausgehende Designs, aber diese Übung braucht einen eindeutigen Egress-Pfad. Die Firewall stellt für ausgehende Verbindungen eine eigene öffentliche IP bereit.

Erstelle das erforderliche Firewall-Subnetz

Azure Firewall muss in einem dedizierten Subnetz mit dem exakten Namen AzureFirewallSubnet bereitgestellt werden. Azure erkennt diesen reservierten Namen und verwendet das Subnetz für die verwalteten Firewall-Instanzen. Das Subnetz muss /26 oder größer sein, damit Azure genügend Adressen für Skalierung und Wartung hat.

Öffne vnet-cloudtrips-test-weu, wähle Settings > Subnets und danach + Subnet. Konfiguriere:

Subnet purpose/template: Azure Firewall
Name: AzureFirewallSubnet
Starting address: 10.20.3.0
Subnet size: /26

Ordne weder NSG noch Routentabelle, NAT Gateway, Service Endpoint oder Subnetzdelegation zu. Wähle Add oder Save.

CloudTrips-VNet-Subnetzseite mit dem dedizierten AzureFirewallSubnet unter 10.20.3.0/26

10.20.3.0/26 liegt im VNet-Adressraum 10.20.0.0/16 und überschneidet sich nicht mit snet-app oder snet-data.

Stelle Azure Firewall bereit

Wähle im Azure-Portal Create a resource, suche nach Firewall und wähle Create.

Konfiguriere:

Subscription: CloudTrips TEST
Resource group: rg-cloudtrips-network-test-weu
Name: afw-cloudtrips-test-weu
Region: West Europe
Availability options: No infrastructure redundancy required
Firewall SKU: Standard
Firewall management: Use classic firewall rules
Virtual network: Use existing
Virtual network name: vnet-cloudtrips-test-weu
Public IP address: Create new
Public IP name: pip-cloudtrips-afw-test-weu
Enable Firewall Management NIC: Disabled

Wenn die Validierung meldet, dass Force Tunneling ein AzureFirewallManagementSubnet erfordert, kehre zur Firewall-Konfiguration zurück und deaktiviere Enable Firewall Management NIC beziehungsweise setze Force Tunneling auf Disabled. Erstelle für diese Übung kein AzureFirewallManagementSubnet.

Die später hinzugefügte Route zwingt Workload-Datenverkehr aus snet-app zur Azure Firewall. Force Tunneling von Azure Firewall ist eine andere Funktion: Sie sendet den eigenen internetgebundenen Datenverkehr der Firewall an einen weiteren Next Hop, beispielsweise eine lokale Firewall, und benötigt deshalb ein separates Management-Subnetz.

Falls das Portal die Firewall-Verwaltung als Policy-Auswahl darstellt, wähle None (use classic firewall rules). Erstelle noch keine Regeln; der nächste Trip ersetzt die klassische Verwaltung durch eine zentrale Firewall Policy.

Füge unter Tags hinzu:

Application: CloudTrips
Environment: TEST
Purpose: NetworkInspection

Wähle Review + create und danach Create. Die Bereitstellung kann einige Minuten dauern.

Öffne afw-cloudtrips-test-weu und warte, bis der Bereitstellungsstatus Succeeded ist. Notiere die Private IP address für den nächsten Schritt. Die öffentliche IP wird für diesen Test nicht benötigt.

Azure-Firewall-Übersicht mit Status Succeeded sowie privater und öffentlicher IP-Konfiguration

Das Erstellen der Firewall leitet Workload-Datenverkehr nicht automatisch um. Die Subnetzroute muss sie ausdrücklich als nächsten Hop auswählen.

Route den Anwendungs-Egress durch die Firewall

Öffne rt-cloudtrips-app-test-weu, die bereits snet-app zugeordnete Routentabelle. Wähle Settings > Routes > Add und konfiguriere:

Route name: Default-To-Azure-Firewall
Destination type: IP Addresses
Destination IP addresses/CIDR ranges: 0.0.0.0/0
Next hop type: Virtual appliance
Next hop address: Die private IP von afw-cloudtrips-test-weu

Wähle Add.

CloudTrips-Anwendungsroutentabelle mit der Standardroute zur privaten Azure-Firewall-IP

0.0.0.0/0 entspricht IPv4-Zielen, wenn keine spezifischere Route vorhanden ist. In einer Routentabelle bedeutet Virtual appliance: „Sende den Datenverkehr zur Verarbeitung oder Weiterleitung an diese private IP.“ Der Next Hop kann eine Firewall-VM, Router-VM, eine Network Virtual Appliance eines Drittanbieters oder Azure Firewall sein. Azure Firewall gehört zu dieser Routenkategorie, ist aber ein von Microsoft verwalteter Dienst: Du verwaltest Policies und Regeln und nicht die zugrunde liegenden VMs.

Die bestehende Route Block-Future-Services ist spezifischer als die Standardroute und verwirft weiterhin 10.30.0.0/16.

Überprüfe Default Deny

Erstelle die VM neu, wenn du sie gelöscht hast

Starte vm-cloudtrips-bastion-test-weu, falls sie nur freigegeben ist. Wenn du sie nach dem Bastion-Trip gelöscht hast, erstelle im Azure-Portal einen Ersatz mit:

Resource group: rg-cloudtrips-network-test-weu
Name: vm-cloudtrips-bastion-test-weu
Region: West Europe
Availability option: Availability zone
Zone: 3
Security type: Standard
Image: Ubuntu Server 24.04 LTS - x64 Gen2
Size: Standard_D2s_v3
Authentication type: Password
Username: azureuser
Password: Erstelle ein temporäres starkes Passwort
Public inbound ports: None

Verwende unter Disks eine Standard SSD und aktiviere das Löschen des OS-Datenträgers zusammen mit der VM. Konfiguriere unter Networking:

Virtual network: vnet-cloudtrips-test-weu
Subnet: snet-app
Public IP: None
NIC network security group: None
Delete NIC when VM is deleted: Enabled

Füge die Tags Application: CloudTrips, Environment: TEST und Purpose: FirewallTest hinzu. Wähle Review + create, danach Create, und warte, bis die VM läuft. Der vorherige Bastion-Trip erklärt, warum diese private VM ohne öffentliche IP administriert werden kann.

Teste über Bastion

Verbinde dich über Connect > Bastion und führe aus:

curl --connect-timeout 10 -I http://www.microsoft.com

Das erwartete Ergebnis ist eine von der Firewall erzeugte Blockantwort wie:

HTTP/1.1 470 status code 470

Status 470 ist keine erfolgreiche Antwort von www.microsoft.com. Azure Firewall gibt ihn für diese verweigerte HTTP-Anfrage zurück, weil keine passende Allow-Regel existiert.

Bastion-SSH-Sitzung mit HTTP-Status 470, nachdem Azure Firewall die ausgehende Anfrage blockiert

Die Antwort ist der erwartete Nachweis und keine defekte Bereitstellung. Die UDR sendet die Verbindung an Azure Firewall, und das Default-Deny-Verhalten der Firewall blockiert sie, weil keine Regel das Ziel erlaubt.

Fortfahren oder bereinigen

Wenn du sofort mit dem Firewall-Policy-Trip fortfährst, gib die VM frei und behalte Firewall, öffentliche IP, AzureFirewallSubnet und die Route Default-To-Azure-Firewall.

Andernfalls lösche zuerst Default-To-Azure-Firewall aus rt-cloudtrips-app-test-weu, damit snet-app keine Route zu einem fehlenden nächsten Hop behält. Lösche danach in dieser Reihenfolge:

afw-cloudtrips-test-weu
pip-cloudtrips-afw-test-weu
AzureFirewallSubnet
vm-cloudtrips-bastion-test-weu und Datenträger/NIC

Behalte VNet, Anwendungssubnetz, NSG und Routentabelle für spätere Networking-Trips.