使用基于日志的指标和自定义信息中心直观呈现 DNS Armor 的高级威胁检测日志

1. 简介和概览

DNS Armor 由 Infoblox 提供支持,是一项全托管式服务,可为您的 Google Cloud 工作负载提供 DNS 层安全性。其高级威胁检测器旨在在攻击链的最早阶段(即 DNS 查询)检测恶意活动,而不会增加运维复杂性或性能开销。

此 Codelab 提供了有关如何配置和测试 DNS Armor 服务 的分步说明。您将设置必要的网络基础架构、创建威胁检测器、通过模拟 DNS 威胁来测试服务,最后使用自定义 Cloud Monitoring 信息中心直观呈现和分析威胁日志。

您将构建的内容

在此 Codelab 中,您将预配以下资源:

  • 一个 VPC 网络 (network-a),其中在 us-east4us-central1 区域中预配了子网和虚拟机。
  • 一个配置为检查 DNS 查询的 DNS Armor 高级威胁检测器。
  • 基于 DNS 威胁日志的基于日志的指标。
  • 一个用于直观呈现 DNS 威胁日志的自定义信息中心。

cfe28f2c17ca2660.png

学习内容

  • 如何预配必要的网络资源,包括 VPC 和虚拟机。
  • 如何部署高级威胁检测器并排除特定网络。
  • 如何使用威胁模拟脚本验证威胁检测配置。
  • 如何使用基于日志的指标和自定义信息中心直观呈现 DNS 威胁日志。

所需条件

  • Google Cloud 项目
  • 访问 gcloud 命令行工具的权限。

2. 前提条件

在本部分中,您将执行以下任务:

  • 验证您的 Google Cloud 云项目是否满足必要的组织政策限制条件。
  • 确认您的用户账号是否具有所需的 IAM 角色和权限。
  • 启用此 Codelab 必需的 Google Cloud API。
  • roles/logging.viewer IAM 角色分配给 Compute Engine 服务账号。

组织政策限制条件

如需成功完成此 Codelab,请验证应用于项目的组织政策限制条件。某些政策可能会妨碍必要资源的预配。以下限制条件可能会影响此 Codelab 的配置:

  • constraints/gcp.resourceLocations:限制您可以在其中创建资源的区域;此 Codelab 需要 us-east4us-central1
  • constraints/compute.vmExternalIpAccess:阻止创建具有公共 IP 地址的虚拟机,如果您不遵循 Codelab 对 --no-address 标志的使用,这可能会干扰设置。
  • constraints/compute.shieldedVm:强制创建 Shielded VM,而 Codelab 的 VM 创建命令未指定,这可能会导致错误。
  • constraints/gcp.restrictServiceUsage:限制可以启用的 Google Cloud API,如果 Codelab 不允许 compute.googleapis.comnetworksecurity.googleapis.comlogging.googleapis.commonitoring.googleapis.com,则可能会阻止 Codelab。

IAM 角色和权限

如需成功完成此 Codelab,请验证授予用户的 IAM 角色和权限。您需要拥有以下 IAM 角色和权限才能完成此 Codelab。

  • Service Usage Admin (roles/serviceusage.serviceUsageAdmin):为 Codelab 启用所需的 Google Cloud API。
  • Compute Network Admin (roles/compute.networkAdmin):创建和管理 VPC 网络、子网和 Cloud NAT。
  • Compute Security Admin (roles/compute.securityAdmin):为通过 SSH 访问虚拟机配置防火墙规则。
  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1):创建和管理实验所需的虚拟机。
  • IAP-secured Tunnel User (roles/iap.tunnelResourceAccessor):使用 Identity-Aware Proxy (IAP) 通过 SSH 连接到虚拟机。
  • Network Security Admin (roles/networksecurity.admin):创建和管理 DNS Armor 威胁检测器。
  • Logs Viewer (roles/logging.viewer):在 Logs Explorer 中查看和分析威胁日志。

Google Cloud API

请确保您的项目中启用了所需的 Google Cloud API。

1. 启用必要的 API:在 Cloud Shell 中运行以下 gcloud 命令。

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

**2. 验证 API 是否已启用:在 Cloud Shell 中运行以下 gcloud 命令。

gcloud services list --enabled

Compute Engine 服务账号

