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

1. מבוא וסקירה כללית

‫DNS Armor, מבית Infoblox, הוא שירות מנוהל מלא שמספק אבטחה ברמת ה-DNS לעומסי העבודה שלכם ב-Google Cloud. הכלי המתקדם לזיהוי איומים נועד לזהות פעילות זדונית בשלב המוקדם ביותר בשרשרת התקיפה – שאילתת ה-DNS – בלי להוסיף מורכבות תפעולית או תקורה של ביצועים.

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

מה תבנו

ב-codelab הזה תספקו את המשאבים הבאים:

  • רשת VPC אחת (network-a) עם תת-רשתות ומכונות וירטואליות שהוקצו באזורים us-east4 ו-us-central1.
  • גלאי איומים מתקדם של DNS Armor שהוגדר לבדיקת שאילתות DNS.
  • מדדים מבוססי-יומנים שמבוססים על יומני האיומים של DNS.
  • לוח בקרה בהתאמה אישית להצגה חזותית של יומני האיומים ב-DNS.

cfe28f2c17ca2660.png

מה תלמדו

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

הדרישות

  • פרויקט ב-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 עם רשתות משנה בהתאמה אישית.
  • מגדירים Cloud Routers ו-Cloud NAT לתעבורה יוצאת (egress) לאינטרנט ב-network-a.
  • יוצרים כללים של חומת אש שמאפשרים גישת SSH למכונות וירטואליות מטווח כתובות ה-IP של IAP‏ network-a.
  • הקצאת מכונות וירטואליות של Linux ב-network-a ללא כתובות 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

