1. Einführung
Cloud Armor-Sicherheitsrichtlinien werden verwendet, um nutzerdefinierte Regeln zum Filtern von Traffic am Rand des Google-Netzwerks zu konfigurieren, vor Ihrer Infrastruktur. Mit Network Edge-Sicherheitsrichtlinien können Sie Traffic schützen und zulassen oder blockieren, der auf die folgenden Endpunkttypen ausgerichtet ist: Network Load Balancer, Protokollweiterleitung und VMs mit öffentlichen IP-Adressen.

In diesem Codelab wird gezeigt, wie Sie Cloud Armor-Sicherheitsrichtlinien mit benutzerdefinierten Regeln konfigurieren, um DDoS-Angriffe zu verhindern.

Abbildung 1. Cloud Armor für VMs mit öffentlicher IP-Adresse.
Lerninhalte
- Cloud Armor-Sicherheitsrichtlinien mit benutzerdefinierten Regeln konfigurieren
- UDP-Offset-Konfigurationen und ‑Tests.
Voraussetzungen
- Kenntnisse von TCP/IP
- Kenntnisse der Unix-/Linux-Befehlszeile
2. Hinweis
Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
3. Ziel-VPC-Netzwerk erstellen
Im folgenden Abschnitt richten wir VPC-Netzwerke und zugehörige Netzwerkkonfigurationen ein. Die Cloud Armor-Sicherheitsrichtlinie für den Netzwerk-Edge ist regional. Wir richten alle zugehörigen Ressourcen in der Region „asia-southeast1“ ein.
VPC-Netzwerk
Über Cloud Shell
gcloud compute networks create ca4nlb --project=$prodproject --subnet-mode=custom
Subnetz erstellen
Über Cloud Shell
gcloud compute networks subnets create ca4nlb-asia-southeast1 --project=$prodproject --range=10.0.0.0/24 --network=ca4nlb --region=asia-southeast1
Firewallregeln erstellen
In diesem Abschnitt fügen wir eine Firewallregel hinzu, um den erwarteten UDP-Traffic an Port 10000 zuzulassen.
Erstellen Sie in Cloud Shell eine Firewallregel, um den UDP-Port 10000 für die folgenden Tests zu öffnen.
gcloud compute firewall-rules create ca4nlb-udp10000 --allow udp:10000 --network ca4nlb --source-ranges 0.0.0.0/0 --enable-logging
Erstellen Sie in Cloud Shell eine Firewallregel, damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann.
gcloud compute firewall-rules create ca4nlb-iap-prod --network ca4nlb --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
4. Ziel-VM-Instanzen erstellen
Erstellen Sie eine Ziel-VM zum Testen von Sicherheitsrichtlinien. Diese VM sollte eine öffentliche IP-Adresse und einen offenen UDP-Port 10000 haben.
Instanz „targetvm“ über Cloud Shell erstellen
gcloud compute instances create targetvm \ --zone=asia-southeast1-b \ --image-family=debian-11 \ --image-project=debian-cloud \ --network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=ca4nlb-asia-southeast1 \ --shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring
5. Erweiterten DDoS-Schutz für Netzwerke konfigurieren
Über Cloud Shell
gcloud compute security-policies create ca_advanced_ddos \
--type CLOUD_ARMOR_NETWORK \
--region asia-southeast1
gcloud compute security-policies update ca_advanced_ddos \
--network-ddos-protection ADVANCED \
--region asia-southeast1
gcloud compute network-edge-security-services create caedgepolicy \
--security-policy ca_advanced_ddos \
--region asia-southeast1
6. Network Edge-Sicherheitsrichtlinie mit Standardregeln erstellen
Network Edge-Sicherheitsrichtlinie erstellen
Über Cloud Shell
gcloud alpha compute security-policies create customnetworkedge --type=CLOUD_ARMOR_NETWORK --region=asia-southeast1
Standardregel ändern
Über Cloud Shell
gcloud alpha compute security-policies rules update 2147483647 --security-policy=customnetworkedge --action=deny --region=asia-southeast1
7. Sicherheitsrichtlinie für Network Edge mit benutzerkonfigurierten Regeln erstellen
Vom Nutzer vordefinierter UDP-Offset, der in der Cloud Armor-Richtlinie konfiguriert ist. Pakete mit diesen „Offset-Werten“ bestehen die Richtlinienprüfung und werden an die Backend-VM gesendet. Im folgenden Beispiel definieren wir zwei „offset“-Parameter mit unterschiedlichen Werten.
Der erste Wert befindet sich direkt nach dem UDP-Header und entspricht genau 2 Byte 0x1700.
Der zweite Wert ist ein Offset von 8 Byte des UDP-Headers und entspricht genau 4 Byte 0x12345678.
Der oben vordefinierte Wert wird in eine Bitansicht des UDP-Pakets übersetzt.

