1. מבוא
שלום! ברוכים הבאים לסדנת הקוד בנושא כללי WAF שהוגדרו מראש ב-Cloud Armor.
Google Cloud Armor הוא פתרון אבטחה לרשת קצה ארגונית של Google, שמספק הגנה מפני מתקפות DDoS, אכיפה של כללי WAF ויכולת ניהול אדפטיבית בקנה מידה גדול.
ב-Cloud Armor הרחבנו את קבוצות הכללים המוגדרות מראש של WAF כדי לצמצם את הסיכון לנקודות חולשה באבטחת אפליקציות אינטרנט שמופיעות בעשרת הסיכונים המובילים של OWASP. קבוצות הכללים מבוססות על קבוצת הכללים הבסיסית של OWASP Modsecurity גרסה 3.0.2, כדי להגן מפני חלק מסיכוני האבטחה הנפוצים ביותר באפליקציות אינטרנט, כולל הכללת קובץ מקומי (lfi), הכללת קובץ מרוחק (rfi), הרצת קוד מרוחק (rce) ועוד.
ב-Codelab הזה תלמדו איך לצמצם חלק מנקודות החולשה הנפוצות באמצעות כללי WAF של Google Cloud Armor.
מה תלמדו
- איך מגדירים קבוצת מופעים ומאזן עומסים גלובלי כדי לתמוך בשירות
- איך מגדירים מדיניות אבטחה של Cloud Armor עם כללי WAF שהוגדרו מראש כדי להגן מפני lfi, rce, סורקים, מתקפות פרוטוקול וקיבוע סשן
- איך מוודאים ש-Cloud Armor הפחית את ההשפעה של התקפה באמצעות בדיקת היומנים.
מה תצטרכו
- ידע בסיסי ב-Google Compute Engine ( codelab)
- ידע בסיסי ברישות וב-TCP/IP
- ידע בסיסי בשורת הפקודה של Unix/Linux
- מומלץ להשלים סיור מודרך ברשת ב-GCP באמצעות Networking in the Google Cloud
- (אופציונלי) כדאי להשלים את השיעור Lab בנושא Cloudnet20 Cloud Armor כדי ללמוד איך להגן על עומסי עבודה באמצעות הזרקת SQL וכללים שמבוססים על כתובות IP ומיקום גיאוגרפי.
טופולוגיה ותרחיש שימוש של Codelab

