1. परिचय
नमस्कार! Cloud Armor के पहले से कॉन्फ़िगर किए गए WAF नियमों के कोडलैब में आपका स्वागत है!
Google Cloud Armor, Google का एंटरप्राइज़ एज नेटवर्क सुरक्षा समाधान है. यह डीडीओएस से सुरक्षा, WAF के नियमों को लागू करने, और बड़े पैमाने पर अडैप्टिव मैनेज करने की सुविधा देता है.
Cloud Armor ने पहले से कॉन्फ़िगर किए गए WAF नियम सेट को बढ़ा दिया है, ताकि OWASP Top 10 वेब ऐप्लिकेशन की सुरक्षा से जुड़ी कमियों को कम किया जा सके. नियमों के ये सेट, OWASP Modsecurity core rule set के वर्शन 3.0.2 पर आधारित हैं. इनका इस्तेमाल, वेब ऐप्लिकेशन की सुरक्षा से जुड़े कुछ सामान्य जोखिमों से बचाने के लिए किया जाता है. जैसे, लोकल फ़ाइल इन्क्लूज़न (एलएफ़आई), रिमोट फ़ाइल इन्क्लूज़न (आरएफ़आई), रिमोट कोड एक्ज़ीक्यूशन (आरसीई) वगैरह.
इस कोडलैब में, Google Cloud Armor WAF के नियमों का इस्तेमाल करके, कुछ सामान्य कमज़ोरियों को कम करने का तरीका बताया गया है.
आपको क्या सीखने को मिलेगा
- किसी सेवा के लिए, इंस्टेंस ग्रुप और ग्लोबल लोड बैलेंसर को सेट अप करने का तरीका
- एलएफ़आई, आरसीई, स्कैनर, प्रोटोकॉल अटैक, और सेशन फ़िक्सेशन से बचाने के लिए, पहले से कॉन्फ़िगर किए गए WAF नियमों के साथ Cloud Armor की सुरक्षा नीतियां कॉन्फ़िगर करने का तरीका
- यह पुष्टि कैसे करें कि Cloud Armor ने लॉग देखकर किसी हमले को कम किया है.
आपको इन चीज़ों की ज़रूरत होगी
- Google Compute Engine के बारे में बुनियादी जानकारी ( कोड लैब)
- नेटवर्किंग और टीसीपी/आईपी की बुनियादी जानकारी
- Unix/Linux कमांड लाइन की बुनियादी जानकारी
- यह ज़रूरी है कि आपने Google Cloud में नेटवर्किंग के साथ GCP में नेटवर्किंग का टूर पूरा कर लिया हो
- (वैकल्पिक) SQL इंजेक्शन, आईपी पते के आधार पर, और भौगोलिक जगह के आधार पर बनाए गए नियमों का इस्तेमाल करके वर्कलोड को सुरक्षित रखने के बारे में जानने के लिए, Cloudnet20 Cloud Armor लैब को पूरा करें.
कोडलैब टोपोलॉजी और इस्तेमाल के उदाहरण

