ניהול בוטים באמצעות Google Cloud Armor + reCAPTCHA

1. מבוא

איזון העומסים של HTTP(S) ב-Google Cloud נפרס בקצה הרשת של Google בנקודות נוכחות (POP) של Google ברחבי העולם. תעבורת משתמשים שמנותבת למאזן עומסים מסוג HTTP(S) נכנסת ל-POP שהכי קרוב למשתמש, ואז מתבצע איזון עומסים ברשת הגלובלית של Google עד להגעה לקצה העורפי הכי קרוב שיש בו מספיק קיבולת פנויה.

‫Cloud Armor היא מערכת של Google לזיהוי מתקפות מניעת שירות (DDoS) וחומת אש ליישומי אינטרנט (WAF). ‫Cloud Armor משולב באופן הדוק עם מאזן העומסים של HTTP ב-Google Cloud ומגן על אפליקציות של לקוחות Google Cloud מפני מתקפות מהאינטרנט. ‫reCAPTCHA Enterprise הוא שירות שמגן על האתר מפני ספאם וניצול לרעה. הוא מבוסס על reCAPTCHA API הקיים, שמשתמש בטכניקות מתקדמות לניתוח סיכונים כדי להבחין בין בני אדם לבין בוטים. הפתרון לניהול בוטים ב-Cloud Armor הוא פתרון מקצה לקצה שמשלב את זיהוי הבוטים והניקוד של reCAPTCHA Enterprise עם אכיפה של Cloud Armor בקצה הרשת, כדי להגן על אפליקציות במורד הזרם.

בשיעור ה-Lab הזה תגדירו מאזן עומסים (LB) מסוג HTTP עם קצה עורפי, כמו שמוצג בתרשים שלמטה. בהמשך נסביר איך להגדיר מפתח אתר של טוקן סשן reCAPTCHA ולהטמיע אותו באתר. בנוסף, תלמדו איך להגדיר הפניה אוטומטית לאתגר ידני של reCAPTCHA Enterprise. לאחר מכן נגדיר מדיניות לניהול בוטים ב-Cloud Armor כדי להראות איך זיהוי בוטים מגן על האפליקציה מפני תנועת בוטים זדונית.

8b46e6728996bc0c.png

מה תלמדו

  • איך מגדירים מאזן עומסים מסוג HTTP עם בדיקות תקינות מתאימות.
  • איך ליצור מפתח אתר של דף אתגר reCAPTCHA WAF ולקשר אותו לכללי מדיניות האבטחה של Cloud Armor.
  • איך יוצרים מפתח אתר של טוקן סשן reCAPTCHA ומתקינים אותו בדפי האינטרנט.
  • איך יוצרים מדיניות לניהול בוטים ב-Cloud Armor.
  • איך מוודאים שמדיניות ניהול הבוטים מטפלת בתנועה על סמך הכללים שהוגדרו.

מה תצטרכו

  • ידע בסיסי ברשתות ו-HTTP
  • ידע בסיסי בשורת הפקודה של Unix/Linux

2. הגדרה ודרישות

הגדרת סביבה בקצב אישי

  1. נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • שם הפרויקט הוא השם המוצג למשתתפים בפרויקט. זו מחרוזת של תווים שלא נמצאת בשימוש ב-Google APIs, ואפשר לעדכן אותה בכל שלב.
  • מזהה הפרויקט חייב להיות ייחודי לכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שהוא מוגדר). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית. בדרך כלל לא צריך לדעת מה היא. ברוב סדנאות ה-Codelab, תצטרכו להפנות למזהה הפרויקט (ובדרך כלל הוא מזוהה כ-PROJECT_ID), אז אם אתם לא אוהבים אותו, תוכלו ליצור מזהה אקראי אחר, או לנסות ליצור מזהה משלכם ולראות אם הוא זמין. אחרי שהפרויקט נוצר, הוא 'קפוא'.
  • יש ערך שלישי, מספר פרויקט, שמשמש חלק מממשקי ה-API. מידע נוסף על שלושת הערכים האלה מופיע במאמרי העזרה.
  1. בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API. העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי לא תהיה עלות בכלל. כדי לכבות את המשאבים ולא לחייב אתכם מעבר למה שמוסבר במדריך הזה, צריך לפעול לפי ההוראות לניקוי שמופיעות בסוף ה-Codelab. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.

