Verschlüsselter Datenverkehr muss geprüft werden? Konfiguriere TLS-Inspektion mit Azure Firewall Premium

Veröffentlicht am:

Die CloudTrips-Firewall kann ein HTTPS-Ziel anhand seines Domainnamens zulassen oder verweigern. Die Anwendungsdaten innerhalb der Verbindung sind jedoch verschlüsselt. Standard-Firewallfilterung kann diesen verschlüsselten Inhalt nicht auf Bedrohungen prüfen.

Verwende Transport Layer Security (TLS) Inspection in Azure Firewall Premium. Die Firewall baut eine verschlüsselte Verbindung zum Workload und eine zweite verschlüsselte Verbindung zur Zielwebsite auf. Dazwischen kann sie den entschlüsselten Datenverkehr prüfen und danach erneut verschlüsseln.

VM -> verschlüsseltes TLS -> Azure Firewall
                               Prüfung
Azure Firewall -> verschlüsseltes TLS -> Website

In diesem Lab sendet die VM eine HTTPS-Anfrage an www.microsoft.com. Ohne TLS Inspection sendet Microsoft sein Website-Zertifikat direkt an die VM. Die VM prüft dieses Zertifikat, um sicherzustellen, dass sie verschlüsselt mit der echten Microsoft-Website kommuniziert. Bei der TLS Inspection befindet sich die Firewall dazwischen. Deshalb erhält die VM stattdessen ein temporäres Zertifikat für www.microsoft.com, das von der Firewall erstellt und signiert wurde.

Die VM lehnt dieses Zertifikat ab, solange sie der Certificate Authority (CA), die es signiert hat, nicht vertraut. Eine CA ist eine vertrauenswürdige Ausstellerin von Zertifikaten. In diesem Lab verwendet die Firewall ihre eigene CA. Deren öffentliches Zertifikat wird auf der VM installiert. Dadurch weiß die VM, dass sie den während der Inspektion von der CloudTrips-Firewall erstellten Zertifikaten vertrauen darf.

Dieser Trip baut auf Eingehende Firewall-Veröffentlichung erforderlich? Konfiguriere Firewall-DNAT auf. Behalte Firewall, Policy, Route, private VM und öffentliche IP. Die DNAT-Regel wird für diesen ausgehenden Test nicht verwendet, bleibt aber für den folgenden IDPS-Trip erhalten.

Azure Firewall Premium kostet mehr als Standard. Führe diesen und den folgenden IDPS-Trip nach Möglichkeit in derselben Lab-Sitzung aus.

Das Lab-Zertifikat verstehen

In der Produktion verwendet ein Unternehmen normalerweise ein eigenes verwaltetes Zertifikatssystem. Dieses heißt Public Key Infrastructure (PKI). Es stellt zwei unterschiedliche Dinge bereit:

  • Die Firewall erhält ein Intermediate-CA-Zertifikat und dessen privaten Schlüssel. Damit darf sie temporäre Website-Zertifikate signieren.
  • Die Unternehmensgeräte erhalten nur das öffentliche Root-CA-Zertifikat, normalerweise über eine zentrale Geräteverwaltung. Damit prüfen sie, ob die temporären Zertifikate der Firewall von einer vertrauenswürdigen Unternehmens-CA signiert wurden.

Die Geräte erhalten niemals den privaten CA-Schlüssel. Sie erhalten nur das öffentliche Zertifikat, das sie für die Überprüfung benötigen.

Dieses TEST-Lab verwendet die automatische Zertifikaterstellung von Azure Firewall Premium. Die Premium Firewall Policy ist die Konfiguration, die der Premium-Firewall zugeordnet ist. Sie enthält die Firewallregeln und Premium-Einstellungen einschließlich TLS Inspection. Sie ist eine Azure Firewall Policy und nicht der Azure-Policy-Dienst für Governance.

Azure erstellt drei unterstützende Ressourcen und verbindet sie mit dieser Firewall Policy:

User-assigned managed identity
Key Vault
Self-signed CA certificate