Über Cloud Shell
gcloud alpha compute security-policies add-user-defined-field customnetworkedge \ --user-defined-field-name=SIG1_AT_0 \ --base=udp --offset=8 --size=2 --mask=0xFF00 \ --region=asia-southeast1 gcloud alpha compute security-policies add-user-defined-field customnetworkedge \ --user-defined-field-name=SIG2_AT_8 \ --base=udp --offset=16 --size=4 --mask=0xFFFFFFFF \ --region=asia-southeast1 gcloud alpha compute security-policies rules create 1000 \ --security-policy=customnetworkedge \ --network-user-defined-fields="SIG1_AT_0;0x1700,SIG2_AT_8;0x12345678" \ --action=allow --region=asia-southeast1
8. Sicherheitsrichtlinie an Ziel-VM anhängen
Hängen Sie in Cloud Shell die Sicherheitsrichtlinie an die geschützte VM an.
gcloud alpha compute instances network-interfaces update targetvm \ --security-policy=customnetworkedge \ --security-policy-region=asia-southeast1 \ --network-interface=nic0 \ --zone=asia-southeast1-b
Wenn Sie in Cloud Shell die Ziel-VM beschreiben, sehen Sie, dass die securityPolicy angehängt ist. Notieren Sie sich die öffentliche IP-Adresse für die folgenden Tests.
gcloud alpha compute instances describe targetvm --zone=asia-southeast1-b
networkInterfaces:
- accessConfigs:
- kind: compute#accessConfig
name: External NAT
natIP: 35.240.148.100
networkTier: PREMIUM
securityPolicy: https://www.googleapis.com/compute/alpha/projects/<project>/regions/asia-southeast1/securityPolicies/customnetworkedge
Trennen Sie in Cloud Shell die Sicherheitsrichtlinie von der geschützten VM.
gcloud alpha compute instances network-interfaces update targetvm \ --network-interface=nic0 \ --zone=asia-southeast1-b \ --security-policy=
9. Testressourcen vorbereiten
Test-VPC-Netzwerk erstellen
Über Cloud Shell
gcloud compute networks create test --project=$prodproject --subnet-mode=custom
Test-Subnetz erstellen
Über Cloud Shell
gcloud compute networks subnets create test-asia-southeast1 --project=$prodproject --range=10.0.1.0/24 --network=test --region=asia-southeast1
Firewall erstellen
Erstellen Sie in Cloud Shell eine Firewallregel, damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann.
gcloud compute firewall-rules create test-iap-prod --network test --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Test-VM erstellen
Über Cloud Shell
gcloud compute instances create test01 \
--zone=asia-southeast1-b \
--image-family=debian-11 \
--image-project=debian-cloud \
--network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=test-asia-southeast1 \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring
10. Bestätigung
Melden Sie sich in der Console der Test-VM an und installieren Sie den Paketgenerator packit.
sudo apt install packit
Verwenden Sie packit, um UDP-Pakete zu generieren, die dem UDP-Offset-Design entsprechen. Wir simulieren ein Paket (-t udp) von der Quell-IP-Adresse der Schnittstelle (-s ens4) (-s 10.0.1.2) mit Quellports (-S 10000) an die Ziel-IP-Adresse der targetVM (-d 35.240.148.100) mit Zielports (-D 10000). Der Paketinhalt stimmt mit den Werten überein (-p „0x 17 00 00 00 00 00 00 00 12 34 56 78“). Wir senden (-c 4) Pakete.
sudo packit -m inject -t UDP -i ens4 -s 10.0.1.2 -d 35.240.148.100 -S 10000 -D 10000 -p '0x 17 00 00 00 00 00 00 00 12 34 56 78' -c 4
Führen Sie auf der Ziel-VM „tcpdump“ aus, um das UDP-Paket zu erfassen.
sudo tcpdump port 10000 -v -n
tcpdump: listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes
06:36:18.434106 IP (tos 0x0, ttl 128, id 17173, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
06:36:19.433656 IP (tos 0x0, ttl 128, id 55641, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
06:36:20.433935 IP (tos 0x0, ttl 128, id 27161, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
06:36:21.434150 IP (tos 0x0, ttl 128, id 46782, offset 0, flags [none], proto UDP (17), length 40)
35.197.157.140.10000 > 10.0.0.2.10000: UDP, length 12
Wenn wir die Traffic-Muster in der Test-VM ändern, können wir keine Pakete in der Ziel-VM erfassen.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 33 33 00 00 00 00 00 00 12 34 56 78' -c 4
11. Telemetrie
Öffnen Sie Cloud Metric und verwenden Sie die folgende MQL, um Telemetriedaten der NetworkSecurityPolicy abzufragen.
fetch networksecurity.googleapis.com/RegionalNetworkSecurityPolicy | metric 'networksecurity.googleapis.com/l3/external/packet_count' | filter (resource.policy_name == 'customnetworkedge') | align rate(1m) | every 1m | group_by [metric.blocked], [value_packet_count_mean: mean(value.packet_count)] | group_by 1m, [value_packet_count_mean_mean: mean(value_packet_count_mean)] | every 1m
Mit dem Befehl „match offset“ lässt sich ein hohes Traffic-Volumen generieren.
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 17 00 00 00 00 00 00 00 12 34 56 78' -c 1000000 -w 0.001 [result] Injected: 1000000 Packets/Sec: 10309.27 Bytes/Sec: 412371.13 Errors: 0
Hohes Traffic-Volumen mit einem Befehl für den Abgleichs-Offset generieren
sudo packit -m inject -t UDP -i ens4 -s 10.148.0.6 -d 34.87.79.31 -S 10000 -D 10000 -p '0x 11 00 00 00 00 00 00 00 12 34 56 78' -c 1000000 -w 0.001 [result] Injected: 1000000 Packets/Sec: 10309.27 Bytes/Sec: 412371.13 Errors: 0
Die Telemetrie wird nach „policy_name“ gefiltert und nach „blocked“ gruppiert. Die blaue Linie zeigt den Traffic an, der gemäß den Richtlinienregeln zulässig ist. Die grüne Linie steht für Traffic, der durch Richtlinienregeln blockiert wurde.

12. Bereinigungsschritte
Lab-Komponenten über eine einzelne Cloud Shell im Terminal löschen
gcloud compute instances delete targetvm --zone=asia-southeast1-b gcloud compute firewall-rules delete ca4nlb-udp10000 gcloud compute firewall-rules delete ca4nlb-iap-prod gcloud compute networks subnets delete ca4nlb-asia-southeast1 --region=asia-southeast1 gcloud compute networks delete ca4nlb gcloud alpha compute security-policies delete customnetworkedge --region=asia-southeast1 gcloud alpha compute network-edge-security-services delete caedgepolicy --region=asia-southeast1 gcloud alpha compute security-policies delete ca_advanced_ddos --region=asia-southeast1 gcloud compute instances delete test01 --zone=asia-southeast1-b gcloud compute firewall-rules delete test-iap-prod gcloud compute networks subnets delete test-asia-southeast1 --region=asia-southeast1 gcloud compute networks delete test
13. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- Cloud Armor-Sicherheitsrichtlinien mit kundendefinierten Regeln