مصورسازی گزارش‌های تشخیص تهدید پیشرفته DNS Armor با استفاده از معیارهای مبتنی بر گزارش و داشبورد سفارشی

۱. مقدمه و بررسی اجمالی

DNS Armor، ارائه شده توسط Infoblox ، یک سرویس کاملاً مدیریت‌شده است که امنیت لایه DNS را برای بارهای کاری Google Cloud شما فراهم می‌کند. آشکارساز تهدید پیشرفته آن به گونه‌ای طراحی شده است که فعالیت‌های مخرب را در ابتدایی‌ترین نقطه زنجیره حمله - پرس‌وجوی DNS - بدون افزودن پیچیدگی عملیاتی یا سربار عملکرد، شناسایی کند.

این codelab دستورالعمل‌های گام به گام برای پیکربندی و آزمایش سرویس DNS Armor ارائه می‌دهد. شما زیرساخت شبکه لازم را راه‌اندازی خواهید کرد، آشکارساز تهدید را ایجاد خواهید کرد، سرویس را با شبیه‌سازی تهدیدات DNS آزمایش خواهید کرد و در نهایت، گزارش‌های تهدید را با استفاده از یک داشبورد Cloud Monitoring سفارشی، تجسم و تجزیه و تحلیل خواهید کرد.

آنچه خواهید ساخت

در این آزمایشگاه کد، منابع زیر را تهیه خواهید کرد:

  • یک شبکه VPC ( network-a ) با زیرشبکه‌ها و ماشین‌های مجازی که در مناطق us-east4 و us-central1 تأمین شده‌اند.
  • یک آشکارساز تهدید پیشرفته DNS Armor که برای بررسی کوئری‌های DNS پیکربندی شده است.
  • معیارهای مبتنی بر گزارش (log) بر اساس گزارش‌های تهدید DNS.
  • یک داشبورد سفارشی برای نمایش گزارش‌های تهدید DNS.

cfe28f2c17ca2660.png

آنچه یاد خواهید گرفت

  • نحوه تأمین منابع شبکه لازم، از جمله VPCها و ماشین‌های مجازی.
  • نحوه استقرار یک آشکارساز تهدید پیشرفته و حذف شبکه‌های خاص.
  • نحوه اعتبارسنجی پیکربندی تشخیص تهدید با استفاده از اسکریپت شبیه‌سازی تهدید.
  • نحوه مصورسازی گزارش‌های تهدید DNS با استفاده از معیارهای مبتنی بر گزارش و داشبورد سفارشی.

آنچه نیاز دارید

  • یک پروژه ابری گوگل.
  • دسترسی به ابزار خط فرمان gcloud .

۲. پیش‌نیازها

در این بخش، وظایف زیر را انجام خواهید داد:

  • تأیید کنید که پروژه Google Cloud شما محدودیت‌های لازم برای سیاست سازمانی را برآورده می‌کند.
  • تأیید کنید که حساب کاربری شما نقش‌ها و مجوزهای لازم برای IAM را دارد.
  • APIهای ضروری Google Cloud برای این آزمایشگاه کد را فعال کنید.
  • نقش IAM با roles/logging.viewer را به حساب سرویس موتور محاسبات (Compute Engine Service Account) اختصاص دهید.

محدودیت‌های سیاست سازمانی

برای تکمیل موفقیت‌آمیز این آزمایشگاه کد، لطفاً محدودیت‌های سیاست سازمانی اعمال‌شده بر پروژه خود را بررسی کنید. برخی از سیاست‌ها ممکن است مانع تأمین منابع لازم شوند. محدودیت‌های زیر می‌توانند بر پیکربندی این آزمایشگاه کد تأثیر بگذارند:

  • constraints/gcp.resourceLocations : مناطقی را که می‌توانید منابع ایجاد کنید محدود می‌کند؛ codelab us-east4 و us-central1 نیاز دارد.
  • constraints/compute.vmExternalIpAccess : از ایجاد ماشین‌های مجازی با آدرس‌های IP عمومی جلوگیری می‌کند، که در صورت عدم رعایت دستورالعمل codelab در استفاده از پرچم --no-address می‌تواند در راه‌اندازی اختلال ایجاد کند.
  • constraints/compute.shieldedVm : ایجاد ماشین‌های مجازی محافظت‌شده (Shielded VMs) را اجباری می‌کند، که دستورات ایجاد ماشین مجازی codelab آن را مشخص نمی‌کنند و به طور بالقوه باعث ایجاد خطا می‌شوند.
  • constraints/gcp.restrictServiceUsage : محدودیت‌هایی که APIهای Google Cloud می‌توانند فعال شوند و اگر codelab به compute.googleapis.com ، networksecurity.googleapis.com ، logging.googleapis.com و monitoring.googleapis.com اجازه ندهد، می‌تواند آن را مسدود کند.