מפעילים את Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.

ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 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
gcloud services enable recaptchaenterprise.googleapis.com

3. הגדרת כללים של חומת אש שמאפשרים תעבורת HTTP ו-SSH אל ה-backends

מגדירים כללי חומת אש שמאפשרים תעבורת HTTP אל השרתים העורפיים מבדיקות התקינות של Google Cloud וממאזן העומסים. בנוסף, מגדירים כלל חומת אש שמאפשר SSH למכונות.

נשתמש ברשת ה-VPC default שנוצרה בפרויקט. יוצרים כלל חומת אש שמאפשר תעבורת HTTP אל השרתים העורפיים. בדיקות התקינות קובעות אילו מופעים של איזון עומסים יכולים לקבל חיבורים חדשים. באיזון עומסים של HTTP, בדיקות תקינות של מופעים מאוזני עומסים מגיעות מכתובות בטווחים ‎130.211.0.0/22 ו-‎35.191.0.0/16. כללי חומת האש ב-VPC צריכים לאפשר את החיבורים האלה. בנוסף, מאזני העומסים מתקשרים עם הבק-אנד באותו טווח כתובות IP.

  1. ב-Cloud Console, עוברים אל תפריט הניווט ( mainmenu.png) > רשת VPC > Firewall.

131fb495c9242335.png

  1. שימו לב לכללים הקיימים של חומת האש: ICMP,‏ internal,‏ RDP ו-SSH.כל פרויקט בענן ב-Google Cloud מתחיל עם רשת ברירת המחדל ועם הכללים האלה של חומת האש.
  2. לוחצים על יצירת כלל לחומת האש.
  3. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

נכס

ערך (מקלידים ערך או בוחרים אפשרות כמפורט)

שם

default-allow-health-check

רשת

ברירת מחדל

יעדים

תגי יעד שצוינו

תגי טירגוט

allow-health-check

מסנן מקור

טווחי כתובות IP

טווח כתובות ה-IP של המקור

‫130.211.0.0/22, 35.191.0.0/16

פרוטוקולים ויציאות

מציינים פרוטוקולים ויציאות, ואז מסמנים את התיבה לצד tcp. מזינים 80 כמספר היציאה

  1. לוחצים על יצירה.

לחלופין, אם אתם משתמשים בשורת הפקודה gcloud. זו הפקודה –

gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=allow-health-check
  1. באופן דומה, יוצרים כלל חומת אש שמאפשר חיבור SSH למכונות –
gcloud compute firewall-rules create allow-ssh --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0 --target-tags=allow-health-check

4. הגדרה של תבניות של מופעי מכונה ויצירה של קבוצות של מופעי מכונה מנוהלים

קבוצת מופעי מכונה מנוהלים משתמשת בתבנית של הגדרות מכונה כדי ליצור קבוצה של מופעים זהים. משתמשים בהם כדי ליצור את הקצה העורפי של מאזן העומסים של HTTP.

הגדרת תבניות של מכונות

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

  1. ב-Cloud Console, מנווטים אל תפריט הניווט ( mainmenu.png) > Compute Engine > תבניות של הגדרות מכונה, ואז לוחצים על יצירת תבנית של הגדרות מכונה.
  2. בשדה Name (שם), מקלידים lb-backend-template.
  3. בשדה Series, בוחרים באפשרות N1.
  4. לוחצים על Networking, Disks, Security, Management , Sole-Tenancy.

1d0b7122f4bb410d.png

  1. עוברים לקטע ניהול ומזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה.