איור 1 – טופולוגיה של Codelab בנושא כללי WAF של Cloud Armor
האפליקציה OWASP Juice Shop שימושית להדרכה בנושא אבטחה ולהעלאת המודעות לנושא, כי היא מכילה מקרים של כל אחת מ-10 נקודות החולשה באבטחה של OWASP – בכוונה. תוקף יכול לנצל את הפגיעות הזו למטרות בדיקה. ב-Codelab הזה נשתמש בו כדי להדגים כמה מתקפות על אפליקציות, ואז נגן על האפליקציה באמצעות כללי WAF של Cloud Armor. האפליקציה תהיה מול מאזן עומסים של Google Cloud, שיוחלו עליו כללי מדיניות האבטחה והכללים של Cloud Armor. הוא יוגש באינטרנט הציבורי, ולכן אפשר יהיה להגיע אליו כמעט מכל מקום, והוא יהיה מוגן באמצעות Cloud Armor וכללי חומת אש של VPC.
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה נתייחס אליו כאל PROJECT_ID.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.
לפני שמתחילים
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
הפעלת ממשקי API
הפעלת כל השירותים הנדרשים
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 ואת רשת המשנה, מגדירים כמה כללי חומת אש. כלל חומת האש הראשון ישמש כדי לאפשר לכל כתובות ה-IP לגשת לכתובת ה-IP החיצונית של אתר האינטרנט של אפליקציית הבדיקה ביציאה 3000. כלל חומת האש השני ישמש כדי לאפשר בדיקות תקינות מכתובת ה-IP של מאזני העומסים.
מ-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 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].
אחרי שיצרתם את קבוצת המופעים הלא מנוהלת, השלב הבא הוא ליצור בדיקת תקינות, שירות לקצה העורפי, מפת URL, שרת proxy ביעד וכלל העברה.
הגדרת הרכיב של מאזן העומסים ב-Cloud: בדיקת תקינות
יוצרים את בדיקת התקינות של יציאת השירות Juice Shop.
מ-Cloud Shell
gcloud compute health-checks create tcp tcp-port-3000 \
--port 3000
פלט
Created NAME PROTOCOL tcp-port-3000 TCP
הגדרת הרכיב של מאזן העומסים ב-Cloud: שירות קצה עורפי
יוצרים את הפרמטרים של שירות לקצה העורפי.
מ-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: מפת כתובות URL
יוצרים את מפת ה-URL לשליחה לשרת העורפי.
מ-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: target proxy
יוצרים את שרת ה-proxy ליעד כדי להציג את מפת כתובות ה-URL.
מ-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].
אימות שהשירות 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 מופצים בשלבים מקוצרים.
התבוננות בפרצת אבטחה מסוג LFI: Path Traversal
הכללת קבצים מקומיים היא תהליך של צפייה בקבצים שקיימים בשרת על ידי ניצול חוסר אימות של הקלט בבקשה, כדי לחשוף מידע אישי רגיש. בדוגמה הבאה מוצג פשוט שניתן לבצע Path traversal. בדפדפן או באמצעות curl, בודקים נתיב קיים שהאפליקציה מציגה.
מ-Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp
פלט
HTTP/1.1 200 OK <...>
כדאי גם לשים לב ש-Path traversal פועל:
מ-Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp/../
פלט
HTTP/1.1 200 OK <...>
התבוננות בנקודת חולשה של RCE
הפעלת קוד מרחוק כוללת תרחישים שונים של הזרקת פקודות ב-UNIX וב-Windows, שמאפשרים לתוקפים להפעיל פקודות של מערכת ההפעלה שבדרך כלל מוגבלות למשתמשים עם הרשאות. בדוגמה הבאה מוצגת הפעלה פשוטה של פקודת ls שהועברה.
מ-Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
פלט
HTTP/1.1 200 OK <...>
כדי לראות את הפלט המלא, אפשר להסיר את הדגלים של curl.
מעקב אחר הגישה של סורק מוכר
אפליקציות סריקה מסחריות וגם כאלה עם קוד פתוח מיועדות למטרות שונות, כולל סריקה לאיתור נקודות חולשה. הכלים האלה משתמשים ב-User-Agent מוכר ובכותרות אחרות. שימו לב ש-curl פועל עם כותרת ידועה של סוכן משתמש:
מ-Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
פלט
HTTP/1.1 200 OK <...>
התבוננות במתקפת פרוטוקול: פיצול HTTP
חלק מאפליקציות האינטרנט משתמשות בקלט מהמשתמש כדי ליצור את הכותרות בתשובות. אם האפליקציה לא מסננת את הקלט בצורה נכונה, תוקף יכול להרעיל את פרמטר הקלט באמצעות הרצף %0d%0a (רצף ה-CRLF שמשמש להפרדה בין שורות שונות). אז כל דבר שמנתח את התגובה, כמו שרת proxy ביניים, עלול לפרש אותה כשתי תגובות, ולספק תוכן שגוי בבקשות הבאות. הוספת הרצף %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 <...>
Observe session fixation
מ-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"
מכיוון שכלל ברירת המחדל מוגדר עם הפעולה deny (דחייה), עלינו לאפשר גישה מכתובת ה-IP שלך. צריך למצוא את כתובת ה-IP הציבורית (באמצעות curl, ipmonkey, whatismyip וכו').
מתוך Cloud Shell:
MY_IP=$(curl ifconfig.me)
מוסיפים את הכלל הראשון כדי לאפשר גישה מכתובת ה-IP שלכם (מזינים את כתובת ה-IP שלכם למטה)
מתוך 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"
עדכון מדיניות האבטחה כדי לחסום מתקפות LFI
החלת קבוצת הכללים המרכזית של OWASP ModSecurity שמונעת Path traversal להכללות של קבצים מקומיים.
מתוך 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
עדכון מדיניות האבטחה כדי לחסום Remote Code Execution (rce)
בהתאם ל-OWASP ModSecurity Core Rule Set, צריך להחיל כללים שמחפשים 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 Core Rule Set כדי לחסום סורקי אבטחה מוכרים, לקוחות HTTP של סקריפטים וסורקי אינטרנט.
מתוך 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, צריך להחיל כללים שמחפשים את התווים Carriage Return (CR) %0d ו-Linefeed (LF) %0a וסוגים אחרים של מתקפות על פרוטוקולים, כמו HTTP Request Smuggling.
מתוך 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. מעקב אחר ההגנה של Cloud Armor באמצעות OWASP ModSecurity Core Rule Set
אישור הפחתת הסיכון של פגיעות LFI
מ-Cloud Shell
curl -Ii http://$PUBLIC_SVC_IP/?a=../
פלט
HTTP/1.1 403 Forbidden <...>
מוודאים שמתקפת ה-RCE נחלשה
מ-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 – חסימת LFI (הכללת קבצים מקומיים)
- עדיפות 9001 – חסימת RCE (הרצת קוד מרחוק/החדרת פקודות)
- עדיפות 9002 – זוהו סורקים חוסמים
- עדיפות 9003 – חסימת מתקפות פרוטוקול כמו פיצול HTTP והברחת HTTP
- עדיפות 9004 – חסימת התקפות של קיבוע סשן
- עדיפות 10000 – מתן הרשאה לכתובת ה-IP לגשת לאתר
- ברירת מחדל של עדיפות – דחייה.
*שימו לב שהכלל 'מתן הרשאה לכתובת ה-IP שלך' מוגדר עם מספר העדיפות הכי גבוה כדי לאפשר גישה לאתר, אבל חוסם כל מתקפה.
9. עיון ביומנים של מדיניות האבטחה של Cloud Armor
בדף Cloud Armor Console, אפשר לראות את פרטי מדיניות האבטחה וללחוץ על הכרטיסייה Logs ואז על הקישור View policy logs כדי לעבור לדף Cloud Logging. הסינון יתבצע אוטומטית על סמך מדיניות האבטחה הרלוונטית, למשל resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs). בודקים את קודי התגובה של השגיאה 403 ומרחיבים את פרטי היומן כדי לראות את השם של מדיניות האבטחה שנאכפת, את הערך של השדה התואם ואת מזהי הביטויים שהוגדרו מראש (או את מזהה החתימה). בצילומי המסך הבאים מוצגות דוגמאות ליומנים של מדיניות האבטחה שנאכפת שהוגדרה ב-codelab הזה.
יומן LFI

