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

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

الشكل 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.
شبكة السحابة الخاصة الافتراضية (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
إنشاء قواعد جدار الحماية:
في هذا القسم، سنضيف قاعدة جدار حماية للسماح بحركة بيانات 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 للسماح لخدمة IAP بالاتصال بمثيلات الأجهزة الافتراضية.
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" باستخدام القواعد التلقائية
إنشاء سياسة أمان حدود الشبكة
من 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 ستجتاز الحزمة التي تتضمّن "قيم الإزاحة" هذه عملية التحقّق من السياسة وسيتم إرسالها إلى الجهاز الافتراضي الخلفي. في المثال التالي، سنحدّد قيمتَين مختلفتَين لـ "offset".
القيمة الأولى تأتي مباشرةً بعد عنوان UDP، ويجب أن تتطابق تمامًا مع البايتات 0x1700
القيمة الثانية هي إزاحة 8 بايت من عنوان UDP، وتتطابق تمامًا مع 4 بايت 0x12345678
سيتم تحويل القيمة المحدّدة مسبقًا أعلاه إلى عرض بت لحزمة UDP.

من 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، صفّ الجهاز الظاهري المستهدف، وستظهر 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 للسماح لخدمة IAP بالاتصال بمثيلات الأجهزة الافتراضية.
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
باتّباع تصميم إزاحة 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
إذا غيّرنا أنماط حركة المرور في الجهاز الظاهري التجريبي، لن نتمكّن من التقاط أي حِزم في الجهاز الظاهري المستهدف.
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 Metric، واستخدِم 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 وتجميعها حسب blocked. يشير الخط الأزرق إلى الزيارات المسموح بها بموجب قواعد السياسة. يشير الخط الأخضر إلى حركة البيانات المحظورة بموجب قواعد السياسة.

12. خطوات التنظيف
حذف مكونات المختبر من نافذة Cloud Shell واحدة في الوحدة الطرفية
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 التي تتضمّن قواعد يحدّدها العميل