#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo a2ensite default-ssl
sudo a2enmod ssl
sudo vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
sudo echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
  1. לוחצים על הכרטיסייה Networking (רשת), מוסיפים את תגי הרשת: allow-health-check
  2. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

נכס

ערך (מקלידים ערך או בוחרים אפשרות כמפורט)

רשת (בקטע Network Interfaces)

ברירת מחדל

רשת משנה (בקטע Network Interfaces)

ברירת מחדל (us-east1)

תגים של רשתות

allow-health-check

  1. לוחצים על יצירה.
  2. ממתינים ליצירת תבנית המופע.

יצירת קבוצת מופעי מכונה מנוהלים

  1. עדיין בדף Compute Engine, לוחצים על Instance groups (קבוצות של מכונות וירטואליות) בתפריט שמימין.

ed419061ad2b982c.png

  1. לוחצים על יצירת קבוצת מופעים. בוחרים באפשרות קבוצת מופעי מכונה מנוהלים חדשה (בלי שמירת מצב).
  2. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

נכס

ערך (מקלידים ערך או בוחרים אפשרות כמפורט)

שם

lb-backend-example

מיקום

תחום אחד

אזור

us-east1

תחום (zone)

us-east1-b

תבנית של הגדרות מכונה

lb-backend-template

התאמה אוטומטית לעומס (Automatic scaling)

לא להשתמש בהתאמת קנה מידה אוטומטית

מספר המופעים

1

  1. לוחצים על יצירה.

הוספת יציאה עם שם לקבוצת המופעים

מגדירים שירות HTTP לקבוצת המופעים וממפים שם של יציאה ליציאה הרלוונטית. שירות איזון העומסים מעביר את התנועה ליציאה שצוינה.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone us-east1-b

5. הגדרת מאזן עומסים מסוג HTTP

מגדירים את מאזן העומסים של HTTP לשליחת תעבורה לקצה העורפי lb-backend-example:

התחלת ההגדרה

  1. ב-Cloud Console, לוחצים על תפריט הניווט ( mainmenu.png) > Network Services > Load balancing, ואז לוחצים על Create load balancer.
  2. בקטע HTTP(S) Load Balancing, לוחצים על Start configuration.

4f8b8cb10347ecec.png

  1. בוחרים באפשרות From Internet to my VMs, ‏ Classic HTTP(S) Load Balancer ולוחצים על Continue.
  2. מגדירים את Name לערך http-lb.

הגדרת הקצה העורפי

שירותי קצה עורפי מפנים תנועה נכנסת לקצה עורפי אחד או יותר שמצורפים אליהם. כל קצה עורפי מורכב מקבוצת מכונות וממטא-נתונים נוספים של קיבולת ההגשה.

  1. לוחצים על Backend configuration.
  2. בקטע שירותי קצה עורפי וקטגוריות קצה עורפי לוחצים על יצירת שירות קצה עורפי.
  3. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

נכס

ערך (בוחרים אפשרות כמפורט)

שם

http-backend

פרוטוקול

HTTP

יציאה עם שם

htp

קבוצת מופעים

lb-backend-example

לנייד מספרים

80

  1. לוחצים על סיום.
  2. לוחצים על הוספת קצה עורפי.
  3. בקטע Health Check, בוחרים באפשרות Create a health check.

168a9ba1062b1f45.png

  1. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

נכס

ערך (בוחרים אפשרות כמפורט)

שם

http-health-check

פרוטוקול

TCP

יציאה

80

dc45bc726bb4dfad.png

  1. לוחצים על שמירה.
  2. מסמנים את התיבה הפעלת רישום ביומן.
  3. מגדירים את Sample Rate (שיעור הדגימה) ל-1:

c8f884fa4a8cd50.png

  1. לוחצים על Create כדי ליצור את שירות לקצה העורפי.

1fd2ad21b1d32a95.png

הגדרת הקצה הקדמי