نقش‌ها و مجوزهای IAM

برای تکمیل موفقیت‌آمیز این آزمایشگاه کد، لطفاً نقش‌ها و مجوزهای IAM اعطا شده به کاربر خود را تأیید کنید. نقش‌ها و مجوزهای IAM زیر برای تکمیل این آزمایشگاه کد مورد نیاز است.

  • مدیر استفاده از سرویس ( roles/serviceusage.serviceUsageAdmin ): برای فعال کردن APIهای مورد نیاز Google Cloud برای codelab.
  • مدیر شبکه محاسباتی ( roles/compute.networkAdmin ): برای ایجاد و مدیریت شبکه‌های VPC، زیرشبکه‌ها و Cloud NAT.
  • مدیر امنیت محاسبات ( roles/compute.securityAdmin ): برای پیکربندی قوانین فایروال برای دسترسی SSH به ماشین‌های مجازی.
  • مدیر نمونه محاسبات (نسخه ۱) ( roles/compute.instanceAdmin.v1 ): برای ایجاد و مدیریت ماشین‌های مجازی مورد نیاز آزمایشگاه.
  • کاربر تونل امن‌شده با IAP ( roles/iap.tunnelResourceAccessor ): برای اتصال به ماشین‌های مجازی با استفاده از SSH از طریق پروکسی آگاه از هویت (IAP).
  • مدیر امنیت شبکه ( roles/networksecurity.admin ): برای ایجاد و مدیریت آشکارساز تهدید DNS Armor.
  • نمایشگر گزارش‌ها ( roles/logging.viewer ): برای مشاهده و تحلیل گزارش‌های تهدید در Logs Explorer.

رابط‌های برنامه‌نویسی کاربردی (API) گوگل کلود

لطفاً مطمئن شوید که APIهای مورد نیاز Google Cloud در پروژه شما فعال هستند.

۱. APIهای لازم را فعال کنید ، دستورات gcloud زیر را در Cloud Shell اجرا کنید.

gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com

۲. تأیید کنید که APIها فعال هستند ، دستورات gcloud زیر را در Cloud Shell اجرا کنید.

gcloud services list --enabled

حساب کاربری سرویس موتور محاسباتی

اسکریپت شبیه‌سازی تهدید برای خواندن و گزارش‌دهی گزارش‌های تهدید تولید شده از Cloud Logging به مجوزهایی نیاز دارد. از آنجایی که این اسکریپت از یک ماشین مجازی با استفاده از حساب سرویس پیش‌فرض Compute Engine اجرا می‌شود، نقش IAM با نام roles/logging.viewer باید به این حساب سرویس اختصاص داده شود.

۱. متغیرهای محیطی را تنظیم کنید ، دستورات زیر را در Cloud Shell اجرا کنید.

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

۲. نقش مشاهده‌گر گزارش‌گیری را به Compute Engine SA اعطا کنید . دستورات gcloud زیر را در Cloud Shell اجرا کنید.

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"

۳. تأمین منابع شبکه و محاسباتی

در این بخش، وظایف زیر را انجام خواهید داد:

  • ایجاد network-a با زیرشبکه‌های سفارشی.
  • پیکربندی روترهای ابری و Cloud NAT برای خروجی اینترنت در network-a .
  • قوانین فایروال را ایجاد کنید تا دسترسی SSH به ماشین‌های مجازی از محدوده IP مربوط به IAP برای network-a فراهم شود.
  • ارائه ماشین‌های مجازی لینوکس در network-a بدون آدرس‌های IP عمومی.

ایجاد VPCها و زیرشبکه‌ها

۱. 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

پیکربندی خروجی اینترنت

۱. برای network-a روتر ابری و NAT ابری ایجاد کنید تا امکان خروج اینترنت برای ماشین‌های مجازی بدون 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

پیکربندی قوانین فایروال

۱. برای دسترسی SSH از محدوده IP مربوط به IAP، قوانین فایروال برای network-a ایجاد کنید. دستورات 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

ایجاد ماشین‌های مجازی

۱. ماشین‌های مجازی لینوکس را در 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

۴. ایجاد آشکارساز تهدید DNS

در این بخش، وظایف زیر را انجام خواهید داد:

  • آشکارساز تهدید را ایجاد کنید.
  • آشکارساز تهدید را فهرست کنید.

با آماده‌سازی VPCها، زیرشبکه‌ها و ماشین‌های مجازی، مرحله بعدی ایجاد آشکارساز تهدید DNS است.

۱. با استفاده از دستور create در gcloud beta network-security dns-threat-detectors create یک تشخیص‌دهنده تهدید ایجاد کنید .

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

