1. Pengantar
Kebijakan keamanan Cloud Armor digunakan untuk mengonfigurasi aturan yang ditentukan pengguna untuk memfilter traffic di edge jaringan Google, di upstream dari infrastruktur Anda. Kebijakan keamanan Network Edge dapat digunakan untuk membantu melindungi dan mengizinkan atau memblokir traffic yang menargetkan jenis endpoint berikut: Load Balancer Jaringan, Penerusan Protokol, dan VM dengan IP Publik.

Dalam codelab ini, kita akan mendemonstrasikan cara mengonfigurasi kebijakan keamanan Cloud Armor dengan aturan yang ditentukan pengguna untuk mencegah serangan DDoS.

Gambar 1. Cloud Armor untuk perlindungan VM dengan IP publik.
Yang akan Anda pelajari
- Konfigurasi kebijakan keamanan Cloud Armor dengan aturan yang ditentukan pengguna
- Konfigurasi dan pengujian Offset UDP.
Yang Anda butuhkan
- Pengetahuan tentang TCP/IP
- Pengetahuan tentang command line Unix/Linux
2. Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
3. Buat Jaringan VPC Target
Di bagian berikut, kita akan menyiapkan jaringan VPC dan konfigurasi jaringan terkait. Kebijakan keamanan edge jaringan Cloud Armor berbasis regional, kami menyiapkan semua resource terkait di region asia-southeast1.
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create ca4nlb --project=$prodproject --subnet-mode=custom
Buat Subnet
Dari Cloud Shell
gcloud compute networks subnets create ca4nlb-asia-southeast1 --project=$prodproject --range=10.0.0.0/24 --network=ca4nlb --region=asia-southeast1
Buat aturan Firewall.
Di bagian ini, kita akan menambahkan aturan firewall untuk mengizinkan traffic UDP yang diharapkan ke port 10000.
Dari Cloud Shell, buat aturan firewall untuk membuka port UDP 10000 untuk pengujian berikut.
gcloud compute firewall-rules create ca4nlb-udp10000 --allow udp:10000 --network ca4nlb --source-ranges 0.0.0.0/0 --enable-logging
Dari Cloud Shell, buat aturan firewall untuk mengizinkan IAP terhubung ke instance VM Anda.
gcloud compute firewall-rules create ca4nlb-iap-prod --network ca4nlb --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
4. Membuat Instance VM Target
Buat VM target untuk menguji kebijakan keamanan. VM ini harus memiliki alamat IP publik dan membuka port UDP 10000.
Dari Cloud Shell, buat instance targetvm
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. Mengonfigurasi perlindungan DDoS jaringan lanjutan
Dari 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. Membuat Kebijakan Keamanan Edge Jaringan dengan aturan default
Membuat Kebijakan Keamanan Edge Jaringan
Dari Cloud Shell
gcloud alpha compute security-policies create customnetworkedge --type=CLOUD_ARMOR_NETWORK --region=asia-southeast1
Mengubah aturan default
Dari Cloud Shell
gcloud alpha compute security-policies rules update 2147483647 --security-policy=customnetworkedge --action=deny --region=asia-southeast1
7. Membuat Kebijakan Keamanan Edge Jaringan dengan aturan yang dikonfigurasi pengguna
Menggunakan offset UDP yang telah ditentukan pengguna dan dikonfigurasi dalam kebijakan Cloud Armor. Paket dengan "nilai offset" ini akan lulus pemeriksaan kebijakan dan mengirimkannya ke VM backend. Dalam contoh berikut, kita akan menentukan dua "offset" dengan nilai yang berbeda.
Nilai pertama tepat setelah header UDP, cocok persis dengan 2 byte 0x1700
Nilai kedua adalah offset 8 byte header UDP, sama persis dengan 4 byte 0x12345678
Nilai yang telah ditentukan di atas akan diterjemahkan ke tampilan bit paket UDP.

Dari 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. Melampirkan Kebijakan Keamanan ke VM Target
Dari Cloud Shell, lampirkan kebijakan keamanan ke VM yang dilindungi.
gcloud alpha compute instances network-interfaces update targetvm \ --security-policy=customnetworkedge \ --security-policy-region=asia-southeast1 \ --network-interface=nic0 \ --zone=asia-southeast1-b
Dari Cloud Shell, deskripsikan VM target, akan melihat bahwa securityPolicy terlampir. Catat IP publik untuk pengujian berikutnya.
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
Dari Cloud Shell, lepaskan kebijakan keamanan dari VM yang dilindungi.
gcloud alpha compute instances network-interfaces update targetvm \ --network-interface=nic0 \ --zone=asia-southeast1-b \ --security-policy=
9. Siapkan Resource Pengujian.
Buat Jaringan VPC Uji Coba
Dari Cloud Shell
gcloud compute networks create test --project=$prodproject --subnet-mode=custom
Buat Subnet Pengujian
Dari Cloud Shell
gcloud compute networks subnets create test-asia-southeast1 --project=$prodproject --range=10.0.1.0/24 --network=test --region=asia-southeast1
Buat Firewall
Dari Cloud Shell, buat aturan firewall untuk mengizinkan IAP terhubung ke instance VM Anda.
gcloud compute firewall-rules create test-iap-prod --network test --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Buat VM Pengujian
Dari 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. Verifikasi
Login ke Konsol VM Pengujian dan instal pembuat paket packit.
sudo apt install packit
Mengikuti desain offset UDP, gunakan packit untuk membuat paket UDP. Kita menyimulasikan paket (-t udp) dari alamat IP sumber antarmuka (-s ens4) (-s 10.0.1.2) dengan port sumber (-S 10000) ke alamat IP tujuan targetVM (-d 35.240.148.100) dengan port tujuan (-D 10000). Konten paket cocok dengan nilai (-p ‘0x 17 00 00 00 00 00 00 00 12 34 56 78'). Kita akan mengirimkan (-c 4) paket.
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
Di VM Target, jalankan tcpdump untuk merekam paket UDP.
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
Jika kita mengubah pola traffic di VM pengujian, kita tidak dapat merekam paket apa pun di VM target.
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. Telemetri
Buka Cloud Metric, gunakan MQL di bawah untuk membuat kueri data telemetri NetworkSecurityPolicy.
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
Hasilkan traffic bervolume tinggi dengan perintah offset kecocokan.
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
Buat traffic bervolume tinggi dengan perintah offset yang tidak cocok.
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
Telemetri difilter menurut policy_name dan dikelompokkan menurut blocked. Garis biru menunjukkan traffic yang diizinkan oleh aturan kebijakan. Garis hijau menunjukkan traffic yang diblokir oleh aturan kebijakan.

12. Langkah-langkah pembersihan
Menghapus komponen lab dari satu shell cloud di terminal
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. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Kebijakan keamanan Cloud Armor dengan aturan yang ditentukan pelanggan