威胁模拟脚本需要读取和报告 Cloud Logging 中生成的威胁日志的权限。由于该脚本将从使用默认 Compute Engine 服务账号的虚拟机执行,因此必须将 roles/logging.viewer IAM 角色分配给此服务账号。

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 SA。在 Cloud Shell 中运行以下 gcloud 命令

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-a 配置 Cloud Router 和 Cloud NAT,以实现互联网出站流量。
  • 创建防火墙规则,以允许通过 SSH 从 IAP 的 IP 范围访问 network-a 的虚拟机。
  • network-a 中预配没有公共 IP 地址的 Linux 虚拟机。

创建 VPC 和子网

1. 在 us-east4us-central1 区域中创建 network-a 及其子网 。在 Cloud Shell 中运行以下 gcloud 命令。

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

配置互联网出站流量

1. 为 network-a 创建 Cloud Router 和 Cloud 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

配置防火墙规则

1. 为 network-a 创建防火墙规则 ,以允许通过 SSH 从 IAP 的 IP 范围进行访问。在 Cloud Shell 中运行以下 gcloud 命令。

gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20

创建虚拟机

1. 在 network-a. 中创建 Linux 虚拟机

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 文件。首先,使用 touch 命令创建一个空的 config.yaml 文件。

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. 创建基于日志的指标。最后,在 Cloud Shell 中运行以下 gcloud 命令以创建指标。

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

6. 创建自定义信息中心

在本部分中,您将执行以下任务:

  • 创建 dashboard.json 文件。
  • 创建自定义信息中心

1. 创建 dashboard.json 文件。首先,使用 touch 命令创建一个空的 dashboard.json 文件。

touch dashboard.json

**2. 填充 dashboard.json 文件。dashboard.json 文件用于配置自定义监控信息中心,定义 widget、显示属性以及基于日志的指标的直观呈现、聚合和过滤方式。

在您选择的文本编辑器中打开 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. 创建 自定义信息中心。在 Cloud Shell 中运行以下 gcloud 命令。

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

7. 生成模拟的恶意 DNS 查询

在本部分中,您将执行以下任务:

  • 通过 SSH 连接到虚拟机。
  • 在虚拟机上安装 Git。
  • 克隆 Infoblox 威胁检测模拟器代码库。
  • 运行脚本并分析生成的输出。

通过从虚拟机生成模拟的恶意 DNS 查询来验证设置。

1. 通过 SSH 连接到 vm-a-use4 。在 Cloud Shell 中运行以下 gcloud 命令。

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. 退出 SSH 会话 ,返回到 Cloud Shell。

exit

8. 查看自定义信息中心

查看信息中心

1. 在 Google Cloud 控制台顶部的搜索字段中输入“信息中心” ,然后点击热门结果下的信息中心

b28134f84c44d872.png

**2. 在搜索字段中搜索 DNS Armor - Custom Dashboard,然后点击 `DNS Armor - Custom Dashboard` 以打开信息中心。DNS Armor - Custom Dashboard

490ec7642ef95ffc.png

3. 查看 信息中心。

4ff503f457f67399.png

信息中心内的 widget

本部分简要介绍了自定义信息中心上提供的各种 widget,概述了它们的功能以及它们所代表的数据。

  • 威胁日志 :一个堆叠条形图,用于显示在指定时段内为项目中的所有包含的网络生成的威胁日志。
  • 每个区域的威胁日志 :一个堆叠条形图,用于显示在指定时段内按区域分组的威胁日志。
  • 按威胁分组 :一个饼图,用于显示在指定时间范围内按威胁类型分类的威胁日志。
  • 热门列表 - ThreatID:一个列表,用于显示在指定时间范围内排名前 30 的威胁 ID。
  • 按严重程度分组依据 :一个饼图,用于显示在指定时段内按严重程度分组的威胁日志。
  • 热门列表 - 来源 :一个列表,用于显示在指定时间范围内排名前 30 的实例 ID(来源虚拟机)。
  • 按网域分组 :一个堆叠条形图,用于显示按查询中找到的网域名分组的威胁日志。

9. 清理

为避免日后产生费用,请删除在此 Codelab 中创建的资源。 运行清理命令时,请务必退出虚拟机的 shell 并返回到 Cloud Shell。

1. 删除自定义信息中心。

由于信息中心 ID 在创建时是动态生成的,因此您需要先使用其显示名称检索资源名称。

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 Router。

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 威胁。

后续操作

参考文档