۲. برای تأیید ایجاد، آشکارساز تهدید را فهرست کنید .

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

۵. معیارهای مبتنی بر لاگ را ایجاد کنید

در این بخش، وظایف زیر را انجام خواهید داد:

  • درک ورودی لاگ.
  • فایل config.yaml را ایجاد کنید.
  • معیار مبتنی بر لگاریتم را ایجاد کنید.

۱. آشنایی با ورودی لاگ. می‌توانید جدولی از تمام فیلدهای موجود در لاگ‌های DNS Armor را در مستندات لاگ‌های تهدید بررسی کنید. این بخش بر فیلدهای خاصی که برای ایجاد معیارهای مبتنی بر لاگ استفاده می‌شوند، تمرکز دارد.

فیلدهای زیر برای ایجاد معیارهای مبتنی بر لاگ استفاده خواهند شد:

  • vmInstanceId: نام نمونه ماشین مجازی Compute Engine، که فقط برای پرس‌وجوهای آغاز شده توسط ماشین‌های مجازی Compute Engine قابل استفاده است.
  • queryName: نام پرس‌وجوی DNS.
  • شدت: شدت (زیاد، متوسط، کم یا اطلاعات) مرتبط با تهدید شناسایی شده. برای اطلاعات بیشتر، به تعریف سطح شدت Infoblox مراجعه کنید.
  • مکان: منطقه‌ی ابری گوگل که پاسخ از آنجا ارائه شده است.
  • تهدید: نام تهدید شناسایی شده.
  • threatId: شناسه منحصر به فرد تهدید.

۲. فایل config.yaml را ایجاد کنید. ابتدا، با استفاده از دستور touch یک فایل config.yaml خالی ایجاد کنید.

touch config.yaml

۳. فایل 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

۴. شماره پروژه را به‌روزرسانی کنید . از دستور sed زیر برای جایگزینی متغیر محیطی خود به جای PROJECT_NUMBER استفاده کنید.

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

۵. معیار مبتنی بر لاگ را ایجاد کنید. در نهایت، دستور gcloud زیر را در Cloud Shell اجرا کنید تا معیار ایجاد شود.

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

۶. داشبورد سفارشی ایجاد کنید

در این بخش، وظایف زیر را انجام خواهید داد:

  • فایل dashboard.json را ایجاد کنید.
  • داشبورد سفارشی ایجاد کنید

۱. فایل dashboard.json را ایجاد کنید. ابتدا، با استفاده از دستور touch یک فایل dashboard.json خالی ایجاد کنید.

touch dashboard.json

۲. فایل 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"
            }
          }
        }
      }
    ]
  }
}

۲. داشبورد سفارشی ایجاد کنید . دستورات gcloud زیر را در Cloud Shell اجرا کنید.

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

۷. تولید کوئری‌های DNS مخرب شبیه‌سازی‌شده

در این بخش، وظایف زیر را انجام خواهید داد:

  • از طریق SSH به ماشین‌های مجازی متصل شوید.
  • گیت را روی ماشین‌های مجازی نصب کنید.
  • مخزن شبیه‌ساز تشخیص تهدید Infoblox را کلون کنید.
  • اسکریپت را اجرا کنید و خروجی تولید شده را تجزیه و تحلیل کنید.

با تولید کوئری‌های DNS مخرب شبیه‌سازی‌شده از ماشین‌های مجازی خود، تنظیمات را اعتبارسنجی کنید.

۱. به vm-a-use4 از طریق SSH متصل شوید . دستورات gcloud زیر را در Cloud Shell اجرا کنید.

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

۲. گیت را روی ماشین مجازی نصب کنید .

sudo apt-get install git -y

۳. مخزن شبیه‌ساز تشخیص تهدید Infoblox را کلون کنید .

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

۴. دایرکتوری را به دایرکتوری شبیه‌ساز تغییر دهید .

cd ib-threat-detection-simulator/threat_detection_simulator/

۵. اسکریپت را اجرا کنید و خروجی تولید شده را تجزیه و تحلیل کنید.

اسکریپت را قابل اجرا کنید.

chmod +x run.sh

اسکریپت را اجرا کنید.

./run.sh info basic

۶. نمونه خروجی

تصویر زیر بخشی از خروجی اسکریپت را همانطور که در یک ماشین مجازی درون network-a دیده می‌شود، نشان می‌دهد. این خروجی، نرخ تشخیص انواع مختلف تهدید DNS را که اسکریپت آزمایشی شبیه‌سازی کرده است، با جزئیات نشان می‌دهد.

2ed3402eed85ff0a.png

۷. با خروج از جلسه SSH به Cloud Shell برگردید .

