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.
Dalam codelab ini, kami akan mendemonstrasikan cara mengonfigurasi kebijakan keamanan Cloud Armor dengan aturan yang ditentukan pengguna untuk mencegah serangan DDoS.
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.
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.
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