पहली इमेज - Cloud Armor WAF की नियमों से जुड़ी कोडलैब टोपोलॉजी
OWASP Juice Shop ऐप्लिकेशन, सुरक्षा से जुड़ी ट्रेनिंग और जागरूकता के लिए फ़ायदेमंद है. ऐसा इसलिए, क्योंकि इसमें OWASP Top 10 की सुरक्षा से जुड़ी हर कमज़ोरी के उदाहरण शामिल हैं. हमलावर इसका इस्तेमाल टेस्टिंग के लिए कर सकता है. इस कोडलैब में, हम इसका इस्तेमाल कुछ ऐप्लिकेशन पर होने वाले हमलों के बारे में बताने के लिए करेंगे. इसके बाद, Cloud Armor WAF के नियमों का इस्तेमाल करके ऐप्लिकेशन को सुरक्षित किया जाएगा. ऐप्लिकेशन को Google Cloud Load Balancer के ज़रिए फ़्रंट किया जाएगा. इस पर Cloud Armor की सुरक्षा नीति और नियम लागू होंगे. इसे सार्वजनिक इंटरनेट पर उपलब्ध कराया जाएगा. इसलिए, इसे लगभग कहीं से भी ऐक्सेस किया जा सकता है. साथ ही, इसे Cloud Armor और वीपीसी फ़ायरवॉल के नियमों का इस्तेमाल करके सुरक्षित किया जाएगा.
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.
- इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें बताया गया है कि संसाधनों को कैसे बंद किया जाए, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
Cloud Shell शुरू करें
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस लैब में मौजूद सभी टास्क को सिर्फ़ ब्राउज़र की मदद से पूरा किया जा सकता है.
शुरू करने से पहले
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
एपीआई चालू करना
सभी ज़रूरी सेवाएं चालू करें
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. वीपीसी नेटवर्क बनाना
VPC नेटवर्क बनाना
Cloud Shell से
gcloud compute networks create ca-lab-vpc --subnet-mode custom
आउटपुट
Created NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 ca-lab-vpc CUSTOM REGIONAL
सबनेट बनाना
Cloud Shell से
gcloud compute networks subnets create ca-lab-subnet \
--network ca-lab-vpc --range 10.0.0.0/24 --region us-central1
आउटपुट
Created NAME REGION NETWORK RANGE ca-lab-subnet us-central1 ca-lab-vpc 10.0.0.0/24
वीपीसी फ़ायरवॉल के नियम बनाना
VPC और सबनेट बनाने के बाद, अब आपको फ़ायरवॉल के कुछ नियम सेट अप करने होंगे. पहले फ़ायरवॉल नियम का इस्तेमाल, सभी आईपी को पोर्ट 3000 पर टेस्ट ऐप्लिकेशन की वेबसाइट के बाहरी आईपी को ऐक्सेस करने की अनुमति देने के लिए किया जाएगा. दूसरे फ़ायरवॉल नियम का इस्तेमाल, लोड बैलेंसर के सोर्स आईपी से हेल्थ-चेक की अनुमति देने के लिए किया जाएगा.
Cloud Shell से
gcloud compute firewall-rules create allow-js-site --allow tcp:3000 --network ca-lab-vpc
आउटपुट
Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED allow-js-site ca-lab-vpc INGRESS 1000 tcp:3000 False
Google की हेल्थ-चेक रेंज से हेल्थ-चेक की अनुमति देने के लिए, फ़ायरवॉल के नियम बनाएं.
Cloud Shell से
gcloud compute firewall-rules create allow-health-check \
--network=ca-lab-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-healthcheck \
--rules=tcp
आउटपुट
Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED allow-health-check ca-lab-vpc INGRESS 1000 tcp False
4. टेस्ट ऐप्लिकेशन सेट अप करना
अगला चरण, टेस्ट ऐप्लिकेशन बनाना है. इस मामले में, OWASP Juice Shop वेब सर्वर.
कंप्यूट इंस्टेंस बनाते समय, हम कंटेनर इमेज का इस्तेमाल कर रहे हैं. इससे यह पक्का किया जा सकेगा कि सर्वर में ज़रूरी सेवाएं मौजूद हों. इस सर्वर को us-central1-c में डिप्लॉय किया जाएगा. इसमें एक नेटवर्क टैग होगा, जिससे हेल्थ चेक किए जा सकेंगे.
OWASP Juice Shop ऐप्लिकेशन बनाना
ओपन सोर्स OWASP Juice Shop ऐप्लिकेशन का इस्तेमाल करें. यह एक ऐसा ऐप्लिकेशन है जिसमें सुरक्षा से जुड़ी कमियां हैं. इस ऐप्लिकेशन का इस्तेमाल, OWASP की सुरक्षा से जुड़ी चुनौतियों को पूरा करने के लिए भी किया जा सकता है. इसके लिए, आपको उनकी वेबसाइट पर जाना होगा.
Cloud Shell से
gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop \
--network ca-lab-vpc \
--subnet ca-lab-subnet \
--private-network-ip=10.0.0.3 \
--machine-type n1-standard-2 \
--zone us-central1-c \
--tags allow-healthcheck
आउटपुट
NAME ZONE MACHINE_TYPE PREEMPTIBLE owasp-juice-shop-app us-central1-c n1-standard-2 INTERNAL_IP EXTERNAL_IP STATUS 10.0.0.3 <public IP> RUNNING
Cloud Load Balancer कॉम्पोनेंट: इंस्टेंस ग्रुप सेट अप करना
अनमैनेज्ड इंस्टेंस ग्रुप बनाएं.
Cloud Shell से
gcloud compute instance-groups unmanaged create juice-shop-group \
--zone=us-central1-c
आउटपुट
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES juice-shop-group us-central1-c zone 0
Juice Shop GCE इंस्टेंस को अनमैनेज्ड इंस्टेंस ग्रुप में जोड़ें.
Cloud Shell से
gcloud compute instance-groups unmanaged add-instances juice-shop-group \
--zone=us-central1-c \
--instances=owasp-juice-shop-app
आउटपुट
Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].
नेम पोर्ट को Juice Shop ऐप्लिकेशन के पोर्ट पर सेट करें.
Cloud Shell से
gcloud compute instance-groups unmanaged set-named-ports \ juice-shop-group \ --named-ports=http:3000 \ --zone=us-central1-c
आउटपुट
Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].
अनमैनेज्ड इंस्टेंस ग्रुप बनाने के बाद, अगला चरण हेल्थ चेक, बैकएंड सेवा, यूआरएल मैप, टारगेट प्रॉक्सी, और फ़ॉरवर्डिंग नियम बनाना है.
क्लाउड लोड बैलेंसर कॉम्पोनेंट सेट अप करना: हेल्थ चेक
Juice Shop सेवा के पोर्ट के लिए हेल्थ-चेक बनाएं.
Cloud Shell से
gcloud compute health-checks create tcp tcp-port-3000 \
--port 3000
आउटपुट
Created NAME PROTOCOL tcp-port-3000 TCP
क्लाउड लोड बैलेंसर कॉम्पोनेंट: बैकएंड सेवा सेट अप करना
बैकएंड सेवा के पैरामीटर बनाएं.
Cloud Shell से
gcloud compute backend-services create juice-shop-backend \
--protocol HTTP \
--port-name http \
--health-checks tcp-port-3000 \
--enable-logging \
--global
आउटपुट
NAME BACKENDS PROTOCOL juice-shop-backend HTTP
बैकएंड सेवा में Juice Shop इंस्टेंस ग्रुप जोड़ें.
Cloud Shell से
gcloud compute backend-services add-backend juice-shop-backend \
--instance-group=juice-shop-group \
--instance-group-zone=us-central1-c \
--global
आउटपुट
Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].
Cloud load balancer component: URL map सेट अप करना
बैकएंड को भेजने के लिए, यूआरएल मैप बनाएं.
Cloud Shell से
gcloud compute url-maps create juice-shop-loadbalancer \
--default-service juice-shop-backend
आउटपुट
NAME DEFAULT_SERVICE juice-shop-loadbalancer backendServices/juice-shop-backend
Cloud load balancer कॉम्पोनेंट: टारगेट प्रॉक्सी सेट अप करना
यूआरएल मैप के सामने टारगेट प्रॉक्सी बनाएं.
Cloud Shell से
gcloud compute target-http-proxies create juice-shop-proxy \
--url-map juice-shop-loadbalancer
आउटपुट
NAME URL_MAP juice-shop-proxy juice-shop-loadbalancer
Cloud Load Balancer कॉम्पोनेंट सेट अप करना: फ़ॉरवर्डिंग का नियम
लोड बैलेंसर के लिए फ़ॉरवर्ड करने का नियम बनाएं.
Cloud Shell से
gcloud compute forwarding-rules create juice-shop-rule \
--global \
--target-http-proxy=juice-shop-proxy \
--ports=80
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].
पुष्टि करें कि Juice Shop सेवा ऑनलाइन है
Cloud Shell से
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")"
Cloud Shell से
echo $PUBLIC_SVC_IP
आउटपुट
<public VIP of service>
आगे बढ़ने से पहले कुछ मिनट इंतज़ार करें. ऐसा न करने पर, आपको HTTP/1.1 404 Not Found रिस्पॉन्स मिल सकता है.
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP
आउटपुट
HTTP/1.1 200 OK <...>
Juice Shop देखने के लिए, ब्राउज़र पर भी जाया जा सकता है!

