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.
شبكة 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.
من 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 ويتم تجميعها حسب الحظر. يشير الخط الأزرق إلى عدد الزيارات المسموح بها من خلال قواعد السياسة. يشير الخط الأخضر إلى حركة المرور المحظورة بواسطة قواعد السياسة.
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 مع قواعد يحدّدها العميل