Cloud Armor لـ NLB/VM مع قواعد من تحديد المستخدم

1. مقدمة

تُستخدَم سياسات أمان Cloud Armor لضبط قواعد يحدِّدها المستخدم لفلترة الزيارات على حافة شبكة Google، انطلاقًا من بنيتك الأساسية. يمكن استخدام سياسات أمان Network Edge للمساعدة في حماية حركة البيانات التي تستهدف أنواع نقاط النهاية التالية والسماح بها أو حظرها: جهاز موازنة حمل الشبكة وإعادة توجيه البروتوكول والأجهزة الافتراضية ذات عناوين IP العامة.

7bc9d3ed0c03b54f.png

في هذا الدرس التطبيقي حول الترميز، سنعرض عرضًا توضيحيًا حول كيفية ضبط سياسات أمان Cloud Armor باستخدام قواعد يحدّدها المستخدم لمنع هجمات حجب الخدمة الموزّعة (DDoS).

f0a40260147e71b1.png

الشكل 1. Cloud Armor للأجهزة الافتراضية مع حماية عنوان IP العلني.

المعلومات التي ستطّلع عليها

  • سياسات أمان Cloud Armor مع ضبط القواعد التي يحدّدها المستخدم
  • إعدادات إزاحة UDP واختبارها

المتطلبات

  • الإلمام ببروتوكول TCP/IP
  • الإلمام بسطر أوامر 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.

شبكة VC

من 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

أنشئ قواعد جدار الحماية.

في هذا القسم، سنضيف قاعدة جدار حماية للسماح لعدد زيارات UDP المتوقعة إلى المنفذ 10000.

من Cloud Shell، أنشئ قاعدة جدار حماية لفتح منفذ UDP رقم 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. إنشاء مثيلات الأجهزة الافتراضية المستهدفة

يمكنك إنشاء جهاز افتراضي مستهدف لاختبار سياسات الأمان. يجب أن يكون لهذا الجهاز الافتراضي عنوان IP عام وأن يفتح منفذ UDP رقم 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 باستخدام القواعد التي تم ضبطها

تم ضبط إعدادات معادلة UDP المحدَّدة مسبقًا للمستخدم وضبطها في سياسة Cloud Armor. الحزمة التي تحتوي على "قيم الإزاحة" هذه سوف يجتاز عملية التحقق من السياسة ويرسله إلى الجهاز الافتراضي (VM) في الخلفية. في المثال التالي، سنعرّف "إزاحة" بقيم مختلفة.

القيمة الأولى هي بعد عنوان UDP مباشرةً، وتتطابق تمامًا مع 2 بايت 0x1700

القيمة الثانية هي إزاحة 8 بايت من عنوان UDP، تتطابق تمامًا مع 4 بايت 0x12345678

ستتحول القيمة التي تكون أعلى من القيمة المحدَّدة مسبقًا إلى عرض بت لحزمة UDP.

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، يُرجى وصف الجهاز الافتراضي (VM) المستهدَف، وسيظهر لك SecurityPolicy المُرفَق. سجِّل عنوان IP العلني للاختبار التالي.

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. التحقّق

تسجيل الدخول إلى وحدة تحكّم الجهاز الافتراضي (VM) وتثبيت أداة إنشاء الحزم packit

sudo apt install packit

باتباع تصميم إزاحة UDP، استخدم packit لإنشاء حزم UDP. نحاكي حزمة (-t udp) من عنوان IP المصدر للواجهة (-s ens4) ( -s 10.0.1.2) مع منافذ المصدر (-S 10000) إلى عنوان IP للوجهة في targetVM (-d 35.240.148.100) مع منافذ الوجهة (-D 10000). يتطابق محتوى حِزم البيانات مع القيم (-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 لالتقاط حزمة 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

إذا غيّرنا أنماط حركة المرور في الجهاز الافتراضي (VM) التجريبي، لن نتمكّن من التقاط أي حِزم في الجهاز الافتراضي (VM) المستهدَف.

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

افتح مقياس Cloud، واستخدِمه أسفل العملاء المحتمَلين بنظر فريق التسويق (MQL) لطلب بيانات القياس عن بُعد في 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

إنشاء عدد زيارات كبير باستخدام أمر معادلة المطابقة

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 مع قواعد يحدّدها العميل