1. परिचय
नमस्कार! Cloud Armor पर, पहले से कॉन्फ़िगर किए गए WAF नियमों के कोडलैब में आपका स्वागत है!
Google Cloud Armor, Google का एंटरप्राइज़ एज नेटवर्क सुरक्षा समाधान है. यह बड़े पैमाने पर DDOS सुरक्षा, WAF नियम लागू करने, और अडैप्टिव मैनेजमेंट की सुविधा देता है.
Cloud Armor ने OWASP टॉप 10 वेब ऐप्लिकेशन की सुरक्षा से जुड़े जोखिमों को कम करने के लिए, पहले से कॉन्फ़िगर किए गए WAF के नियमों के सेट को बढ़ा दिया है. नियम के सेट, OWASP Modsecurity कोर नियम सेट के वर्शन 3.0.2 पर आधारित होते हैं. ऐसा इसलिए किया जाता है, ताकि वेब ऐप्लिकेशन की सुरक्षा से जुड़े कुछ आम जोखिमों से बचा जा सके. इनमें लोकल फ़ाइल शामिल करना (lfi), रिमोट फ़ाइल शामिल करना (rfi), रिमोट कोड एक्ज़ीक्यूशन (rce) वगैरह शामिल हैं.
इस कोडलैब में, Google Cloud Armor WAF के नियमों का इस्तेमाल करके, जोखिम की कुछ सामान्य आशंकाओं को कम करने का तरीका बताया गया है.
आपको इनके बारे में जानकारी मिलेगी
- किसी सेवा को सही तरीके से चलाने के लिए, इंस्टेंस ग्रुप और ग्लोबल लोड बैलेंसर को सेट अप करने का तरीका
- lfi, rce, स्कैनर, प्रोटोकॉल हमलों, और सेशन को ठीक करने से जुड़े खतरों से बचाने के लिए, पहले से कॉन्फ़िगर किए गए WAF नियमों के साथ Cloud Armor की सुरक्षा नीतियों को कॉन्फ़िगर करने का तरीका
- इस बात की पुष्टि करने का तरीका कि Cloud Armor ने लॉग देखकर, हमले को कम किया है.
आपको इन चीज़ों की ज़रूरत होगी
- Google Compute Engine की बुनियादी जानकारी ( कोडलैब)
- बुनियादी नेटवर्किंग और टीसीपी/आईपी की जानकारी
- Unix/Linux कमांड लाइन के बारे में बुनियादी जानकारी
- Google Cloud में नेटवर्किंग की मदद से GCP में नेटवर्किंग के टूर को पूरा करने से मदद मिलती है
- (ज़रूरी नहीं) एसक्यूएल इंजेक्शन, आईपी पर आधारित, और जगह के हिसाब से बनाए गए नियमों की मदद से, Cloudnet20 Cloud Armor Lab को पूरा करें. इससे आपको वर्कलोड को सुरक्षित रखने में मदद मिलेगी.
कोडलैब टोपोलॉजी और इस्तेमाल का उदाहरण
इमेज 1 - Cloud Armor WAF, कोडलैब टोपोलॉजी से जुड़े नियम तय करता है
OWASP Juice Shop ऐप्लिकेशन, सुरक्षा से जुड़ी ट्रेनिंग और जागरूकता के लिए काम का है. इसकी वजह यह है कि डिज़ाइन के हिसाब से, इसमें सुरक्षा से जुड़े OWASP टॉप 10 जोखिमों के मामले शामिल हैं. कोई हमलावर परीक्षण के लिए इसका गलत इस्तेमाल कर सकता है. इस कोडलैब में, हम इसका इस्तेमाल ऐप्लिकेशन से जुड़े कुछ हमलों को दिखाने के लिए करेंगे. इसके बाद, ऐप्लिकेशन को Cloud Armor WAF के नियमों की मदद से सुरक्षित रखेंगे. ऐप्लिकेशन के सामने एक Google Cloud लोड बैलेंसर होगा, जिस पर Cloud Armor की सुरक्षा नीति और नियम लागू होंगे. इसे सार्वजनिक इंटरनेट पर दिखाया जाएगा. इसलिए, इसे कहीं से भी ऐक्सेस किया जा सकता है. साथ ही, इसे Cloud Armor और VPC फ़ायरवॉल के नियमों का इस्तेमाल करके सुरक्षित किया जा सकता है.
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 कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:
प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:
इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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 नेटवर्क बनाना
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 फ़ायरवॉल के नियम बनाना
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 की, स्वास्थ्य जांच की रेंज से, स्वास्थ्य की जांच करने की अनुमति देने के लिए, FW के नियम बनाएं.
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 लोड बैलेंसर कॉम्पोनेंट सेट अप करना: इंस्टेंस ग्रुप
मैनेज नहीं किया जा रहा इंस्टेंस ग्रुप बनाएं.
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
बैकएंड सेवा में जूस शॉप इंस्टेंस ग्रुप जोड़ें.
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 लोड बैलेंसर कॉम्पोनेंट को सेट अप करना: यूआरएल मैप
बैकएंड पर भेजने के लिए, यूआरएल मैप बनाएं.
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
Clआउट लोड बैलेंसर कॉम्पोनेंट सेट अप करना: टारगेट प्रॉक्सी
यूआरएल मैप को फ़्रंट दिखाने के लिए टारगेट प्रॉक्सी बनाएं.
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 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].
पुष्टि करें कि जूस शॉप की सेवा ऑनलाइन है
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>
आगे बढ़ने से पहले कुछ मिनट इंतज़ार करें, नहीं तो आपको एचटीटीपी/1.1 404 नहीं मिला रिस्पॉन्स मिल सकता है.
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP
आउटपुट
HTTP/1.1 200 OK <...>
आप जूस शॉप देखने के लिए ब्राउज़र पर भी जा सकते हैं!
अब हम 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 कमांड इंजेक्शन शामिल होते हैं. इनकी मदद से हमलावर, ओएस कमांड चला सकते हैं. ये निर्देश आम तौर पर, कुछ खास लोगों के लिए ही होते हैं. नीचे दिए गए उदाहरण में, एक सामान्य एलएस कमांड को एक्ज़ीक्यूट किया गया है.
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
आउटपुट
HTTP/1.1 200 OK <...>
पूरा आउटपुट देखने के लिए, कर्ल फ़्लैग हटाए जा सकते हैं.
किसी जाने-माने स्कैनर का ऐक्सेस देखें
व्यावसायिक और ओपन सोर्स, दोनों तरह के कामों के लिए ऐप्लिकेशन को स्कैन करते हैं. इसमें जोखिम की आशंकाओं को भी स्कैन करना शामिल है. ये टूल जाने-माने User-Agent और दूसरे हेडर इस्तेमाल करते हैं. देखें कि कर्ल एक जाने-माने यूज़र-एजेंट हेडर के साथ काम करता है:
Cloud Shell से
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
आउटपुट
HTTP/1.1 200 OK <...>
प्रोटोकॉल अटैक पर नज़र रखना: एचटीटीपी को बांटना
कुछ वेब ऐप्लिकेशन, जवाबों में हेडर जनरेट करने के लिए, उपयोगकर्ता के इनपुट का इस्तेमाल करते हैं. अगर ऐप्लिकेशन इनपुट को ठीक से फ़िल्टर नहीं करता है, तो कोई हमलावर %0d%0a अनुक्रम (CRLF क्रम जिसका इस्तेमाल अलग-अलग लाइनों को अलग करने के लिए किया जाता है) वाले इनपुट पैरामीटर में ज़हर पैदा कर सकता है. इसके बाद, किसी भी रिस्पॉन्स को पार्स करने के दौरान, इस रिस्पॉन्स को दो रिस्पॉन्स माना जा सकता है. जैसे, इंटरमीडियरी प्रॉक्सी सर्वर, जो बाद के अनुरोधों में गलत कॉन्टेंट दिखा सकता है. इनपुट पैरामीटर में %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 का मुख्य नियम सेट लागू करें, जो लोकल फ़ाइल शामिल किए जाने के लिए पाथ ट्रेवर्सल को रोकता है.
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
रिमोट कोड एक्ज़िक्यूशन (rce) ब्लॉक करने के लिए, सुरक्षा नीति अपडेट करें
OWASP ModSecurity के मुख्य नियम के सेट के मुताबिक, rce खोजने वाले नियम लागू करें, जिसमें कमांड इंजेक्शन भी शामिल है. सामान्य ओएस निर्देशों का पता लगाकर उन्हें ब्लॉक कर दिया जाता है.
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 कोर नियम सेट लागू करें.
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 के कोर नियम के सेट के मुताबिक, ऐसे नियम लागू करें जो नई लाइन शुरू करने के चिह्न (सीआर) %0d और Linefeed (LF) %0a वर्ण और HTTP अनुरोध तस्करी जैसे दूसरे प्रकार के प्रोटोकॉल हमलों को देखते हों.
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 के कोर नियम सेट के अनुसार, ऐसे नियम लागू करें जो...
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 के मुख्य नियम सेट की मदद से, 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 कोर नियम सेट 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 - LFI को ब्लॉक करें (स्थानीय फ़ाइल शामिल करें)
- प्राथमिकता 9001 - RCE ब्लॉक करें (रिमोट कोड एक्ज़ीक्यूशन/कमांड इंजेक्शन)
- प्राथमिकता 9002 - ब्लॉक स्कैनर का पता चला
- प्राथमिकता 9003 - एचटीटीपी स्प्लिट करने और एचटीटीपी तस्करी जैसे प्रोटोकॉल हमलों को ब्लॉक करें
- प्राथमिकता 9004 - सेशन ठीक करने के हमलों को ब्लॉक करें
- प्राथमिकता 10000 - अपने आईपी को वेबसाइट ऐक्सेस करने की अनुमति देना
- प्राथमिकता डिफ़ॉल्ट - अस्वीकार करें.
*"अपने आईपी को अनुमति दें" पर ध्यान दें नियम को साइट ऐक्सेस करने की अनुमति देने के लिए सबसे ज़्यादा प्राथमिकता वाली संख्या के साथ कॉन्फ़िगर किया जाता है. हालांकि, यह किसी भी हमले को ब्लॉक कर देता है.
9. Cloud Armor की सुरक्षा नीति के लॉग देखें
Cloud Armor Console पेज पर, सुरक्षा नीति की जानकारी देखी जा सकती है. क्लाउड लॉगिंग पेज पर जाने के लिए, Logs
टैब पर क्लिक करने के बाद View policy logs
लिंक पर क्लिक करें. यह सुरक्षा नीति के आधार पर अपने-आप फ़िल्टर हो जाएगा, उदाहरण के लिए resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs)
. 403 गड़बड़ी वाले रिस्पॉन्स कोड देखें और लागू की गई सुरक्षा नीति के नाम, मेल खाने वाले फ़ील्ड की वैल्यू, और पहले से कॉन्फ़िगर किए गए एक्सप्रेशन आईडी (या हस्ताक्षर आईडी) के बारे में जानने के लिए, लॉग की जानकारी को बड़ा करें. नीचे दिए गए स्क्रीनशॉट, इस कोडलैब में कॉन्फ़िगर की गई सुरक्षा से जुड़ी नीतियों के लिए लॉग के उदाहरण दिखाते हैं.
एलएफ़आई लॉग
आरसीई लॉग
स्कैनर की पहचान करने वाला लॉग
प्रोटोकॉल हमले का लॉग
सेशन को ठीक करने के तरीके का लॉग
10. लैब क्लीनअप
लैब पूरा होने के बाद, संसाधनों को खाली करें.
क्लाउड आर्मर की सुरक्षा नीति, लोड बैलेंसर, इंस्टेंस, फ़ायरवॉल के नियमों, और VPC नेटवर्क को मिटाने के लिए, इन निर्देशों को चलाएं.
बैकएंड सेवा से 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
लोड बैलेंसर से जुड़े संसाधनों को मिटाना
मिटाए जाने वाले इन लोड बैलेंसर संसाधनों में फ़ॉरवर्ड करने के नियम, टारगेट-http-प्रॉक्सीज़, यूआरएल-मैप, बैकएंड, हेल्थ-चेक, और इंस्टेंस ग्रुप शामिल हैं.
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
फ़ायरवॉल के नियम, सबनेट, और VPC को मिटाना
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 नियमों के कोडलैब का कोडलैब पूरा करने के लिए बधाई!
इसमें हमने इन विषयों के बारे में बताया
- इंस्टेंस ग्रुप और ग्लोबल क्लाउड लोड बैलेंसर सेट अप करने का तरीका
- lfi, rce, स्कैनर, प्रोटोकॉल हमलों, और सेशन को ठीक करने से जुड़े खतरों से बचाने के लिए, पहले से कॉन्फ़िगर किए गए WAF नियमों के साथ Cloud Armor की सुरक्षा नीतियों को कॉन्फ़िगर करने का तरीका
- इस बात की पुष्टि करने का तरीका कि Cloud Armor ने लॉग के ज़रिए, OWASP टॉप 10 हमलों को कम किया है
अगले चरण
- Cloud Armor के पहले से कॉन्फ़िगर किए गए WAF नियमों की मदद से, अपने ऐप्लिकेशन को OWASP टॉप 10 जोखिमों से बचाएं
- संवेदनशीलता के लेवल के आधार पर, बेहतर बनाने के नियम
- ज़्यादा सटीक सुरक्षा नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) के लिए, कस्टम नियमों की भाषा से जुड़ी जानकारी का इस्तेमाल करें.