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

1. מבוא

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

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

בשיעור ה-Lab הזה תגדירו מאזן עומסים של 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.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

הפעלת Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.

לפני שמתחילים

ב-Inside 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 לקצוות עורפיים

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

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

  1. במסוף Cloud, עוברים אל תפריט הניווט (mainmenu.png) > VPC Network (רשת VPC) > חומת אש.

131fb495c9242335.png

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

נכס

ערך (יש להקליד ערך או לבחור אפשרות כפי שצוין)

שם

default-allow-health-check

רשת

ברירת מחדל

יעדים

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

תגי יעד

בדיקת תקינות

מסנן המקור

טווחי IP

טווחי IP של המקור

22.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, עוברים אל Navigation menu ( mainmenu.png) > Compute Engine > Instance templates (תבניות מכונות) ולוחצים על Create instance template.
  2. בשדה Name, מקלידים lb-backend-template.
  3. בשביל סדרות, בוחרים באפשרות N1.
  4. לוחצים על Networking, Disks, Security, Management , Sole-Tenancy.

1d0b7122f4b410d.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. מגדירים את הערכים הבאים ומשאירים את כל שאר הערכים בברירת המחדל –

נכס

ערך (יש להקליד ערך או לבחור אפשרות כפי שצוין)

רשת (בממשקי רשת)

ברירת מחדל

רשת משנה (בממשקי רשת)

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

תגי רשת

בדיקת תקינות

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

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

  1. בדף Compute Engine, לוחצים על Instance groups בתפריט הימני.

ed419061ad2b982c.png

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

נכס

ערך (יש להקליד ערך או לבחור אפשרות כפי שצוין)

שם

דוגמה לקצה העורפי lb-backend

מיקום

תחום יחיד

אזור

us-east1

תחום (zone)

us-east1-b

תבנית של מכונה

תבנית קצה עורפי (lb-backend)

התאמה לעומס (autoscaling)

לא לבצע התאמה אוטומטית לעומס (auto-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, לוחצים על תפריט הניווט ( mainmenu.png) > לוחצים על Network Services > Load balancing, ואז לוחצים על Create load balancer.
  2. בקטע HTTP(S) Load Balancing, לוחצים על Start configuration.

4f8b8cb10347ec.png

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

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

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

  1. לוחצים על Backend configuration.
  2. עבור Backend services & Backend bucket (שירותי קצה עורפי), לוחצים על Create a Backend service (יצירת שירות לקצה העורפי).
  3. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

נכס

ערך (יש לבחור אפשרות כפי שצוין)

שם

קצה עורפי http

פרוטוקול

HTTP

יציאה בעלת שם

Htp

קבוצת מופעים

דוגמה לקצה העורפי lb-backend

מספרי יציאות

80

  1. לוחצים על סיום.
  2. לוחצים על הוספת קצה עורפי.
  3. בקטע בדיקת תקינות, בוחרים באפשרות יצירה של בדיקת תקינות.

168a9ba1062b1f45.png

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

נכס

ערך (יש לבחור אפשרות כפי שצוין)

שם

http-health-check

פרוטוקול

TCP

נמל

80

dc45bc726bb4dfad.png

  1. לוחצים על שמירה.
  2. מסמנים את התיבה Enable Logging.
  3. מגדירים את תדירות הדגימה ל-1:

c8f884fa4a8cd50.png

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

1fd2ad21b1d32a95.png

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

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

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

נכס

ערך (יש להקליד ערך או לבחור אפשרות כפי שצוין)

פרוטוקול

HTTP

גרסת IP

IPv4

כתובת IP

זמנית

נמל

80

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

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

  1. לוחצים על Review and finalize.

478e5e51057af3a3.png

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

6. בדיקת מאזן העומסים של HTTP

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

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

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

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

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

קוד ה-JavaScript של reCAPTCHA מגדיר אסימון סשן של reCAPTCHA כקובץ cookie בדפדפן של משתמש הקצה לאחר הבדיקה. הדפדפן של משתמש הקצה מצרף את קובץ ה-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 כדי להפעיל את האתגר הידני. בשלבים הבאים נתייחס למפתח הזה כמפתח אתגר-דף.
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' –

4e2567aae0eb92d7.png

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

  1. מנווטים אל תפריט הניווט ( mainmenu.png) > Compute Engine > VM Instances. מאתרים את המכונה הווירטואלית (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), אפשר ליצור מדיניות אבטחה דרך gcloud בקטע Setup and Restrictions (הגדרה ודרישות) במאמר Start Cloud Shell.
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. יש להוסיף כלל לניהול בוטים כדי להפנות תנועה אל reCAPTCHA של Google אם נתיב כתובת ה-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 של שירות הקצה העורפי:
gcloud compute backend-services update http-backend \
    --security-policy recaptcha-policy –-global
  1. במסוף, עוברים לתפריט הניווט > Network Security > Cloud Armor.
  2. לוחצים על מדיניות reCAPTCHA. המדיניות אמורה להיראות כך:

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. במסוף, עוברים לתפריט הניווט > Network Security > 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.Expand EnforcementPolicyPolicy.

b7b1712642cf092b.png

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

c28f96d83056725a.png

8c4803d75a77142c.png

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

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

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

10. ניקוי שיעור Lab

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

2646f9c1df093f90.png

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

8ad4f55dc06513f7.png

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

f6f02bb56add6420.png

  1. עוברים אל Navigation menu ( mainmenu.png) > Compute Engine > Instance Groups. בוחרים את קבוצת המופעים המנוהלים ולוחצים על 'מחיקה' -

2116b286954fd6.png

מאשרים את המחיקה על ידי הקלדת המילה 'מחיקה' בתיבת הטקסט.

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

  1. עוברים אל Instance templates (תבניות של מכונות) מהחלונית בצד שמאל**.** בוחרים את תבנית המכונה ולוחצים על 'מחיקה'.
  2. עוברים אל תפריט הניווט ( mainmenu.png) > רשת VPC > חומת אש. עליך לבחור את כללי ברירת המחדל-'אישור-תקינות' ו'אישור SSH', וללחוץ על 'מחיקה'.
  3. עוברים אל תפריט הניווט ( mainmenu.png) > אבטחה > reCAPTCHA Enterprise. בוחרים את המפתחות שיצרנו ומוחקים אותם. מאשרים את המחיקה על ידי הקלדת "DELETE" בתיבת הטקסט.

e71ecd11baf262ca.png

11. כל הכבוד!

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

אילו נושאים דיברנו?

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

השלבים הבאים

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