כללי המארח והנתיב קובעים איך התנועה תנותב. לדוגמה, אפשר להפנות תנועה של סרטונים לעורף אחד ותנועה סטטית לעורף אחר. עם זאת, בשיעור ה-Lab הזה לא מגדירים את הכללים של המארח והנתיב.

  1. לוחצים על Frontend configuration.
  2. מציינים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

נכס

ערך (מקלידים ערך או בוחרים אפשרות כמפורט)

פרוטוקול

HTTP

גרסת ה-IP

IPv4

כתובת IP

זמנית

יציאה

80

  1. לוחצים על סיום.

בדיקה ויצירה של מאזן עומסים מסוג HTTP

  1. לוחצים על בדיקה וסיום.

478e5e51057af3a3.png

  1. בודקים את שירותי הקצה העורפי והקצה הקדמי.
  2. לוחצים על Create.
  3. ממתינים ליצירת מאזן העומסים.
  4. לוחצים על השם של מאזן העומסים (http-lb).
  5. שימו לב לכתובת ה-IPv4 של מאזן העומסים לקראת המשימה הבאה. אנחנו נתייחס אליו כאל [LB_IP_v4].

6. בדיקת מאזן העומסים (LB) מסוג HTTP

אחרי שיוצרים את מאזן העומסים ב-HTTP עבור הקצה העורפי, צריך לוודא שהתנועה מועברת לשירות הקצה העורפי. כדי לבדוק את הגישה ל-IPv4 של מאזן העומסים HTTP, פותחים כרטיסייה חדשה בדפדפן ועוברים אל http://[LB_IP_v4]. חשוב להקפיד להחליף את [LB_IP_v4] בכתובת ה-IPv4 של מאזן העומסים.

7. יצירה ופריסה של טוקן סשן של reCAPTCHA ומפתח אתר של דף אתגר

שילוב של reCAPTCHA Enterprise עם WAF ו-Google Cloud Armor מציע את התכונות הבאות: דף מבחן reCAPTCHA, טוקנים של פעולות reCAPTCHA וטוקנים של סשנים ב-reCAPTCHA. בשיעור ה-Lab הזה נטמיע מפתח אתר של טוקן סשן reCAPTCHA ודף אתגר של reCAPTCHA WAF.

יצירת טוקן סשן של reCAPTCHA ו מפתח אתר של דף אתגר ב-WAF

לפני שיוצרים את מפתח האתר של טוקן הסשן ואת מפתח האתר של דף האתגר, צריך לוודא שהפעלתם את reCAPTCHA Enterprise API כמו שמוסבר בקטע 'הפעלת ה-API' בתחילת המאמר.

אחרי הבדיקה, קוד ה-JavaScript של reCAPTCHA מגדיר אסימון סשן של reCAPTCHA כקובץ Cookie בדפדפן של משתמש הקצה. הדפדפן של משתמש הקצה מצרף את קובץ ה-cookie ומרענן אותו כל עוד ה-JavaScript של reCAPTCHA פעיל.

  1. יוצרים את מפתח האתר של טוקן הסשן של reCAPTCHA ומפעילים את התכונה WAF עבור המפתח. בנוסף, נגדיר את שירות ה-WAF ל-Cloud Armor כדי להפעיל את השילוב של Cloud Armor.
gcloud recaptcha keys create --display-name=test-key-name \
   --web --allow-all-domains --integration-type=score --testing-score=0.5 \
   --waf-feature=session-token --waf-service=ca
  1. הפלט של הפקודה שלמעלה יציג את המפתח שנוצר. חשוב לשים לב לשם הזה, כי בשלב הבא נוסיף אותו לאתר.
  2. יוצרים את מפתח האתר של דף האתגר של reCAPTCHA WAF ומפעילים את תכונת ה-WAF עבור המפתח. אתם יכולים להשתמש בתכונה 'דף אתגר reCAPTCHA' כדי להפנות בקשות נכנסות אל reCAPTCHA Enterprise, כדי לקבוע אם כל בקשה היא הונאה פוטנציאלית או בקשה לגיטימית. בהמשך נשייך את המפתח הזה למדיניות האבטחה של Cloud Armor כדי להפעיל את האתגר הידני. בהמשך השלבים נתייחס למפתח הזה בתור CHALLENGE-PAGE-KEY.
