Eingehende Firewall-Veröffentlichung erforderlich? Konfiguriere Firewall-DNAT

Veröffentlicht am:

Die CloudTrips-VM besitzt keine öffentliche IP. Dadurch sind direkte Verbindungen aus dem Internet ausgeschlossen. Ein temporärer Webdienst auf dieser VM benötigt jetzt einen kontrollierten öffentlichen Einstiegspunkt, ohne die VM selbst öffentlich zu machen.

Azure bietet mehrere Möglichkeiten, einen Workload zu veröffentlichen. Eine öffentliche IP direkt an der VM ist am einfachsten, macht diese VM aber direkt erreichbar. Load Balancer verteilt TCP- oder UDP-Verbindungen auf Backends. Application Gateway und Front Door eignen sich besser für HTTP-/HTTPS-Anwendungen, die Layer-7-Routing oder eine Web Application Firewall benötigen. Firewall DNAT ist passend, wenn eine vorhandene zentrale Firewall einen privaten TCP- oder UDP-Dienst veröffentlichen und dabei ihre Regeln, Protokollierung sowie später IDPS auf die Verbindung anwenden soll.

Konfiguriere Destination Network Address Translation (DNAT) auf Azure Firewall. DNAT nimmt eine Verbindung an der öffentlichen IP und am Port der Firewall an, ersetzt dieses öffentliche Ziel durch die private IP und den Port der VM und leitet die Verbindung weiter.

Dieser Trip baut auf Firewallregeln brauchen zentrale Verwaltung? Erstelle eine Firewall Policy auf. Behalte Firewall, zugeordnete Policy, öffentliche IP, Route, private VM und Bastion-Verbindung.

Der Verbindungspfad wird zu:

Dein Computer
  -> Öffentliche Azure-Firewall-IP:80
  -> DNAT
  -> Private VM-IP:80

Die VM bleibt privat. Internetclients adressieren die Firewall und nicht die VM.

Stabilisiere das private Ziel

Starte vm-cloudtrips-bastion-test-weu. Öffne auf der Seite Networking die zugeordnete Netzwerkschnittstelle und wähle Settings > IP configurations. Öffne die IP-Konfiguration der VM, setze Private IP address assignment auf Static und behalte die aktuell zugewiesene Adresse. Wähle Save und notiere diese private IP.

DNAT benötigt ein verlässliches Übersetzungsziel. Die statische Zuweisung der vorhandenen Adresse verhindert, dass die Regel nach einer späteren Adressänderung auf die falsche VM zeigt.

Starte einen temporären Webserver

Verbinde dich über Connect > Bastion mit der VM. Führe aus:

printf '%s\n' '<html><body><h1>CloudTrips DNAT test</h1><p>Reached through Azure Firewall.</p></body></html>' | sudo tee /tmp/index.html >/dev/null
sudo nohup python3 -m http.server 80 --bind 0.0.0.0 --directory /tmp >/tmp/cloudtrips-http.log 2>&1 &
curl -I http://127.0.0.1

Der letzte Befehl sollte HTTP/1.0 200 OK zurückgeben. Damit ist bewiesen, dass der Webserver lokal lauscht, bevor die Firewall beteiligt ist. Lass die VM für den externen Test laufen. nohup hält den temporären Server auch nach dem Schließen des Bastion-Terminals aktiv. Falls ein erneuter Start Exit 1 meldet, während der lokale curl weiterhin 200 OK liefert, verwendet ein früher gestarteter Server bereits Port 80; starte keine weitere Kopie.

Bastion-Terminal mit HTTP-Status 200 vom lokalen temporären CloudTrips-Webserver

Dieser Python-Server ist nur ein kurzlebiger Lab-Endpunkt und keine Webserverkonfiguration für die Produktion.

Notiere die beiden öffentlichen Adressen

Öffne afw-cloudtrips-test-weu, wähle dessen öffentliche IP-Konfiguration und notiere die IP-Adresse von pip-cloudtrips-afw-test-weu. Internetclients kontaktieren diese Zieladresse.

Öffne auf dem Computer, von dem aus du den Browsertest durchführst, ein Terminal und führe aus:

