1. מבוא וסקירה כללית
DNS Armor, מבית Infoblox, הוא שירות מנוהל מלא שמספק אבטחה ברמת ה-DNS לעומסי העבודה שלכם ב-Google Cloud. הכלי המתקדם לזיהוי איומים נועד לזהות פעילות זדונית בשלב המוקדם ביותר בשרשרת התקיפה – שאילתת ה-DNS – בלי להוסיף מורכבות תפעולית או תקורה של ביצועים.
ב-Codelab הזה אנחנו מסבירים בפירוט איך מגדירים ובודקים את שירות DNS Armor. תגדירו את תשתית הרשת הנדרשת, תיצרו את הכלי לזיהוי איומים, תבדקו את השירות על ידי הדמיית איומי DNS ולבסוף תנתחו את יומני האיומים באמצעות Logs Explorer.
מה תבנו
ב-codelab הזה תספקו את המשאבים הבאים:
- שתי רשתות VPC:
network-aו-network-b -
network-aיכלול רשתות משנה ומכונות וירטואליות באזוריםus-east4ו-us-central1. -
network-bיכלול רשת משנה ומכונה וירטואלית רק ב-us-east4. - גלאי איומים מתקדם של DNS Armor שהוגדר לבדיקת שאילתות DNS.

מה תלמדו
- איך להקצות את משאבי הרשת הנדרשים, כולל רשתות VPC ומכונות וירטואליות.
- איך פורסים כלי מתקדם לזיהוי איומים ומחריגים רשתות ספציפיות.
- איך מאמתים את ההגדרה של זיהוי האיומים באמצעות סקריפט לסימולציית איומים.
- איך מנתחים יומני איומים ב-Logs Explorer.
הדרישות
- פרויקט ב-Google Cloud.
- גישה לכלי שורת הפקודה
gcloud.
2. דרישות מוקדמות
בקטע הזה תבצעו את המשימות הבאות:
- מוודאים שהפרויקט בענן ב-Google Cloud עומד באילוצים הנדרשים של מדיניות הארגון.
- מוודאים שלחשבון המשתמש יש את ההרשאות והתפקידים הנדרשים ב-IAM.
- מפעילים את ממשקי ה-API של Google Cloud שנדרשים ל-Codelab הזה.
- מקצים את התפקיד
roles/logging.viewerב-IAM לחשבון השירות של Compute Engine.
מגבלות שקשורות למדיניות הארגון
כדי להשלים את ה-Codelab הזה, צריך לאמת את האילוצים של מדיניות הארגון שחלים על הפרויקט. יכול להיות שכללי מדיניות מסוימים יפריעו להקצאת המשאבים הנדרשים. המגבלות הבאות עשויות להשפיע על ההגדרה של ה-codelab הזה:
-
constraints/gcp.resourceLocations: מגביל את האזורים שבהם אפשר ליצור משאבים. ב-codelab נדרשיםus-east4ו-us-central1. -
constraints/compute.vmExternalIpAccess: מונע יצירה של מכונות וירטואליות עם כתובות IP ציבוריות, שיכולות להפריע להגדרה אם לא משתמשים בדגל--no-addressכמו במעבדת התכנות . -
constraints/compute.shieldedVm: אוכף את היצירה של מכונות וירטואליות מוגנות, שלא מצוינות בפקודות ליצירת מכונות וירטואליות ב-codelab, ולכן עלולה להיגרם שגיאה. -
constraints/gcp.restrictServiceUsage: מגביל את האפשרות להפעיל ממשקי Google Cloud API, ויכול לחסום את ה-codelab אם הוא לא מאפשר אתcompute.googleapis.com,networksecurity.googleapis.com,logging.googleapis.comו-monitoring.googleapis.com.
תפקידים והרשאות של IAM
כדי להשלים את ה-Codelab הזה בהצלחה, צריך לוודא שיש למשתמש שלכם את התפקידים וההרשאות המתאימים ב-IAM. כדי להשלים את ה-Codelab הזה, נדרשים תפקידי ה-IAM וההרשאות הבאים.
- אדמין לשימוש בשירותים (
roles/serviceusage.serviceUsageAdmin): כדי להפעיל את ממשקי Google Cloud API הנדרשים ל-codelab. - Compute Network Admin (
roles/compute.networkAdmin): כדי ליצור ולנהל רשתות VPC, רשתות משנה ו-Cloud NAT. - אדמין לענייני אבטחה של Compute (
roles/compute.securityAdmin): כדי להגדיר את כללי חומת האש לגישת SSH למכונות הווירטואליות. - מנהל מכונות של Compute (גרסה 1) (
roles/compute.instanceAdmin.v1): כדי ליצור ולנהל את המכונות הווירטואליות שנדרשות למעבדה. - משתמש מנהרה באבטחת IAP (
roles/iap.tunnelResourceAccessor): כדי להתחבר למכונות הווירטואליות באמצעות SSH דרך שרת proxy לאימות זהויות (IAP). - אדמין לענייני אבטחה של רשת (
roles/networksecurity.admin): כדי ליצור ולנהל את גלאי האיומים DNS Armor. - Logs Viewer (
roles/logging.viewer): כדי לצפות ביומני האיומים ולנתח אותם ב-Logs Explorer.
Google Cloud APIs
חשוב לוודא שממשקי Google Cloud API הנדרשים מופעלים בפרויקט.
1. מפעילים את ממשקי ה-API הנדרשים ומריצים את הפקודות הבאות של gcloud ב-Cloud Shell.
gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com
2. כדי לוודא שממשקי ה-API מופעלים, מריצים את הפקודות הבאות של gcloud ב-Cloud Shell.
gcloud services list --enabled
חשבון שירות של Compute Engine
לסקריפט הבדיקה נדרשות הרשאות לקריאת יומני איומים מ-Cloud Logging. מכיוון שהסקריפט יופעל ממכונה וירטואלית שמשתמשת בחשבון השירות שמוגדר כברירת מחדל של Compute Engine, צריך להקצות את תפקיד IAM roles/logging.viewer לחשבון השירות הזה.
1. מגדירים את משתני הסביבה ומריצים את הפקודות הבאות ב-Cloud Shell.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
2. מקצים את התפקיד 'צפייה ביומנים' לחשבון השירות של Compute Engine. מריצים את הפקודות הבאות של gcloud ב-Cloud Shell
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"
3. הגדרה בסיסית של סביבה
בקטע הזה תבצעו את המשימות הבאות:
- יוצרים רשתות VPC (מספר
network-aו-network-b) עם רשתות משנה מותאמות אישית. - מגדירים Cloud Routers ו-Cloud NAT ליציאה מהאינטרנט ב-
network-aוב-network-b. - יוצרים כללים של חומת אש שמאפשרים גישת SSH למכונות וירטואליות מטווח כתובות ה-IP של IAP גם עבור
network-aוגם עבורnetwork-b. - הקצאת מכונות וירטואליות של Linux גם ב-
network-aוגם ב-network-bללא כתובות IP ציבוריות.
יצירת רשתות VPC ותת-רשתות
1. יוצרים את הרשת network-a ואת רשתות המשנה שלה באזורים us-east4 ו-us-central1. מריצים את הפקודות הבאות gcloud ב-Cloud Shell.
gcloud compute networks create network-a --subnet-mode=custom
gcloud compute networks subnets create subnet-a-use4 \
--network=network-a \
--range=10.10.0.0/24 \
--region=us-east4
gcloud compute networks subnets create subnet-a-usc1 \
--network=network-a \
--range=10.10.1.0/24 \
--region=us-central1
2. יוצרים את network-b ואת רשת המשנה שלה באזור us-east4. מריצים את הפקודות הבאות gcloud ב-Cloud Shell.
gcloud compute networks create network-b --subnet-mode=custom
gcloud compute networks subnets create subnet-b-use4 \
--network=network-b \
--range=10.20.0.0/24 \
--region=us-east4
הגדרת תעבורת נתונים יוצאת (egress) לאינטרנט
1. יוצרים Cloud Router ו-Cloud NAT עבור network-a כדי לאפשר יציאה של מכונות וירטואליות לאינטרנט ללא כתובות IP ציבוריות.
gcloud compute routers create router-a-use4 \
--network=network-a \
--region=us-east4
gcloud compute routers nats create nat-a-use4 \
--router=router-a-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
gcloud compute routers create router-a-usc1 \
--network=network-a \
--region=us-central1
gcloud compute routers nats create nat-a-usc1 \
--router=router-a-usc1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-central1
2. יוצרים Cloud Router ו-Cloud NAT עבור network-b כדי לאפשר יציאה של מכונות וירטואליות לאינטרנט ללא כתובות IP ציבוריות.
gcloud compute routers create router-b-use4 \
--network=network-b \
--region=us-east4
gcloud compute routers nats create nat-b-use4 \
--router=router-b-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
הגדרת כללים לחומת האש
1. יוצרים כללי חומת אש עבור network-a כדי לאפשר גישת SSH מטווח כתובות ה-IP של IAP. מריצים את הפקודות הבאות gcloud ב-Cloud Shell.
gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
2. יוצרים כללי חומת אש עבור network-b כדי לאפשר גישת SSH מטווח כתובות ה-IP של IAP. מריצים את הפקודות הבאות gcloud ב-Cloud Shell.
gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
יצירת מכונות וירטואליות
1. יצירת מכונות וירטואליות של Linux ב-network-a
gcloud compute instances create vm-a-use4 \
--zone=us-east4-c \
--network=network-a \
--subnet=subnet-a-use4 \
--no-address \
--scopes=cloud-platform
gcloud compute instances create vm-