gcloud recaptcha keys create --display-name=challenge-page-key \
   --web --allow-all-domains --integration-type=INVISIBLE \
   --waf-feature=challenge-page --waf-service=ca
  1. עוברים אל תפריט הניווט ( mainmenu.png) > אבטחה > reCAPTCHA Enterprise. המפתחות שיצרתם אמורים להופיע בקטע Enterprise Keys (מפתחות Enterprise) –

4e2567aae0eb92d7.png

הטמעה של מפתח אתר של אסימון סשן reCAPTCHA

  1. עוברים אל תפריט הניווט ( mainmenu.png) > Compute Engine > מכונות VM. מאתרים את המכונה הווירטואלית בקבוצת המופעים ומתחברים אליה באמצעות SSH.

6d7b0fd12a667b5f.png

  1. עוברים לספריית הבסיס של שרת האינטרנט ומשנים את המשתמש ל-root –
@lb-backend-example-4wmn:~$ cd /var/www/html/
@lb-backend-example-4wmn:/var/www/html$ sudo su
  1. מעדכנים את דף הנחיתה index.html ומטמיעים את מפתח האתר של טוקן הסשן של reCAPTCHA. מפתח האתר של טוקן הסשן מוגדר בקטע head של דף הנחיתה, כמו בדוגמה הבאה –

<script src="https://www.google.com/recaptcha/enterprise.js?render=<REPLACE_TOKEN_HERE>&waf=session" async defer></script>

חשוב להחליף את הטוקן לפני שמעדכנים את הקובץ index.html כמו שמוסבר בהמשך –

root@lb-backend-example-4wmn:/var/www/html# echo '<!doctype html><html><head><title>ReCAPTCHA Session Token</title><script src="https://www.google.com/recaptcha/enterprise.js?render=<REPLACE_TOKEN_HERE>&waf=session" async defer></script></head><body><h1>Main Page</h1><p><a href="/good-score.html">Visit allowed link</a></p><p><a href="/bad-score.html">Visit blocked link</a></p><p><a href="/median-score.html">Visit redirect link</a></p></body></html>' > index.html
  1. יוצרים עוד שלושה דפים לדוגמה כדי לבדוק את מדיניות ניהול הבוטים –
  • good-score.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Congrats! You have a good score!!</h1></body></html>' > good-score.html
  • bad-score.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Sorry, You have a bad score!</h1></body></html>' > bad-score.html
  • median-score.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>You have a median score that we need a second verification.</h1></body></html>' > median-score.html
  1. כדי לוודא שיש לכם גישה לכל דפי האינטרנט, פותחים אותם בדפדפן. חשוב להקפיד להחליף את [LB_IP_v4] בכתובת ה-IPv4 של מאזן העומסים.
  • פותחים את http://[LB_IP_v4]/index.html. כדי לוודא שההטמעה של reCAPTCHA פועלת, צריך לחפש את הכיתוב 'מוגן באמצעות reCAPTCHA' בפינה השמאלית התחתונה של הדף –

d695ad23d91ae4e9.png

  • לוחצים על כל אחד מהקישורים.

4a2ad1b2f10b4c86.png

  • מוודאים שיש לכם גישה לכל הדפים.

481f63bf5e6f244.png

8. יצירת כללים של מדיניות אבטחה ב-Cloud Armor לניהול בוטים

בקטע הזה תשתמשו בכללים לניהול בוטים ב-Cloud Armor כדי לאשר, לדחות ולהפנות בקשות על סמך הניקוד ב-reCAPTCHA. חשוב לזכור שכשיצרתם את מפתח האתר של טוקן הסשן, הגדרתם ציון בדיקה של 0.5.

  1. ב-Cloud Shell(הוראות לשימוש ב-Cloud Shell מופיעות בקטע הגדרה ודרישות במאמר הפעלת Cloud Shell), יוצרים מדיניות אבטחה באמצעות gcloud:
