Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Netzwerksicherheit stärken: FQDN-Egress-Filterung mit Google Cloud Firewall Policy

By Chimbu ChinnaduraiJun 21, 20237 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Eine der wichtigsten Techniken zur Egress-Filterung ist die Filterung per Fully Qualified Domain Name (FQDN). Damit steuern Administratoren ausgehenden Traffic präzise anhand von Domainnamen.

fqdn

Daten bewegen sich heute ungehindert zwischen Netzwerken und Systemen. Umso wichtiger ist es, robuste Sicherheitsmaßnahmen zum Schutz sensibler Informationen umzusetzen. Während die Filterung eingehender Verbindungen viel Aufmerksamkeit bekommt, wird die Bedeutung der Egress-Filterung oft unterschätzt. Mit Egress-Filterung lässt sich die ausgehende Netzwerkkommunikation gezielt steuern, sodass nur autorisierte und sichere Verbindungen zustande kommen.

Eine der wichtigsten Techniken zur Egress-Filterung ist die Filterung per Fully Qualified Domain Name (FQDN). Damit steuern Administratoren ausgehenden Traffic präzise anhand von Domainnamen. In Verbindung mit der Firewall Policy der Google Cloud Platform (GCP) erhalten Unternehmen ein hohes Maß an Sicherheit und Kontrolle über ihre Netzwerk-Egress-Punkte.

In diesem Blogbeitrag zeigen wir Schritt für Schritt, wie Sie FQDN-Egress-Filterung in GCP mithilfe von FQDN-Objekten in Firewall-Policy-Regeln umsetzen. Die Firewall Policy ist eine eigenständige Funktion innerhalb der Cloud Firewall und bietet deutlich mehr Möglichkeiten als die VPC-Firewall-Regeln.

Die FQDN-Objekt-Funktion in Firewall-Policy-Regeln befindet sich derzeit in der Preview; SLAs oder technische Support-Zusagen seitens des GCP-Supports gibt es dafür nicht.

Was ist eine Firewall Policy?

Die Firewall Policy der Google Cloud Platform (GCP) ist eine Netzwerksicherheitsfunktion, mit der Sie zentral verwaltete Firewall-Regeln für Ihre Virtual-Machine-Instanzen (VM) und VPC-Netzwerke (Virtual Private Cloud) definieren und durchsetzen.

Sie bietet einen einheitlichen, skalierbaren Ansatz zur Steuerung des Netzwerk-Traffics: ein- und ausgehende Kommunikation kontrollieren, Traffic nach verschiedenen Kriterien filtern und das Sicherheitsniveau insgesamt erhöhen.

Mit der Firewall Policy lassen sich feingranulare Regeln definieren, die festlegen, welcher Traffic anhand von IP-Bereichen, Ports, Protokollen oder sogar Fully Qualified Domain Names (FQDNs) erlaubt oder blockiert wird. So errichten Sie einen sicheren Netzwerkperimeter und schützen Ihre Cloud-Ressourcen vor unbefugtem Zugriff und schädlichen Aktivitäten.

Wichtige Funktionen und Vorteile der GCP Firewall Policy im Überblick:

  • Zentrale Verwaltung: Firewall-Regeln über mehrere Projekte, Regionen und VPC-Netzwerke hinweg lassen sich aus einer einzigen Oberfläche heraus konfigurieren – das vereinfacht die Verwaltung von Netzwerksicherheits-Richtlinien erheblich.
  • Flexible Regeldefinitionen: Die Cloud Firewall Policy unterstützt Regeln auf Basis von IP-Adressen, Adressbereichen, Ports, Protokollen und FQDNs. Diese Flexibilität erlaubt eine granulare Steuerung des ein- und ausgehenden Traffics und sehr spezifische Sicherheitsrichtlinien.
  • Dynamische Aktualisierungen: Firewall-Regeln können in Echtzeit angepasst werden, sodass Sie auf veränderte Sicherheitsanforderungen reagieren können, ohne den laufenden Netzwerk-Traffic zu unterbrechen.
  • Integration in Google-Cloud-Dienste: Die Cloud Firewall Policy fügt sich nahtlos in andere Google-Cloud-Dienste wie VPC-Netzwerke, Load Balancer und VM-Instanzen ein und sorgt für konsistente Sicherheitskontrollen über die gesamte Infrastruktur hinweg.
  • Logging und Monitoring: Detaillierte Logging- und Monitoring-Funktionen geben Ihnen Einblick in den Netzwerk-Traffic, helfen bei der Analyse von Sicherheitsereignissen und beim effizienten Troubleshooting.