יומן RCE

יומן זיהוי סורקים

יומן של התקפות על פרוטוקולים

יומן של קיבוע סשן

10. ניקוי נתונים חכם
אחרי שמסיימים את שיעור ה-Lab, צריך למחוק את המשאבים.
מריצים את הפקודות האלה כדי למחוק את כללי מדיניות האבטחה של Cloud Armor, את מאזן העומסים, את המכונות, את כללי חומת האש ואת רשת ה-VPC.
הסרת כללי מדיניות האבטחה של Cloud Armor משירות ה-Backend
gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global
מחיקת מדיניות האבטחה של Cloud Armor
מחיקה של מדיניות האבטחה תגרום למחיקה אוטומטית של הכללים שמשויכים אליה.
gcloud -q compute security-policies delete block-with-modsec-crs
מחיקת משאבי מאזן העומסים
משאבי מאזן העומסים שיימחקו כוללים את כלל ההעברה, שרתי proxy מסוג target-http, מיפוי של כתובות URL, קצה עורפי, בדיקות תקינות וקבוצת מופעים.
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. מעולה!
כל הכבוד על השלמת ה-Codelab בנושא כללי WAF שהוגדרו מראש ב-Cloud Armor!
מה נכלל
- איך מגדירים קבוצת מופעים ומאזן עומסים גלובלי בענן
- איך מגדירים מדיניות אבטחה של Cloud Armor עם כללי WAF שהוגדרו מראש כדי להגן מפני lfi, rce, סורקים, מתקפות פרוטוקול וקיבוע סשן
- איך מוודאים ש-Cloud Armor צמצם חלק מהמתקפות שמופיעות ברשימת עשרת המתקפות המובילות של OWASP באמצעות יומנים
השלבים הבאים
- הגנה על האפליקציה מפני עשר נקודות החולשה המובילות של OWASP באמצעות כללי WAF מוגדרים מראש של Cloud Armor
- שיפור הכללים בהתאם לרמות הרגישות
- אפשר להשתמש בהפניה לשפה של כללים מותאמים אישית כדי לאכוף אבטחה בצורה ספציפית יותר.