exit

۸. مشاهده داشبورد سفارشی

مشاهده داشبورد

۱. عبارت Dashboards را در فیلد جستجو در بالای کنسول Google Cloud تایپ کنید ، سپس در زیر نتایج برتر روی Dashboards کلیک کنید.

b28134f84c44d872.png

۲. در قسمت جستجو DNS Armor - Custom Dashboard را جستجو کنید و سپس روی DNS Armor - Custom Dashboard کلیک کنید تا داشبورد باز شود.

490ec7642ef95ffc.png

۳. داشبورد را مشاهده کنید .

4ff503f457f67399.png

ابزارک‌ها در داشبورد

این بخش، ویجت‌های مختلف موجود در داشبورد سفارشی را شرح می‌دهد و مروری بر عملکردها و داده‌هایی که ارائه می‌دهند، ارائه می‌دهد.

  • گزارش‌های تهدید: یک نمودار میله‌ای انباشته که گزارش‌های تهدید ایجاد شده برای همه شبکه‌های موجود در یک پروژه را در یک بازه زمانی مشخص نشان می‌دهد.
  • گزارش‌های تهدید به ازای هر منطقه: یک نمودار میله‌ای انباشته که گزارش‌های تهدید را، گروه‌بندی‌شده بر اساس منطقه، در یک بازه زمانی مشخص نشان می‌دهد.
  • گروه‌بندی بر اساس تهدید: یک نمودار دایره‌ای که گزارش‌های تهدید را بر اساس نوع تهدید در یک بازه زمانی مشخص دسته‌بندی می‌کند.
  • فهرست برتر - شناسه تهدید : فهرستی که 30 شناسه تهدید برتر را در یک بازه زمانی مشخص نشان می‌دهد.
  • گروه‌بندی بر اساس شدت: یک نمودار دایره‌ای که گزارش‌های تهدید را بر اساس سطح شدت در یک بازه زمانی مشخص گروه‌بندی می‌کند.
  • فهرست برتر - منبع: فهرستی که ۳۰ شناسه نمونه (ماشین‌های مجازی منبع) برتر را در یک بازه زمانی مشخص ارائه می‌دهد.
  • گروه‌بندی بر اساس دامنه‌ها: یک نمودار میله‌ای انباشته که گزارش‌های تهدید را بر اساس نام دامنه‌های یافت شده در پرس‌وجوها گروه‌بندی می‌کند.

۹. پاکسازی

برای جلوگیری از هزینه‌های بعدی، منابع ایجاد شده در این آزمایشگاه کد را حذف کنید. هنگام اجرای دستورات پاکسازی، حتماً از پوسته ماشین مجازی خارج شوید و به پوسته ابری برگردید.

۱. داشبورد سفارشی را حذف کنید.

از آنجایی که شناسه داشبورد به صورت پویا پس از ایجاد تولید می‌شود، ابتدا باید نام منبع را با استفاده از نام نمایشی آن بازیابی کنید.

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

۲. معیار مبتنی بر لاگ را حذف کنید.

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

۳. ماشین‌های مجازی را حذف کنید.

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

۴. قوانین فایروال را حذف کنید.

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

۵. دروازه‌های 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

۶. روترهای ابری را حذف کنید.

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

۷. زیرشبکه‌ها را حذف کنید.

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

۸. ابزار تشخیص تهدید DNS را حذف کنید.

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

۹. VPCها را حذف کنید.

gcloud compute networks delete network-a --quiet

۱۰. تبریک

تبریک! شما با موفقیت پیکربندی، استقرار و نمایش لاگ‌های تشخیص تهدید DNS Armor را انجام دادید. شما تجربه عملی در محافظت از محیط Google Cloud خود در برابر تهدیدات مبتنی بر DNS و ساخت یک راهکار نظارتی سفارشی برای بینش‌های امنیتی کسب کرده‌اید.

در این آزمایشگاه کد، شما موارد زیر را دارید:

  • یک محیط شبکه با VPC، زیرشبکه‌ها و ماشین‌های مجازی فراهم شد.
  • خروجی اینترنت پیکربندی شده برای ماشین‌های مجازی خصوصی با استفاده از Cloud NAT.
  • یک آشکارساز تهدید DNS Armor مستقر کرد.
  • تهدیدات DNS شبیه‌سازی شده و پیکربندی تشخیص تهدید اعتبارسنجی شد.
  • یک معیار سفارشی مبتنی بر گزارش از گزارش‌های تهدید DNS ایجاد شد.
  • یک داشبورد مانیتورینگ ابری سفارشی برای تجسم و تحلیل تهدیدات DNS ساخته شده است.

بعدش چی؟

اسناد مرجع