Die Managed Identity erlaubt der Policy, das CA-Zertifikat aus Key Vault zu lesen. Auf der VM wird nur das öffentliche Zertifikat installiert. Exportiere oder verteile den privaten CA-Schlüssel nicht. Automatisch erzeugte Zertifikate eignen sich für dieses Lab und nicht für die Produktion.

Firewall und Policy auf Premium aktualisieren

Öffne afw-cloudtrips-test-weu. Wähle auf Overview die Option Change SKU.

Konfiguriere:

Target SKU: Premium
Policy option: Upgrade or duplicate the current Standard policy to Premium

Verwende die vorhandene Standard-Policy als Quelle, damit Azure Allow-Approved-Web und Publish-CloudTrips-HTTP übernimmt. Ordne keine leere Premium-Policy zu.

Wähle Save und warte, bis der Bereitstellungsstatus der Firewall Succeeded lautet. Die Änderung dauert normalerweise einige Minuten. Notiere den Namen der Premium-Policy, die jetzt der Firewall zugeordnet ist.

Öffne diese Policy und bestätige:

Policy tier: Premium
Allow-Approved-Web: Present
Publish-CloudTrips-HTTP: Present

Azure-Firewall-Übersicht mit Premium-SKU und zugeordneter Premium Firewall Policy

Die SKU aktiviert Premium-Verarbeitungsfunktionen. TLS wird erst geprüft, wenn die Policy ein CA-Zertifikat besitzt und eine passende Regel die Inspektion aktiviert.

Lab-CA automatisch erzeugen

Öffne die Premium Firewall Policy und wähle Settings > TLS inspection. Wähle Enabled.

Wähle im Bereich für die automatische Erstellung die mit (New) markierten Einträge für:

Managed identity: Erzeuge die Ressource fw-cert-id
Key vault: Erzeuge die Ressource fw-cert-kv
Certificate: Erzeuge die Ressource fw-cert

Das Portal ergänzt diese Namen um eindeutige Suffixe. Notiere die exakten Namen von Key Vault und Zertifikat; der nächste Schritt benötigt sie. Wähle Save und warte, bis die Policyaktualisierung abgeschlossen ist.

TLS-Inspection-Seite der Premium Firewall Policy mit erzeugter Managed Identity, Key Vault und CA-Zertifikat

Wenn das Zertifikat nicht auswählbar ist, öffne den erzeugten Key Vault und füge für dein eigenes Benutzerkonto eine Access Policy mit Get und List unter Certificate permissions und Secret permissions hinzu. Die Managed Identity der Firewall benötigt ebenfalls Get und List unter Secret permissions; der automatische Workflow erstellt diese Policy normalerweise selbst.

Der erzeugten CA auf der VM vertrauen

Die Firewall kann jetzt Ersatzzertifikate erstellen, aber die VM vertraut deren Aussteller noch nicht. Die folgenden Befehle laden das öffentliche CA-Zertifikat mit Azure CLI herunter und fügen es aus der Ferne zur Liste der vertrauenswürdigen Zertifizierungsstellen von Ubuntu hinzu. Du musst die Datei nicht manuell auf die VM kopieren.

Öffne auf deinem Mac ein Terminal, in dem Azure CLI bei CloudTrips TEST angemeldet ist. Ersetze beide Platzhalter durch die Namen von der TLS-Inspection-Seite:

az keyvault certificate download \
  --vault-name <generated-key-vault-name> \
  --name <generated-certificate-name> \
  --file /tmp/cloudtrips-firewall-root.pem \
  --encoding PEM

Die heruntergeladene Datei enthält das öffentliche Zertifikat und nicht den privaten Schlüssel. Prüfe sie:

openssl x509 \
  -in /tmp/cloudtrips-firewall-root.pem \
  -noout \
  -subject \
  -issuer

Codiere das öffentliche Zertifikat, damit Azure VM Run Command es sicher als Text übertragen kann:

CLOUDTRIPS_CA_BASE64=$(base64 < /tmp/cloudtrips-firewall-root.pem | tr -d '\n')