अब हम Juice Shop की कमियों और Cloud Armor WAF के नियम सेट की मदद से, उनसे बचने के तरीके के बारे में जानेंगे.
5. ज्ञात जोखिमों की संभावनाओं के बारे में जानकारी देना
समय बचाने के लिए, हम Cloud Armor WAF के नियमों को लागू करने से पहले और बाद की स्थितियों को कम शब्दों में दिखाएंगे.
एलएफ़आई की समस्या का पता लगाना: पाथ ट्रेवर्सल
लोकल फ़ाइल इन्क्लूज़न, सर्वर पर मौजूद फ़ाइलों को देखने की प्रोसेस है. इसमें अनुरोध में इनपुट की पुष्टि न होने का फ़ायदा उठाया जाता है, ताकि संवेदनशील डेटा को संभावित रूप से दिखाया जा सके. यहां सिर्फ़ यह दिखाया गया है कि पाथ ट्रैवर्सल किया जा सकता है. अपने ब्राउज़र में या कर्ल की मदद से, ऐप्लिकेशन से दिखाए जा रहे मौजूदा पाथ को देखें.
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP/ftp
आउटपुट
HTTP/1.1 200 OK <...>
यह भी देखें कि पाथ ट्रैवर्सल भी काम करता है:
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP/ftp/../
आउटपुट
HTTP/1.1 200 OK <...>
आरसीई की गड़बड़ी का पता लगाना
रिमोट कोड एक्ज़ीक्यूशन में, UNIX और Windows कमांड इंजेक्शन के अलग-अलग तरीके शामिल होते हैं. इनकी मदद से हमलावर, ओएस कमांड को एक्ज़ीक्यूट कर सकते हैं. आम तौर पर, इन कमांड को सिर्फ़ खास अधिकार वाले उपयोगकर्ता ही एक्ज़ीक्यूट कर सकते हैं. यहां ls कमांड को पास करके, उसे एक्ज़ीक्यूट करने का एक आसान उदाहरण दिखाया गया है.
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
आउटपुट
HTTP/1.1 200 OK <...>
पूरा आउटपुट देखने के लिए, कर्ल फ़्लैग हटाए जा सकते हैं.
किसी जाने-माने स्कैनर के ऐक्सेस की निगरानी करना
अलग-अलग कामों के लिए, कमर्शियल और ओपन सोर्स, दोनों तरह के स्कैन ऐप्लिकेशन. इनमें कमियों का पता लगाने के लिए स्कैन करना भी शामिल है. ये टूल, जाने-माने User-Agent और अन्य हेडर का इस्तेमाल करते हैं. देखें कि curl, जाने-माने User-Agent हेडर के साथ काम करता है या नहीं:
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
आउटपुट
HTTP/1.1 200 OK <...>
प्रोटोकॉल पर होने वाले हमले के बारे में जानकारी: एचटीटीपी स्प्लिटिंग
कुछ वेब ऐप्लिकेशन, जवाबों में हेडर जनरेट करने के लिए उपयोगकर्ता से मिले इनपुट का इस्तेमाल करते हैं. अगर ऐप्लिकेशन, इनपुट को सही तरीके से फ़िल्टर नहीं करता है, तो हमलावर इनपुट पैरामीटर को %0d%0a (सीआरएलएफ़ सीक्वेंस, जिसका इस्तेमाल अलग-अलग लाइनों को अलग करने के लिए किया जाता है) से खराब कर सकता है. इसके बाद, जवाब को पार्स करने वाले किसी भी सिस्टम के लिए, इसे दो जवाब के तौर पर समझा जा सकता है. जैसे, इंटरमीडियरी प्रॉक्सी सर्वर. इससे बाद के अनुरोधों में गलत कॉन्टेंट दिखाया जा सकता है. इनपुट पैरामीटर में %0d%0a सीक्वेंस डालें. इससे गुमराह करने वाला पेज दिखाया जा सकता है.
Cloud Shell से
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
आउटपुट
HTTP/1.1 200 OK <...>
सेशन फ़िक्सेशन का पता लगाना
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X
आउटपुट
HTTP/1.1 200 OK <...>
6. Cloud Armor WAF के नियम तय करना
पहले से कॉन्फ़िगर किए गए WAF नियमों की सूची बनाएं:
Cloud Shell से
gcloud compute security-policies list-preconfigured-expression-sets
आउटपुट
EXPRESSION_SET
Sqli-canary
RULE_ID
owasp-crs-v030001-id942110-sqli
owasp-crs-v030001-id942120-sqli
<...>
Cloud Armor की सुरक्षा नीति बनाना
Cloud Shell से:
gcloud compute security-policies create block-with-modsec-crs \
--description "Block with OWASP ModSecurity CRS"
सुरक्षा नीति के डिफ़ॉल्ट नियम को अपडेट करना
ध्यान दें कि नियम की डिफ़ॉल्ट प्राथमिकता की संख्यात्मक वैल्यू 2147483647 होती है
Cloud Shell से:
gcloud compute security-policies rules update 2147483647 \
--security-policy block-with-modsec-crs \
--action "deny-403"
डिफ़ॉल्ट नियम में 'अनुमति नहीं है' कार्रवाई कॉन्फ़िगर की गई है. इसलिए, हमें आपके आईपी पते से ऐक्सेस करने की अनुमति देनी होगी. कृपया अपना सार्वजनिक आईपी पता (curl, ipmonkey, whatismyip वगैरह) ढूंढें.
Cloud Shell से:
MY_IP=$(curl ifconfig.me)
अपने आईपी पते (नीचे अपना आईपी पता डालें) से ऐक्सेस करने की अनुमति देने के लिए, पहला नियम जोड़ें
Cloud Shell से:
gcloud compute security-policies rules create 10000 \
--security-policy block-with-modsec-crs \
--description "allow traffic from my IP" \
--src-ip-ranges "$MY_IP/32" \
--action "allow"
एलएफ़आई हमलों को रोकने के लिए, सुरक्षा नीति को अपडेट करना
OWASP ModSecurity Core Rule Set लागू करें. इससे लोकल फ़ाइलें शामिल करने के लिए, पाथ ट्रैवर्सल को रोका जा सकता है.
Cloud Shell से:
gcloud compute security-policies rules create 9000 \
--security-policy block-with-modsec-crs \
--description "block local file inclusion" \
--expression "evaluatePreconfiguredExpr('lfi-stable')" \
--action deny-403
सुरक्षा नीति को अपडेट करके, रिमोट कोड एक्ज़ीक्यूशन (आरसीई) को ब्लॉक करें
OWASP ModSecurity Core Rule Set के मुताबिक, ऐसे नियम लागू करें जो आरसीई का पता लगाते हैं. इनमें कमांड इंजेक्शन भी शामिल है. ओएस के सामान्य निर्देशों का पता लगाया जाता है और उन्हें ब्लॉक किया जाता है.
Cloud Shell से:
gcloud compute security-policies rules create 9001 \
--security-policy block-with-modsec-crs \
--description "block rce attacks" \
--expression "evaluatePreconfiguredExpr('rce-stable')" \
--action deny-403
सुरक्षा स्कैनर को ब्लॉक करने के लिए, सुरक्षा नीति को अपडेट करना
OWASP ModSecurity Core Rule Set लागू करें, ताकि जाने-माने सुरक्षा स्कैनर, स्क्रिप्टिंग एचटीटीपी क्लाइंट, और वेब क्रॉलर को ब्लॉक किया जा सके.
Cloud Shell से:
gcloud compute security-policies rules create 9002 \
--security-policy block-with-modsec-crs \
--description "block scanners" \
--expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
--action deny-403
प्रोटोकॉल अटैक को ब्लॉक करने के लिए, सुरक्षा नीति को अपडेट करना
OWASP ModSecurity Core Rule Set के मुताबिक, ऐसे नियम लागू करें जो कैरिज रिटर्न (सीआर) %0d और लाइनफ़ीड (एलएफ़) %0a वर्णों और एचटीटीपी अनुरोध स्मगलिंग जैसे अन्य तरह के प्रोटोकॉल हमलों का पता लगाते हैं.
Cloud Shell से:
gcloud compute security-policies rules create 9003 \
--security-policy block-with-modsec-crs \
--description "block protocol attacks" \
--expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
--action deny-403
सेशन फ़िक्सेशन को ब्लॉक करने के लिए, सुरक्षा नीति अपडेट करना
OWASP ModSecurity Core Rule Set के मुताबिक, ऐसे नियम लागू करें जो...
Cloud Shell से:
gcloud compute security-policies rules create 9004 \
--security-policy block-with-modsec-crs \
--description "block session fixation attacks" \
--expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
--action deny-403
बैकएंड सेवा से सुरक्षा नीति अटैच करना
Cloud Shell से:
gcloud compute backend-services update juice-shop-backend \
--security-policy block-with-modsec-crs \
--global
नियमों को लागू होने में कुछ समय लग सकता है. हालांकि, इसमें 10 मिनट से ज़्यादा समय नहीं लगता. जब आपको लगे कि काफ़ी समय बीत चुका है, तब उन कमज़ोरियों की जांच करें जिनके बारे में पहले बताया गया था. इससे यह पुष्टि की जा सकेगी कि अगले चरण में Cloud Armor WAF के नियम लागू किए गए हैं.
7. OWASP ModSecurity Core Rule Set की मदद से, Cloud Armor की सुरक्षा की निगरानी करना
पुष्टि करें कि एलएफ़आई की समस्या ठीक हो गई है
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP/?a=../
आउटपुट
HTTP/1.1 403 Forbidden <...>
पुष्टि करें कि आरसीई हमले को कम कर दिया गया है
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
आउटपुट
HTTP/1.1 403 Forbidden <..>
स्कैनर का पता लगाने की सुविधा के बारे में पुष्टि करना
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
आउटपुट
HTTP/1.1 403 Forbidden <..>
पुष्टि करें कि प्रोटोकॉल के हमले को कम कर दिया गया है
OWASP ModSecurity Core Rule Set ver.3.0.2 के मुताबिक, प्रोटोकॉल पर होने वाले हमले को इन तरीकों से कम किया जा सकता है
Cloud Shell से
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
आउटपुट
HTTP/1.1 403 Forbidden <..>
पुष्टि करें कि सेशन फ़िक्सेशन के अनुरोध ब्लॉक किए गए हैं
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a
आउटपुट
HTTP/1.1 403 Forbidden <..>
8. Cloud Armor के सुरक्षा नियमों की समीक्षा करना
सुरक्षा नीति बनाने के बाद, आइए अब देखते हैं कि कौनसे नियम कॉन्फ़िगर किए गए हैं.