Referenzarchitektur

alt-text

Beispielaufbau

Implementierungsschritte für die Referenzarchitektur:

  • Private Google Access einrichten
  • Cloud NAT für Internetzugriff einrichten
  • Firewall-Policy-Regeln einrichten

Private Google Access einrichten

Private Google Access erlaubt Ressourcen innerhalb eines VPC-Netzwerks (Virtual Private Cloud), Google-Dienste über private IP-Adressen zu erreichen – ganz ohne externe Internetverbindung.

Zusätzlich richten wir Private Google Access mit der Domain private.googleapis.com oder restricted.googleapis.com ein, damit Anfragen an Google-APIs ausschließlich innerhalb von Google Cloud geroutet werden.

Private Google Access wird pro Subnetz aktiviert. Aktivieren Sie es auf einem bestehenden Subnetz und passen Sie die Variablen entsprechend an.

gcloud config set project $PROJECT_ID
gcloud compute networks subnets update $SUBNET_NAME \
--region=$REGION \
--enable-private-ip-google-access

alt-text

Für dieses Setup legen wir Cloud-DNS-Zonen für private.googleapis.com an. Wenn Sie VPC Service Controls einsetzen, verwenden Sie stattdessen restricted.googleapis.com. Details dazu finden Sie unter Domain options.

Legen Sie eine private DNS-Zone für googleapis.com an:

gcloud dns managed-zones create googleapis-com \
--dns-name=googleapis.com. \
--description="googleapis-com domain for PGA" \
--visibility=private \
--networks=$NETWORK_NAME

alt-text

Legen Sie einen A-Record für private.googleapis.com an, der auf folgende IP-Adressen zeigt: 199.36.153.8 , 199.36.153.9 , 199.36.153.10 , 199.36.153.11 .

gcloud dns record-sets create "private.googleapis.com." \<br>
--type="A" \<br>
--ttl="300" \<br>
--rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11" \<br>
--zone="googleapis-com"

Legen Sie einen CNAME-Record für *.googleapis.com an, der auf die zuvor konfigurierte Domain verweist: private.googleapis.com .

gcloud dns record-sets create "*.googleapis.com." \
--type="CNAME" \
--ttl="300" \
--rrdatas="private.googleapis.com." \
--zone="googleapis-com"

alt-text

Einige Google-APIs und -Dienste werden über zusätzliche Domainnamen bereitgestellt, etwa *.gcr.io , *.gstatic.com , *.pkg.dev und pki.goog.

Prüfen Sie in der Tabelle der Domains und IP-Adressbereiche unter Domain options, ob die jeweiligen Dienste über private.googleapis.com oder restricted.googleapis.com erreichbar sind. Wenn Sie zum Beispiel Google Kubernetes Engine (GKE) nutzen, müssen Sie zusätzlich private Zonen für *.gcr.io und *.pkg.dev in Cloud DNS einrichten.

Cloud NAT einrichten

Cloud NAT ist ein verteilter, software-definierter Managed Service, mit dem Ressourcen ohne externe IP-Adresse ausgehende Verbindungen ins Internet aufbauen können. Statt des Standard-Internet-Gateways empfiehlt sich Cloud NAT, um den ausgehenden Traffic gezielt zu steuern.

Legen Sie einen Cloud Router in der gewünschten Region an:

gcloud compute routers create cloud-firewall-policy-demo-cloud-nat \
--network=$NETWORK_NAME \
--region=$REGION

Erstellen Sie das Cloud NAT Gateway:

gcloud compute routers nats create cloud-firewall-policy-demo-cloud-nat \
--router=cloud-firewall-policy-demo-cloud-nat \
--region=$REGION \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

alt-text

Firewall-Policy-Regeln einrichten

Firewall Policies gibt es in drei Varianten:

  • Hierarchische Firewall Policies erlauben es, eine konsistente Firewall Policy organisationsweit zu erstellen und durchzusetzen. Sie lassen sich der gesamten Organisation oder einzelnen Ordnern zuweisen.
  • Globale Network Firewall Policies bündeln alle Firewall-Regeln in einem einzigen Policy-Objekt und ermöglichen so Massenaktualisierungen; die Regeln gelten in allen Regionen.
  • Regionale Network Firewall Policies erlauben es, eine konsistente Firewall Policy für alle Subnetze einer Region in Ihrem VPC-Netzwerk zu erstellen und durchzusetzen.

Erstellen Sie eine Global Network Firewall Policy für dieses Setup:

