उपयोगकर्ता के तय किए गए नियमों के साथ, NLB/VM के लिए Cloud आर्मर

1. परिचय

Cloud Armor की सुरक्षा नीतियों का इस्तेमाल, उपयोगकर्ता के तय किए गए नियमों को कॉन्फ़िगर करने के लिए किया जाता है. इससे Google के नेटवर्क के किनारे पर मौजूद, आपके इन्फ़्रास्ट्रक्चर से अपस्ट्रीम ट्रैफ़िक को फ़िल्टर किया जाता है. Network Edge की सुरक्षा नीतियों का इस्तेमाल, इन एंडपॉइंट टाइप को टारगेट करने वाले ट्रैफ़िक को सुरक्षित रखने और अनुमति देने या ब्लॉक करने के लिए किया जा सकता है: नेटवर्क लोड बैलेंसर, प्रोटोकॉल फ़ॉरवर्ड करने की सुविधा, और सार्वजनिक आईपी वाले वीएम.

7bc9d3ed0c03b54f.png

इस कोड लैब में, हम डीडीओएस हमलों को रोकने के लिए, Cloud Armor की सुरक्षा नीतियों को उपयोगकर्ता के तय किए गए नियमों के साथ कॉन्फ़िगर करने का तरीका बताएंगे.

f0a40260147e71b1.png

पहली इमेज. सार्वजनिक आईपी सुरक्षा के साथ वर्चुअल मशीन (वीएम) के लिए Cloud Armor.

आपको इनके बारे में जानकारी मिलेगी

  • Cloud Armor की सुरक्षा नीतियों के हिसाब से, उपयोगकर्ता के तय किए गए नियमों को कॉन्फ़िगर करें
  • यूडीपी ऑफ़सेट कॉन्फ़िगरेशन और टेस्टिंग.

आपको इन चीज़ों की ज़रूरत होगी

  • टीसीपी/आईपी की जानकारी
  • Unix/Linux कमांड लाइन के बारे में जानकारी

2. शुरू करने से पहले

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
prodproject=YOUR-PROJECT-NAME
echo $prodproject

3. टारगेट VPC नेटवर्क बनाएं

नीचे दिए गए सेक्शन में, हम VPC नेटवर्क और इससे जुड़े नेटवर्किंग कॉन्फ़िगरेशन सेट अप करेंगे. Cloud Armor नेटवर्क के किनारे की सुरक्षा नीति, देश/इलाके के हिसाब से तय की गई है. हम इससे जुड़े सभी संसाधनों को asia-southeast1 इलाके में सेट अप करते हैं.

VPC नेटवर्क

Cloud Shell से

gcloud compute networks create ca4nlb --project=$prodproject --subnet-mode=custom

सबनेट बनाना

Cloud Shell से

gcloud compute networks subnets create ca4nlb-asia-southeast1 --project=$prodproject --range=10.0.0.0/24 --network=ca4nlb --region=asia-southeast1

फ़ायरवॉल के नियम बनाएं.

इस सेक्शन में, हम फ़ायरवॉल का नियम जोड़ेंगे, ताकि पोर्ट 10000 पर यूडीपी ट्रैफ़िक को अनुमति दी जा सके.

Cloud Shell से, फ़ायरवॉल का नियम बनाएं, ताकि नीचे दी गई जांच के लिए यूडीपी पोर्ट 10000 खोला जा सके.

gcloud compute firewall-rules create ca4nlb-udp10000 --allow udp:10000 --network ca4nlb --source-ranges 0.0.0.0/0 --enable-logging

Cloud Shell से, फ़ायरवॉल का नियम बनाएं, ताकि आईएपी को आपके वीएम इंस्टेंस से कनेक्ट किया जा सके.

gcloud compute firewall-rules create ca4nlb-iap-prod --network ca4nlb --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

4. टारगेट वीएम इंस्टेंस बनाएं

सुरक्षा नीतियों की जांच करने के लिए टारगेट वीएम बनाएं. इस वीएम का सार्वजनिक आईपी पता होना चाहिए. साथ ही, यूडीपी पोर्ट 10000 होना चाहिए.

Cloud Shell से 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. नेटवर्क डीडीओएस की बेहतर सुरक्षा कॉन्फ़िगर करें

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 की सुरक्षा नीति बनाएं

Network Edge की सुरक्षा नीति बनाएं

Cloud Shell से

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

डिफ़ॉल्ट नियम में बदलाव करें

Cloud Shell से

gcloud alpha compute security-policies rules update 2147483647 --security-policy=customnetworkedge --action=deny --region=asia-southeast1

7. इस्तेमाल किए गए कॉन्फ़िगर किए गए नियमों की मदद से, Network Edge की सुरक्षा नीति बनाएं

