Cloud Armor untuk NLB/VM dengan Aturan yang Ditetapkan Pengguna

1. Pengantar

Kebijakan keamanan Cloud Armor digunakan untuk mengonfigurasi aturan yang ditetapkan pengguna guna 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.pngS

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

f0a40260147e71b1.png

Gambar 1. Cloud Armor untuk VM dengan perlindungan IP publik.

Yang akan Anda pelajari

  • Kebijakan keamanan Cloud Armor dengan konfigurasi aturan yang ditentukan pengguna
  • Konfigurasi dan pengujian Offset UDP.

Yang Anda butuhkan

  • Pengetahuan tentang TCP/IP
  • Mengetahui 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. Membuat 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 guna mengikuti pengujian.

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 target VM 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 Network Edge dengan aturan default

Buat Kebijakan Keamanan Network Edge

Dari Cloud Shell

gcloud alpha compute security-policies create customnetworkedge --type=CLOUD_ARMOR_NETWORK --region=asia-southeast1

Ubah 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 Network Edge dengan aturan yang dikonfigurasi dan digunakan

Offset UDP yang telah ditentukan pengguna dan dikonfigurasi di kebijakan cloud armor. Paket dengan "nilai offset" ini akan lulus pemeriksaan kebijakan dan mengirimkannya ke VM backend. Pada contoh berikut, kita akan mendefinisikan dua "offset". dengan nilai yang berbeda.

Nilai pertama tepat setelah header UDP, sama persis dengan 2 byte 0x1700

Nilai kedua adalah offset 8 byte dari header UDP, sama persis dengan 4 byte 0x12345678

Di atas nilai yang telah ditentukan di atas, tampilan bit paket UDP akan ditampilkan.

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. Lampirkan 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 menjelaskan target VM, akan terlihat securityPolicy terlampir. Catat IP publik untuk pengujian berikut.

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. Menyiapkan Resource Pengujian.

Membuat Jaringan VPC Pengujian

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

Membuat Test VM

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 generator paket packit.

sudo apt install packit

Dengan mengikuti desain offset UDP, gunakan packit untuk menghasilkan paket UDP. Kami 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'). Kami akan mengirimkan paket (-c 4).

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 Target VM, jalankan tcpdump untuk mengambil 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 mengubah pola traffic di VM pengujian, kita tidak dapat menangkap 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 Metrik Cloud, gunakan di bawah MQL untuk membuat kueri data telemetri NetworkSercurityPolicy.

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

Menghasilkan traffic bervolume tinggi dengan perintah match offset.

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

Menghasilkan traffic bervolume tinggi dengan perintah unmatch offset.

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 berdasarkan policy_name dan dikelompokkan berdasarkan diblokir. Garis biru menunjukkan traffic yang diizinkan oleh aturan kebijakan. Garis hijau menunjukkan traffic yang diblokir oleh aturan kebijakan.

b11ba15d87f99775.png

12. Langkah-langkah pembersihan

Dari satu Cloud Shell di terminal, hapus komponen lab

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