gcloud compute network-firewall-policies create global-demo-firewall-policy \
--global

Verknüpfen Sie die Firewall Policy mit dem Zielnetzwerk:

gcloud compute network-firewall-policies associations create \
--firewall-policy=global-demo-firewall-policy \
--network=$NETWORK_NAME --global-firewall-policy

alt-text

Die Standard-Firewall-Regeln sind Bestandteil der Policy

alt-text

Verknüpfung des Netzwerks mit der Policy

Damit sind alle Ressourcen vorhanden, um FQDN-Egress-Filterung über FQDN-Objekte in Firewall-Policy-Regeln durchzusetzen. Im nächsten Schritt fügen wir der Firewall Policy die nötigen Regeln hinzu.

Aktuell gibt es keine Einschränkungen für ausgehenden Traffic; Instanzen im Netzwerk haben uneingeschränkten Internetzugang.

alt-text

alt-text

In diesem Setup erlauben wir ausgehenden Traffic ausschließlich zu www.example.com und zur öffentlichen IP-Adresse von private.googleapis.com; alles andere blockieren wir.

Legen Sie eine Standard-Ingress-Allow-Regel an. Eingehender Zugriff ist damit uneingeschränkt erlaubt – passen Sie die Regel bei Bedarf an Ihre Anforderungen an.

gcloud compute network-firewall-policies rules create 1001 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="INGRESS" \
--description="Allow ingress traffic" \
--src-ip-ranges="0.0.0.0/0" \
--layer4-configs="all" \
--global-firewall-policy

Legen Sie eine Firewall-Regel an, die Kommunikation mit privaten IP-Bereichen erlaubt. Achten Sie darauf, alle weiteren in Ihrer Umgebung genutzten privaten Bereiche aufzunehmen, damit die Kommunikation zwischen den Instanzen nicht beeinträchtigt wird.

gcloud compute network-firewall-policies rules create 999 \
--firewall-policy="global-demo-firewall-policy" -\
-action="allow" \
--direction="EGRESS" \
--description="Allow communication with private IP ranges" \
--dest-ip-ranges="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" \
--layer4-configs="all" \
--global-firewall-policy

Legen Sie eine Firewall-Policy-Regel an, die ausgehende Anfragen an die öffentlichen IPs von private.googleapis.com erlaubt; diese IPs sind nur innerhalb von Google Cloud routbar.

gcloud compute network-firewall-policies rules create 998 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="EGRESS" \
--description="Allow DNS resolution requests to private.googleapis.com" \
--dest-ip-ranges="199.36.153.8/32,199.36.153.9/32,199.36.153.10/32,199.36.153.11/32" \
--layer4-configs="tcp:443" \
--global-firewall-policy

Legen Sie eine Firewall-Policy-Regel an, die ausgehende Anfragen an www.example.com erlaubt:

gcloud compute network-firewall-policies rules create 997 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="EGRESS" \
--description="FQDN egress filtering rules" \
--dest-fqdns="www.example.com" \
--layer4-configs="tcp:80,tcp:443" \
--global-firewall-policy

Legen Sie nun eine Standard-Egress-Deny-Regel an. Stellen Sie vorher sicher, dass Sie für alle benötigten Domains und IP-Bereiche bereits Allow-Regeln erstellt haben.

gcloud compute network-firewall-policies rules create 1000 \
--firewall-policy="global-demo-firewall-policy" \
--action="deny" \
--direction="EGRESS" \
--description="Deny all Egress traffic" \
--dest-ip-ranges="0.0.0.0/0" \
--layer4-configs="all" \
--global-firewall-policy

Konsolidierte Übersicht der Firewall-Policy-Regeln:

alt-text

Die Regeln können bis zu 30 Sekunden brauchen, bis sie greifen. Testen Sie anschließend die Netzwerkkonnektivität von einer GCE-Instanz oder aus GKE-Pods. Ausgehende Anfragen sind dann nur noch zu den in der Firewall Policy hinterlegten Domains und IP-Bereichen möglich.

alt-text

Testergebnisse nach Aktivierung der Firewall-Policy-Regeln

In diesem Beispiel haben wir gezeigt, wie sich FQDN-Objekte in Firewall-Policy-Regeln zur Egress-Filterung einsetzen lassen. Diese Methode ist ein wirkungsvolles Mittel, um die Netzwerksicherheit zu erhöhen und Egress-Punkte gezielt zu kontrollieren.

Weitere Informationen zur Firewall Policy finden Sie auf der Produktseite.