gcloud compute security-policies create recaptcha-policy \
    --description "policy for bot management"
  1. כדי להשתמש באתגר ידני של reCAPTCHA Enterprise כדי להבחין בין לקוחות אנושיים ללקוחות אוטומטיים, צריך לשייך את מפתח האתר של אתגר reCAPTCHA WAF שיצרנו לאתגר ידני למדיניות האבטחה. מחליפים את המחרוזת CHALLENGE-PAGE-KEY במפתח שיצרנו –
gcloud compute security-policies update recaptcha-policy \
   --recaptcha-redirect-site-key "CHALLENGE-PAGE-KEY"
  1. מוסיפים כלל לניהול בוטים כדי לאפשר תנועה אם נתיב כתובת ה-URL תואם ל-good-score.html והציון גבוה מ-0.4.
gcloud compute security-policies rules create 2000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('good-score.html') &&    token.recaptcha_session.score > 0.4"\
     --action allow
  1. מוסיפים כלל לניהול בוטים כדי לדחות תנועה אם נתיב כתובת ה-URL תואם ל-bad-score.html והציון נמוך מ-0.6.
  gcloud compute security-policies rules create 3000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('bad-score.html') && token.recaptcha_session.score < 0.6"\
     --action "deny-403"
  1. מוסיפים כלל לניהול בוטים כדי להפנות תנועה ל-Google reCAPTCHA אם נתיב ה-URL תואם ל-median-score.html והציון שווה ל-0.5
  gcloud compute security-policies rules create 1000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('median-score.html') && token.recaptcha_session.score == 0.5"\
     --action redirect \
     --redirect-type google-recaptcha
  1. מצרפים את מדיניות האבטחה לשירות הקצה העורפי http-backend:
gcloud compute backend-services update http-backend \
    --security-policy recaptcha-policy –-global
  1. במסוף, מנווטים אל תפריט הניווט > Network Security > Cloud Armor.
  2. לוחצים על recaptcha-policy. המדיניות שלכם צריכה להיראות כך:

74852618aaa96786.png

9. אימות של ניהול בוטים באמצעות Cloud Armor

  1. פותחים דפדפן ומזינים את כתובת ה-URL http://[LB_IP_v4]/index.html. עוברים אל 'ביקור בקישור שמאפשר גישה'. הגישה שלך אמורה להיות מאושרת –

edf3e6ca238d2ee7.png

  1. כדי לוודא שיש לנו סשן חדש, פותחים חלון חדש במצב פרטי. מזינים את כתובת ה-URL http://[LB_IP_v4]/index.html ועוברים אל 'כניסה לקישור חסום'. אמורה להתקבל שגיאת HTTP 403 –

ecef5655b291dbb0.png

  1. כדי לוודא שיש לנו סשן חדש, פותחים חלון חדש במצב פרטי. מזינים את כתובת ה-URL http://[LB_IP_v4]/index.html ועוברים אל 'כניסה לקישור להפניה אוטומטית'. אתם אמורים לראות את ההפניה ל-Google reCAPTCHA ואת דף האתגר הידני כמו בתמונה שלמטה –

53ed2b4067b55436.png

אימות היומנים של Cloud Armor

כדאי לעיין ביומני מדיניות האבטחה כדי לוודא שהניהול של הבוטים פעל כצפוי.

  1. במסוף, מנווטים אל תפריט הניווט > אבטחת רשת > Cloud Armor.
  2. לוחצים על recaptcha-policy.
  3. לוחצים על יומנים.

46fd825d8506d355.png

  1. לוחצים על הצגת יומני מדיניות.
  2. למטה מופיעה שאילתת MQL(שפת שאילתות לניטור). אפשר להעתיק ולהדביק אותה בעורך השאילתות:
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(recaptcha-policy)
  1. לוחצים על Run Query.
  2. מחפשים בתוצאות השאילתה רשומה ביומן שבה הבקשה היא http://[LB_IP_v4]/good-score.html. מרחיבים את jsonPayload.מרחיבים את enforcedSecurityPolicy.