Installiere es auf der Test-VM:

az vm run-command invoke \
  --resource-group rg-cloudtrips-network-test-weu \
  --name vm-cloudtrips-bastion-test-weu \
  --command-id RunShellScript \
  --scripts "echo '$CLOUDTRIPS_CA_BASE64' | base64 --decode | sudo tee /usr/local/share/ca-certificates/cloudtrips-firewall-root.crt >/dev/null; sudo update-ca-certificates"

Die Ausgabe sollte melden, dass ein Zertifikat hinzugefügt wurde. Die Installation einer Root CA bedeutet, dass die Maschine den von ihr ausgestellten Zertifikaten vertraut. Verteile dieses Vertrauen deshalb nur an kontrollierte Lab-Systeme.

Inspektion für die HTTPS-Regel aktivieren

Kehre zur Premium Firewall Policy zurück. Öffne unter Settings > Rules die Application-Rule-Collection Allow-Approved-Web und bearbeite Allow-Microsoft-Web.

Behalte Quelle, Protokolle und Ziel bei und aktiviere:

TLS inspection: Enabled

Die Regel sollte weiterhin enthalten:

Source: 10.20.1.0/24
Protocol: HTTPS:443
Destination type: FQDN
Destination: www.microsoft.com

Wähle Save oder Add und warte, bis der Bereitstellungsstatus der Policy Succeeded lautet.

Application Rule Allow-Microsoft-Web mit aktivierter TLS Inspection in der Premium Firewall Policy

TLS Inspection wird nicht automatisch auf jede verschlüsselte Verbindung angewendet. Nur Datenverkehr, der einer Application Rule mit aktivierter TLS Inspection entspricht, wird entschlüsselt und geprüft.

TLS-Interception überprüfen

Starte vm-cloudtrips-bastion-test-weu, falls sie freigegeben ist, und verbinde dich über Connect > Bastion. Führe aus:

curl -vI https://www.microsoft.com 2>&1 | grep -E 'issuer:|SSL certificate verify ok|HTTP/'

Die Ausgabe sollte zeigen:

issuer: Die erzeugte CloudTrips-Firewall-CA
SSL certificate verify ok
HTTP/2 200, 301 oder 302

Der exakte Ausstellertext und HTTP-Status können abweichen. Entscheidend ist, dass die Zertifikatsprüfung erfolgreich ist und der Aussteller die erzeugte Firewall-CA statt der normalen öffentlichen CA der Website ist.

Bastion-Terminal mit vertrauenswürdiger HTTPS-Antwort und der erzeugten Firewall-CA als Zertifikatsaussteller

Damit ist bewiesen, dass die VM eine Verbindung zum erzeugten Zertifikat von Azure Firewall aufbaute, die Firewall die entschlüsselte Sitzung prüfte und eine separate TLS-Verbindung zu www.microsoft.com herstellte.

Wenn curl Fehler 60 meldet, verwende nicht -k als Lösung. Bestätige, dass das heruntergeladene Zertifikat die in der Policy gewählte CA ist, und führe update-ca-certificates auf der VM erneut aus.

Fortfahren oder bereinigen

Der nächste Trip aktiviert Firewall IDPS. Behalte Premium-Firewall, Premium-Policy, erzeugte Managed Identity, Key Vault, CA-Zertifikat, Application- und DNAT-Regeln, Route und VM. Gib zwischen den Tests nur die VM frei.

Wenn du die Premium-Labs beendest, deaktiviere TLS Inspection zuerst auf Allow-Microsoft-Web und danach in der Policy. Führe ein Downgrade durch oder lösche die Premium-Firewall, bevor du den erzeugten Key Vault, das Zertifikat und die Managed Identity entfernst. Entferne die Lab-CA von der VM mit:

sudo rm /usr/local/share/ca-certificates/cloudtrips-firewall-root.crt
sudo update-ca-certificates --fresh

Folge der früheren Firewall-Policy-Bereinigung, wenn das gesamte Firewall-Lab abgeschlossen ist.