नियमों का आकलन प्राथमिकता के हिसाब से किया जाता है: कम संख्या वाले नियमों का आकलन पहले किया जाता है. नियम लागू होने के बाद, ज़्यादा प्राथमिकता वाले नियमों को प्रोसेस नहीं किया जाता.
- प्राथमिकता 9000 - एलएफ़आई (लोकल फ़ाइल इन्क्लूज़न) को ब्लॉक करें
- प्राथमिकता 9001 - आरसीई (रिमोट कोड एक्ज़ीक्यूशन/कमांड इंजेक्शन) को ब्लॉक करें
- प्राथमिकता 9002 - स्कैनर का पता चला
- प्राथमिकता 9003 - एचटीटीपी स्प्लिटिंग और एचटीटीपी स्मगलिंग जैसे प्रोटोकॉल हमलों को ब्लॉक करना
- प्राथमिकता 9004 - ब्लॉक सेशन फ़िक्सेशन अटैक
- प्राथमिकता 10000 - अपने आईपी पते को वेबसाइट ऐक्सेस करने की अनुमति दें
- डिफ़ॉल्ट प्राथमिकता - अनुमति नहीं है.
*ध्यान दें कि "अपने आईपी पते को अनुमति दें" नियम को सबसे ज़्यादा प्राथमिकता वाले नंबर के साथ कॉन्फ़िगर किया गया है, ताकि साइट को ऐक्सेस करने की अनुमति दी जा सके. हालांकि, यह किसी भी हमले को ब्लॉक कर देता है.
9. Cloud Armor की सुरक्षा नीति के लॉग देखना
Cloud Armor Console पेज पर, सुरक्षा नीति की जानकारी देखी जा सकती है. साथ ही, Cloud Logging पेज पर जाने के लिए, Logs टैब और फिर View policy logs लिंक पर क्लिक किया जा सकता है. यह आपकी दिलचस्पी वाली सुरक्षा नीति के आधार पर अपने-आप फ़िल्टर हो जाएगा. जैसे, resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs). 403 गड़बड़ी के रिस्पॉन्स कोड देखें. साथ ही, लागू की गई सुरक्षा नीति का नाम, मैच की गई फ़ील्ड वैल्यू, और पहले से कॉन्फ़िगर किए गए एक्सप्रेशन आईडी (या हस्ताक्षर आईडी) देखने के लिए, लॉग की जानकारी को बड़ा करें. यहां दिए गए स्क्रीनशॉट में, इस कोडलैब में लागू की गई सुरक्षा नीतियों के लॉग के उदाहरण दिखाए गए हैं.
LFI लॉग