b7b1712642cf092b.png

  1. חוזרים על אותם השלבים עבור http://[LB_IP_v4]/bad-score.html ו-http://[LB_IP_v4]/median-score.html

c28f96d83056725a.png8c4803d75a77142c.png

שימו לב שההגדרה configuredAction היא ALLOW, DENY או GOOGLE_RECAPTCHA עם השם recaptcha-policy.

מזל טוב! סיימתם את ה-Lab בנושא ניהול בוטים באמצעות Cloud Armor

‫©2020 Google LLC כל הזכויות שמורות. Google והלוגו של Google הם סימנים מסחריים רשומים של Google LLC. כל שמות החברות והמוצרים האחרים עשויים להיות סימנים מסחריים של החברות שאליהן הם קשורים.

10. ניקוי המעבדה

  1. עוברים אל Network Security >> Cloud Armor >> %POLICY NAME% ובוחרים באפשרות delete (מחיקה) –

2646f9c1df093f90.png

  1. עוברים אל Networking >> Network services >> Load Balancing (רשת >> שירותי רשת >> איזון עומסים). בוחרים את מאזן העומסים שיצרתם ולוחצים על 'מחיקה'.

8ad4f55dc06513f7.png

בוחרים את שירות לקצה העורפי ואת בדיקת תקינות כמשאבים נוספים למחיקה –

f6f02bb56add6420.png

  1. מנווטים אל תפריט הניווט ( mainmenu.png) > Compute Engine > Instance Groups. בוחרים את קבוצת המכונות המנוהלת ולוחצים על Delete (מחיקה) –

2116b286954fd6.png

כדי לאשר את המחיקה, מקלידים delete בתיבת הטקסט.

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

  1. בחלונית הימנית, עוברים אל Instance templates (תבניות של מכונות וירטואליות)**.** בוחרים את תבנית של הגדרות מכונה ולוחצים על 'מחיקה'.
  2. עוברים אל תפריט הניווט ( mainmenu.png) > רשת VPC ‏ > חומת אש. בוחרים את הכללים default-allow-health-check ו-allow-ssh ולוחצים על Delete (מחיקה).
  3. עוברים אל תפריט הניווט ( mainmenu.png) > אבטחה > reCAPTCHA Enterprise. בוחרים את המפתחות שיצרנו ומוחקים אותם. כדי לאשר את המחיקה, מקלידים DELETE בתיבת הטקסט.

e71ecd11baf262ca.png

‫11. מעולה!

הצלחתם להטמיע ניהול בוטים באמצעות Cloud Armor. הגדרתם מאזן עומסים של HTTP. לאחר מכן יצרת והטמעת מפתח אתר של טוקן סשן reCAPTCHA בדף אינטרנט. למדתם גם איך ליצור מפתח אתר לדף אתגר. הגדרתם מדיניות לניהול בוטים ב-Cloud Armor ואימתתם את אופן הטיפול בבקשות על סמך הכללים. הייתה לך אפשרות לעיין ביומני מדיניות האבטחה כדי לזהות למה התנועה אושרה, נחסמה או הופנתה מחדש.

מה נכלל

  • איך מגדירים תבניות של מכונות ויוצרים קבוצות של מופעי מכונה מנוהלים.
  • איך מגדירים מאזן עומסים (LB) מסוג HTTP.
  • איך יוצרים מדיניות לניהול בוטים ב-Cloud Armor.
  • איך ליצור ולהטמיע מפתח אתר של טוקן סשן של reCAPTCHA.
  • איך יוצרים ומטמיעים מפתח אתר של מבחן reCAPTCHA.
  • איך מוודאים שמדיניות ניהול הבוטים פועלת כצפוי.

השלבים הבאים

  • כדאי לנסות להגדיר טוקנים של פעולות reCAPTCHA.