उपयोगकर्ता ने पहले से तय यूडीपी ऑफ़सेट किया हो और उसे क्लाउड कवच नीति में कॉन्फ़िगर किया हो. इस "ऑफ़सेट वैल्यू" वाला पैकेट नीति जांच में पास हो जाएगा और उसे बैकएंड वीएम पर भेज दिया जाएगा. नीचे दिए गए उदाहरण में, हम दो "ऑफ़सेट" की जानकारी देंगे का इस्तेमाल करें.

पहली वैल्यू, यूडीपी हेडर के ठीक बाद की है. यह दो बाइट 0x1700 से पूरी तरह मेल खाती है

दूसरा मान यूडीपी हेडर के 8 बाइट ऑफ़सेट है, 4 बाइट 0x12345678 से पूरी तरह मेल खाता है

ऊपर दी गई वैल्यू, यूडीपी पैकेट बिट व्यू में बदल जाएगी.

cbfdaeb93292e07b.png

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. टारगेट वीएम के लिए सुरक्षा नीति अटैच करें

Cloud Shell से सुरक्षित वीएम पर सुरक्षा नीति अटैच की जाती है.

gcloud alpha compute instances network-interfaces update targetvm \
--security-policy=customnetworkedge \
--security-policy-region=asia-southeast1 \
--network-interface=nic0 \
--zone=asia-southeast1-b

Cloud Shell से टारगेट वीएम के बारे में जानकारी देने पर, क्या होगा कि सुरक्षा नीति जुड़ी हुई है. फ़ॉलो की जा रही जांच के लिए सार्वजनिक आईपी रिकॉर्ड करें.

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

Cloud Shell से, सुरक्षित वीएम से सुरक्षा नीति को अलग करें.

gcloud alpha compute instances network-interfaces update targetvm \
--network-interface=nic0 \
--zone=asia-southeast1-b \
--security-policy= 

9. टेस्ट के लिए संसाधन तैयार करें.

टेस्ट VPC नेटवर्क बनाना

Cloud Shell से

gcloud compute networks create test --project=$prodproject --subnet-mode=custom

टेस्ट सबनेट बनाएं

Cloud Shell से

gcloud compute networks subnets create test-asia-southeast1 --project=$prodproject --range=10.0.1.0/24 --network=test --region=asia-southeast1

फ़ायरवॉल बनाएं

Cloud Shell से, फ़ायरवॉल का नियम बनाएं, ताकि आईएपी को आपके वीएम इंस्टेंस से कनेक्ट किया जा सके.

gcloud compute firewall-rules create test-iap-prod --network test --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

टेस्ट वीएम बनाना

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. पुष्टि करने का तरीका

वीएम कंसोल लॉगिन करके जांच करें और पैकेट जनरेटर packit इंस्टॉल करें.

sudo apt install packit

यूडीपी ऑफ़सेट डिज़ाइन के मुताबिक, यूडीपी पैकेट जनरेट करने के लिए पैक का इस्तेमाल करें. हम डेस्टिनेशन पोर्ट (-D 10000) के साथ targetVM डेस्टिनेशन आईपी पते (-d 35.240.148.100) के लिए, सोर्स पोर्ट (-S 10.0.1.2) वाले इंटरफ़ेस (-s ens4) सोर्स आईपी पते (-s 10.0.1.2) के (-t udp) पैकेट की नकल करते हैं. पैकेट का कॉन्टेंट, वैल्यू से मेल खाता है (-p ‘0x 17 00 00 00 00 00 00 00 12 34 56 78'). हम आपको (-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

टारगेट वीएम में, यूडीपी पैकेट को कैप्चर करने के लिए tcpdump चलाएं.

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

अगर हम टेस्ट वीएम में ट्रैफ़िक के पैटर्न में बदलाव करते हैं, तो हम टारगेट वीएम में किसी पैकेट को कैप्चर नहीं कर सकते.

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. Telemetry

NetworkSercurityPolicy टेलीमेट्री डेटा के बारे में क्वेरी करने के लिए, Cloud मेट्रिक खोलें. इसके नीचे MQL का इस्तेमाल करें.

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

मिलान ऑफ़सेट आदेश के ज़रिए उच्च मात्रा में ट्रैफ़िक जनरेट करें.

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

मैच न करने वाले ऑफ़सेट कमांड से ज़्यादा ट्रैफ़िक जनरेट करें.

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

टेलीमेट्री को policy_name के हिसाब से फ़िल्टर किया जाता है और ब्लॉक किया गया के हिसाब से ग्रुप किया जाता है. नीली लाइन से पता चलता है कि नीति के नियमों के तहत ट्रैफ़िक आता है. हरी लाइन से पता चलता है कि नीति के नियमों के तहत ट्रैफ़िक ब्लॉक है.

b11ba15d87f99775.png

12. क्लीनअप का तरीका

टर्मिनल में एक क्लाउड शेल से लैब के कॉम्पोनेंट मिटाएं

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. बधाई हो!

कोडलैब पूरा करने के लिए बधाई.

इसमें हमने इन विषयों के बारे में बताया

  • ग्राहक के तय किए गए नियमों के साथ Cloud Armor की सुरक्षा नीतियां