curl -4 https://api.ipify.org

Notiere die zurückgegebene IPv4-Adresse und ergänze /32, beispielsweise 203.0.113.10/32. Ein /32 bezeichnet exakt eine IPv4-Adresse. Verwende in der Regel dein echtes Ergebnis; die Beispieladresse dient nur der Dokumentation.

Durch die Einschränkung auf deine aktuelle öffentliche Adresse ist der temporäre Endpunkt von deiner Verbindung und nicht vom gesamten Internet aus erreichbar. Wenn du vor dem Test ein VPN aktivierst oder deaktivierst, prüfe die Adresse erneut.

Erstelle die DNAT-Regel

Öffne über die Firewall-Übersicht die zugeordnete Firewall Policy. Wähle unter Settings > Rules die Optionen DNAT rules > Add a rule collection.

Konfiguriere die Collection:

Rule collection name: Publish-CloudTrips-HTTP
Priority: 200
Rule collection action: DNAT
Rule collection type: DNAT
Rule collection group: DefaultDnatRuleCollectionGroup

Konfiguriere ihre Regel:

Rule name: Publish-Test-Web
Source type: IP Address
Source: <your-current-public-ip>/32
Protocol: TCP
Destination ports: 80
Destination (Firewall IP address): Die öffentliche IP von pip-cloudtrips-afw-test-weu
Translated type: IP Address
Translated address: Die private IP von vm-cloudtrips-bastion-test-weu
Translated port: 80

Wähle Add und warte, bis die Bereitstellungsstatus von Policy und Firewall Succeeded anzeigen.

CloudTrips-Firewall-Policy mit der DNAT-Regel von der öffentlichen Firewall-IP zur privaten Test-VM

DNAT-Regeln werden vor Network und Application Rules ausgewertet. Wenn diese Regel zutrifft, übersetzt und erlaubt Azure Firewall die Verbindung. Eine separate Network Rule der Firewall ist deshalb nicht erforderlich. Die frühere Application Rule Allow-Microsoft-Web steuert ausgehenden Webverkehr und gilt nicht für diese eingehende Verbindung.

Für dieses Lab ist keine NSG-Änderung erforderlich. Nach DNAT sieht die VM die Verbindung als von einer privaten Azure-Firewall-Instanz in AzureFirewallSubnet kommend. Die vorhandene NSG-Standardregel AllowVNetInBound erlaubt diesen VNet-Datenverkehr.

Teste den veröffentlichten Endpunkt

Öffne auf demselben Computer, dessen öffentliche IP in der Regel steht:

http://<firewall-public-ip>

Der Browser sollte Folgendes anzeigen:

CloudTrips DNAT test
Reached through Azure Firewall.

Browser mit der privaten CloudTrips-Testseite über die öffentliche Azure-Firewall-IP

Damit ist der vollständige Pfad bewiesen: Die Verbindung erreichte die öffentliche Firewall-IP, entsprach Quelle und Port der DNAT-Regel und wurde zur privaten VM übersetzt. Die private VM-IP direkt aus dem Internet zu öffnen, würde weiterhin fehlschlagen.

Azure Firewall DNAT arbeitet auf Netzwerk- und Transportebene. Es prüft keine HTTP-Pfade, Header, Cookies oder Anwendungsangriffe. Eine öffentliche Webanwendung, die solche Kontrollen benötigt, sollte eine Web Application Firewall (WAF) verwenden, üblicherweise über Application Gateway oder Azure Front Door.

Fortfahren oder bereinigen

Die folgenden Trips führen das Upgrade dieser Firewall für Premium TLS Inspection durch und aktivieren danach IDPS. Wenn du fortfährst, behalte die DNAT-Regel und alle Firewallressourcen. Schließe die Bastion-Sitzung und gib die VM bis zum nächsten Test frei.

Wenn du aufhörst, lösche Publish-CloudTrips-HTTP aus der Firewall Policy, um den öffentlichen Endpunkt zu schließen. Stoppe oder lösche danach die VM. Wenn das gesamte Firewall-Lab abgeschlossen ist, folge der Bereinigung im vorherigen Firewall-Policy-Trip.