आरसीई लॉग

स्कैनर का पता लगाने से जुड़ा लॉग

प्रोटोकॉल पर हुए हमले का लॉग

सेशन फ़िक्सेशन लॉग

10. Lab Cleanup
लैब पूरा करने के बाद, अब संसाधनों को हटा दें.
Cloud Armor की सुरक्षा नीति, लोड बैलेंसर, इंस्टेंस, फ़ायरवॉल के नियम, और वीपीसी नेटवर्क को मिटाने के लिए, इन कमांड को चलाएं.
बैकएंड सेवा से Cloud Armor की सुरक्षा नीति हटाना
gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global
Cloud Armor की सुरक्षा नीति मिटाना
सुरक्षा नीति को मिटाने पर, इससे जुड़े नियम अपने-आप मिट जाएंगे.
gcloud -q compute security-policies delete block-with-modsec-crs
लोड बैलेंसर के संसाधन मिटाना
मिटाए जाने वाले इन लोड बैलेंसर संसाधनों में फ़ॉरवर्डिंग का नियम, टारगेट-एचटीटीपी-प्रॉक्सी, यूआरएल-मैप, बैकएंड, हेल्थ-चेक, और इंस्टेंस ग्रुप शामिल हैं.
gcloud -q compute forwarding-rules delete juice-shop-rule --global
gcloud -q compute target-http-proxies delete juice-shop-proxy
gcloud -q compute url-maps delete juice-shop-loadbalancer
gcloud -q compute backend-services delete juice-shop-backend \
--global
gcloud -q compute health-checks delete tcp-port-3000
gcloud -q compute instance-groups unmanaged delete juice-shop-group --zone=us-central1-c
इंस्टेंस मिटाना
gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c
फ़ायरवॉल के नियम, सबनेट, और वीपीसी मिटाना
gcloud -q compute firewall-rules delete allow-health-check gcloud -q compute firewall-rules delete allow-js-site gcloud -q compute networks subnets delete ca-lab-subnet --region us-central1 gcloud -q compute networks delete ca-lab-vpc
11. बधाई हो!
Cloud Armor के पहले से कॉन्फ़िगर किए गए WAF नियमों से जुड़े कोडलैब को पूरा करने पर बधाई!
हमने क्या-क्या बताया
- इंस्टेंस ग्रुप और ग्लोबल क्लाउड लोड बैलेंसर को सेट अप करने का तरीका
- एलएफ़आई, आरसीई, स्कैनर, प्रोटोकॉल अटैक, और सेशन फ़िक्सेशन से बचाने के लिए, पहले से कॉन्फ़िगर किए गए WAF नियमों के साथ Cloud Armor की सुरक्षा नीतियां कॉन्फ़िगर करने का तरीका
- यह पुष्टि कैसे करें कि Cloud Armor ने लॉग के ज़रिए, OWASP के टॉप 10 हमलों में से कुछ को कम कर दिया है
अगले चरण
- Cloud Armor के पहले से कॉन्फ़िगर किए गए WAF नियमों का इस्तेमाल करके, अपने ऐप्लिकेशन को OWASP की टॉप 10 कमज़ोरियों से सुरक्षित रखें
- संवेदनशीलता के लेवल के आधार पर नियमों में बदलाव करना
- सुरक्षा से जुड़े नियमों को ज़्यादा सटीक तरीके से लागू करने के लिए, कस्टम नियमों के लिए भाषा के रेफ़रंस का इस्तेमाल करें.