Cloud Armor untuk NLB/VM dengan Aturan yang Ditetapkan Pengguna

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.

7bc9d3ed0c03b54f.png

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

f0a40260147e71b1.png

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.

cbfdaeb93292e07b.png

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.

b11ba15d87f99775.png

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