הגדרת תעבורת נתונים יוצאת (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

הגדרת כללים לחומת האש

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

יצירת מכונות וירטואליות

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-a-usc1 \
--zone=us-central1-a \
--network=network-a \
--subnet=subnet-a-usc1 \
--no-address \
--scopes=cloud-platform

4. יצירת הכלי לזיהוי איומים ב-DNS

בקטע הזה תבצעו את המשימות הבאות:

  • יוצרים את הכלי לזיהוי איומים.
  • מציגים את רשימת האיומים.

אחרי שהקציתם את ה-VPC, רשתות המשנה והמכונות הווירטואליות, השלב הבא הוא ליצור את הכלי לזיהוי איומי DNS.

1. יוצרים את הכלי לזיהוי איומים באמצעות הפקודה gcloud beta network-security dns-threat-detectors create.

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox

2. כדי לוודא שהכלי נוצר, מריצים את הפקודה הבאה:

gcloud beta network-security dns-threat-detectors list --location=global

5. יצירת מדדים מבוססי-יומנים

בקטע הזה תבצעו את המשימות הבאות:

  • הסבר על רשומת היומן.
  • יוצרים את קובץ ה-config.yaml.
  • יוצרים את המדד מבוסס-היומנים.

1. הסבר על רשומת היומן. במסמכי התיעוד של יומני האיומים אפשר לעיין בטבלה של כל השדות ביומנים של DNS Armor. בקטע הזה נתמקד בשדות הספציפיים שישמשו ליצירת מדדים מבוססי-יומן.

השדות הבאים ישמשו ליצירת מדדים מבוססי-יומן:

  • vmInstanceId: שם המכונה הווירטואלית של Compute Engine. רלוונטי רק לשאילתות שמופעלות על ידי מכונות וירטואליות של Compute Engine.
  • queryName: שם שאילתת ה-DNS.
  • severity: רמת החומרה (גבוהה, בינונית, נמוכה או מידע) שמשויכת לאיום שזוהה. מידע נוסף זמין במאמר הגדרת רמת החומרה של Infoblox.
  • location: אזור Google Cloud שממנו התקבלה התגובה.
  • threat: שם האיום שזוהה.
  • threatId: מזהה איום ייחודי.

2. יוצרים את הקובץ config.yaml. קודם יוצרים קובץ config.yaml ריק באמצעות הפקודה touch.

touch config.yaml

3. מאכלסים את הקובץ config.yaml. בקובץ הזה מוגדר איך ליצור מדד מבוסס-יומן עבור יומני איומים של DNS Armor. הוא מציין אילו רשומות ביומן לסנן, אילו תוויות לחלץ מהרשומות האלה ואת המאפיינים של המדד עצמו.

פותחים את הקובץ config.yaml בכלי לעריכת טקסט לבחירתכם ומדביקים בו את התוכן הבא.

filter: |
  resource.type="networksecurity.googleapis.com/DnsThreatDetector"
  jsonPayload.dnsQuery.projectNumber="PROJECT_NUMBER"
labelExtractors:
  InstanceId: EXTRACT(jsonPayload.dnsQuery.vmInstanceId)
  QueryName: EXTRACT(jsonPayload.dnsQuery.queryName)
  Severity: EXTRACT(jsonPayload.threatInfo.severity)
  region: EXTRACT(jsonPayload.dnsQuery.location)
  threat: EXTRACT(jsonPayload.threatInfo.threat)
  threatId: EXTRACT(jsonPayload.threatInfo.threatId)
metricDescriptor:
  labels:
  - key: InstanceId
  - key: threat
  - key: Severity
  - key: threatId
  - key: region
  - key: QueryName
  metricKind: DELTA
  unit: '1'
  valueType: INT64

4. מעדכנים את מספר הפרויקט. משתמשים בפקודת sed הבאה כדי להחליף את הערך הזמני לשמירת מקום PROJECT_NUMBER בערך ממשתנה הסביבה.

sed -i "s/PROJECT_NUMBER/$PROJECT_NUMBER/g" config.yaml

5. יוצרים את המדד שמבוסס על יומן. לבסוף, מריצים את פקודת gcloud הבאה ב-Cloud Shell כדי ליצור את המדד.

gcloud logging metrics create dns-armor-log-based-metric --config-from-file=config.yaml

6. יצירת מרכז בקרה בהתאמה אישית

בקטע הזה תבצעו את המשימות הבאות:

  • יוצרים את קובץ ה-dashboard.json.
  • יצירת מרכז בקרה בהתאמה אישית

1. יוצרים את הקובץ dashboard.json. קודם יוצרים קובץ dashboard.json ריק באמצעות הפקודה touch.

touch dashboard.json

2. מאכלסים את הקובץ dashboard.json. קובץ ה-dashboard.json מגדיר לוח בקרה מותאם אישית לניטור, מגדיר ווידג'טים, מאפייני תצוגה ואיך מדדים מבוססי-יומן מוצגים, מצטברים ומסוננים.

פותחים את הקובץ dashboard.json בכלי לעריכת טקסט לבחירתכם ומדביקים בו את התוכן הבא.

{
  "displayName": "DNS Armor - Custom Dashboard",
  "dashboardFilters": [],
  "description": "",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Threat Logs",
          "id": "",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR",
              "showLegend": false
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "",
                "measures": [],
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "outputFullDuration": false,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "xPos": 24,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Threat Logs per region",
          "id": "",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR",
              "showLegend": false
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "",
                "measures": [],
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "outputFullDuration": false,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"region\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "yPos": 20,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Group by Threat",
          "id": "",
          "pieChart": {
            "chartType": "DONUT",
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "measures": [],
                "minAlignmentPeriod": "60s",
                "sliceNameTemplate": "",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"threat\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "showLabels": false,
            "showTotal": false,
            "sliceAggregatedThreshold": 0
          }
        }
      },
      {
        "yPos": 20,
        "xPos": 24,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Top List - ThreatID",
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "threatId",
                "visible": true
              },
              {
                "column": "threat",
                "visible": true
              },
              {
                "column": "project_id",
                "visible": false
              },
              {
                "column": "value",
                "visible": true
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"threatId\"",
                        "metric.label.\"threat\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
                    "pickTimeSeriesFilter": {
                      "direction": "TOP",
                      "numTimeSeries": 30,
                      "rankingMethod": "METHOD_MEAN"
                    }
                  }
                }
              }
            ],
            "metricVisualization": "BAR"
          }
        }
      },
      {
        "yPos": 40,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Group by Severity",
          "id": "",
          "pieChart": {
            "chartType": "DONUT",
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "measures": [],
                "minAlignmentPeriod": "60s",
                "sliceNameTemplate": "",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"Severity\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "showLabels": false,
            "showTotal": false,
            "sliceAggregatedThreshold": 0
          }
        }
      },
      {
        "yPos": 40,
        "xPos": 24,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Top List - Source",
          "id": "",
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "InstanceId",
                "visible": true
              },
              {
                "column": "region",
                "visible": true
              },
              {
                "column": "project_id",
                "visible": true
              },
              {
                "column": "value",
                "visible": true
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "tableTemplate": "",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"InstanceId\"",
                        "metric.label.\"region\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
                    "pickTimeSeriesFilter": {
                      "direction": "TOP",
                      "numTimeSeries": 30,
                      "rankingMethod": "METHOD_MEAN"
                    }
                  },
                  "unitOverride": ""
                }
              }
            ],
            "displayColumnType": false,
            "metricVisualization": "BAR"
          }
        }
      },
      {
        "yPos": 60,
        "height": 20,
        "width": 48,
        "widget": {
          "title": "Group by Domains",
          "id": "",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR",
              "showLegend": false
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "",
                "measures": [],
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "outputFullDuration": false,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"QueryName\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}

2. יוצרים את מרכז הבקרה המותאם אישית. מריצים את הפקודות הבאות gcloud ב-Cloud Shell.

gcloud monitoring dashboards create --config-from-file=dashboard.json

7. יצירת שאילתות DNS זדוניות מדומה

בקטע הזה תבצעו את המשימות הבאות:

  • מתחברים למכונות הווירטואליות באמצעות SSH.
  • מתקינים את Git במכונות הווירטואליות.
  • משכפלים את מאגר הסימולטור של Infoblox לזיהוי איומים.
  • מריצים את הסקריפט ומנתחים את הפלט שנוצר.

כדי לאמת את ההגדרה, צריך ליצור שאילתות DNS זדוניות מדומה מהמכונות הווירטואליות.

1. SSH אל vm-a-use4. מריצים את הפקודות הבאות gcloud ב-Cloud Shell.

gcloud compute ssh vm-a-use4 --zone=us-east4-c

2. מתקינים את Git במכונה הווירטואלית.

sudo apt-get install git -y

3. משכפלים את מאגר הסימולטור של Infoblox לזיהוי איומים.

git clone https://github.com/infobloxopen/ib-threat-detection-simulator

4. משנים את הספרייה לספרייה של הסימולטור.

cd ib-threat-detection-simulator/threat_detection_simulator/

5. מריצים את הסקריפט ומנתחים את הפלט שנוצר.

הופכים את הסקריפט לניתן להרצה.

chmod +x run.sh

מריצים את הסקריפט.

./run.sh info basic

6. פלט לדוגמה

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

2ed3402eed85ff0a.png

7. כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.

exit

8. צפייה בלוח הבקרה המותאם אישית

הצגת לוח הבקרה

1. מקלידים Dashboards בשדה החיפוש בחלק העליון של מסוף Google Cloud, ואז לוחצים על Dashboards בקטע 'התוצאות המובילות'.

b28134f84c44d872.png

2. מחפשים את DNS Armor - Custom Dashboard בשדה החיפוש ולוחצים על DNS Armor - Custom Dashboard כדי לפתוח את מרכז הבקרה.

490ec7642ef95ffc.png

3. צפייה במרכז הבקרה.

4ff503f457f67399.png

ווידג'טים במרכז הבקרה

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

  • יומני איומים: תרשים עמודות אופקי מוערם שמציג את יומני האיומים שנוצרו עבור כל הרשתות שנכללות בפרויקט בפרק זמן מסוים.
  • יומני איומים לפי אזור: תרשים עמודות מוערם שמציג יומני איומים, מקובצים לפי אזור, לאורך מסגרת זמן מוגדרת.
  • קיבוץ לפי איום: תרשים עוגה שמסווג יומני איומים על סמך סוג האיום בפרק זמן נתון.
  • רשימה מובילה – ThreatID: רשימה שמציגה את 30 מזהי האיומים המובילים במסגרת זמן מוגדרת.
  • קיבוץ לפי רמת חומרה: תרשים עוגה שמקבץ יומני איומים לפי רמת חומרה בפרק זמן מוגדר.
  • רשימה עליונה – מקור: רשימה שמציגה את 30 מזהי המופעים המובילים (מכונות וירטואליות של מקור) במסגרת זמן מוגדרת.
  • קיבוץ לפי דומיינים: תרשים עמודות מוערמות שמקבץ את יומני האיומים לפי שמות הדומיינים שנמצאו בשאילתות.

9. הסרת המשאבים

כדי להימנע מחיובים עתידיים, מוחקים את המשאבים שנוצרו ב-codelab הזה. חשוב לצאת מהמעטפת של המכונה הווירטואלית ולחזור אל Cloud Shell כשמריצים את פקודות הניקוי.

1. מחיקת לוח הבקרה המותאם אישית.

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

DASHBOARD_NAME=$(gcloud monitoring dashboards list --filter="displayName='DNS Armor - Custom Dashboard'" --format='value(name)')
gcloud monitoring dashboards delete $DASHBOARD_NAME --quiet

2. מוחקים את המדד מבוסס-היומן.

gcloud logging metrics delete dns-armor-log-based-metric --quiet

3. מוחקים את המכונות הווירטואליות.

gcloud compute instances delete vm-a-use4 --zone=us-east4-c --quiet
gcloud compute instances delete vm-a-usc1 --zone=us-central1-a --quiet

4. מוחקים את הכללים של חומת האש.

gcloud compute firewall-rules delete allow-ssh-iap-a --quiet

5. מוחקים את שערי Cloud NAT.

gcloud compute routers nats delete nat-a-use4 --router=router-a-use4 --region=us-east4 --quiet
gcloud compute routers nats delete nat-a-usc1 --router=router-a-usc1 --region=us-central1 --quiet

6. מוחקים את Cloud Routers.

gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet

7. מוחקים את תת-הרשתות.

gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet

8. מחיקת הכלי לזיהוי איומים ב-DNS.

gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet

9. מוחקים את רשתות ה-VPC.

gcloud compute networks delete network-a --quiet

10. מזל טוב

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

ב-Codelab הזה יש:

  • הקצאת סביבת רשת עם VPC, רשתות משנה ומכונות וירטואליות.
  • הגדרת יציאה לאינטרנט למכונות וירטואליות פרטיות באמצעות Cloud NAT.
  • פריסת כלי לזיהוי איומים ב-DNS Armor.
  • הדמיה של איומי DNS ואימות של הגדרת זיהוי האיומים.
  • יצירת מדדים מבוססי-יומנים בהתאמה אישית מיומני איומים ב-DNS.
  • יצירת לוח בקרה מותאם אישית של Cloud Monitoring להצגה חזותית ולניתוח של איומי DNS.

מה השלב הבא?

מאמרי עזרה