你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Microsoft Defender for Endpoint 运行时保护服务简介

Microsoft Defender for Endpoint (MDE) 运行时保护服务提供了为 Nexus 群集配置和管理运行时保护的工具。

使用 Azure CLI,可以配置运行时保护“强制级别”,以及在所有节点上触发“MDE 扫描”的功能。 本文档提供了执行这些任务的步骤。

注意

MDE 运行时保护服务集成了 Microsoft Defender for Endpoint,它可提供全面的终结点检测和响应 (EDR) 功能。 通过 Microsoft Defender for Endpoint 集成,可以发现异常并检测漏洞。

开始之前

设置变量

为了帮助配置和触发 MDE 扫描,请定义本指南中各种命令使用的这些环境变量。

注意

这些环境变量值不反映实际部署,因此用户必须更改它们以匹配其环境。

# SUBSCRIPTION_ID: Subscription of your cluster
export SUBSCRIPTION_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# RESOURCE_GROUP: Resource group of your cluster
export RESOURCE_GROUP="contoso-cluster-rg"
# MANAGED_RESOURCE_GROUP: Managed resource group managed by your cluster
export MANAGED_RESOURCE_GROUP="contoso-cluster-managed-rg"
# CLUSTER_NAME: Name of your cluster
export CLUSTER_NAME="contoso-cluster"

MDE 运行时保护的默认值

部署群集时,运行时保护会设置为以下默认值

  • 强制级别:如果在创建群集时未指定,则为 Disabled
  • MDE 服务:Disabled

注意

参数 --runtime-protection enforcement-level="<enforcement level>" 具有两个用途:启用/禁用 MDE 服务和更新强制级别。

如果要在群集中禁用 MDE 服务,请使用 Disabled<enforcement level>

配置强制级别

通过 az networkcloud cluster update 命令,可以使用参数 --runtime-protection enforcement-level="<enforcement level>" 更新群集运行时保护强制级别的设置

以下命令可配置群集的 enforcement level

az networkcloud cluster update \
--subscription ${SUBSCRIPTION_ID} \
--resource-group ${RESOURCE_GROUP} \
--cluster-name ${CLUSTER_NAME} \
--runtime-protection enforcement-level="<enforcement level>"

<enforcement level> 允许的值:DisabledRealTimeOnDemandPassive

  • Disabled:实时保护已关闭,并且不执行扫描。
  • RealTime:启用实时保护(修改文件时扫描文件)。
  • OnDemand:仅按需扫描文件。 在此中:
    • 实时保护已关闭。
  • Passive:在被动模式下运行防病毒引擎。 在此中:
    • 实时保护已关闭:Microsoft Defender 防病毒不会修正威胁。
    • 已启用按需扫描:仍使用终结点上的扫描功能。
    • 自动威胁修正已关闭:不会移动任何文件,并且安全管理员应采取所需的操作。
    • 安全智能更新已启用:安全管理员租户上将提供警报。

可以通过检查以下 json 代码片段的输出来确认是否已更新强制级别:

  "runtimeProtectionConfiguration": {
    "enforcementLevel": "<enforcement level>"
  }

在所有节点上触发 MDE 扫描

要在群集的所有节点上触发 MDE 扫描,请使用以下命令:

az networkcloud cluster scan-runtime \
--subscription ${SUBSCRIPTION_ID} \
--resource-group ${RESOURCE_GROUP} \
--cluster-name ${CLUSTER_NAME} \
--scan-activity Scan

注意:MDE 扫描操作要求启用 MDE 服务。 如果未启用它,命令将失败。 在本例中,将 Enforcement Level 值设置为与 Disabled 不同的值,以启用 MDE 服务。

从每个节点检索 MDE 扫描信息

本部分提供检索 MDE 扫描信息的步骤。 首先,需要检索群集的节点名称列表。 以下命令可将节点名称列表分配给环境变量。

nodes=$(az networkcloud baremetalmachine list \
--subscription ${SUBSCRIPTION_ID} \
--resource-group ${MANAGED_RESOURCE_GROUP} \
| jq -r '.[].machineName')

使用节点名称列表,可以启动为群集的每个节点提取 MDE 代理信息的过程。 以下命令将会准备来自每个节点的 MDE 代理信息。

for node in $nodes
do
    echo "Extracting MDE agent information for node ${node}"
    az networkcloud baremetalmachine run-data-extract \
    --subscription ${SUBSCRIPTION_ID} \
    --resource-group ${MANAGED_RESOURCE_GROUP} \
    --name ${node} \
    --commands '[{"command":"mde-agent-information"}]' \
    --limit-time-seconds 600
done

命令结果将包含一个 URL,可以在其中下载 MDE 扫描的详细报告。 有关 MDE 代理信息的结果,请参阅以下示例。

Extracting MDE agent information for node rack1control01
====Action Command Output====
Executing mde-agent-information command
MDE agent is running, proceeding with data extract
Getting MDE agent information for rack1control01
Writing to /hostfs/tmp/runcommand

================================
Script execution result can be found in storage account: 
 <url to download mde scan results>
 ...

提取 MDE 扫描结果

提取 MDE 扫描需要几个手动步骤:下载 MDE 扫描报告,提取扫描运行信息,以及扫描详细结果报告。 本部分将指导你完成上述每个步骤。

下载扫描报告

如前所述,MDE 代理信息响应可提供存储详细报告数据的 URL。

从返回的 URL <url to download mde scan results> 下载报告,然后打开文件 mde-agent-information.json

mde-agent-information.json 文件包含了大量有关扫描的信息,分析如此长的详细报告可能会非常困难。 本指南提供了提取一些基本信息的几个示例,可帮助你确定是否需要全面分析报告。

提取 MDE 扫描列表

mde-agent-information.json 文件包含详细的扫描报告,但你可能希望首先关注一些详细信息。 本部分详细介绍了提取扫描运行列表的步骤,从而提供了每个扫描开始和结束时间、发现的威胁、状态(成功或失败)等信息。

以下命令可提取此简化的报告。

cat <path to>/mde-agent-information.json| jq .scanList

以下示例显示了从 mde-agent-information.json 中提取的扫描报告。

[
  {
    "endTime": "1697204632487",
    "filesScanned": "1750",
    "startTime": "1697204573732",
    "state": "succeeded",
    "threats": [],
    "type": "quick"
  },
  {
    "endTime": "1697217162904",
    "filesScanned": "1750",
    "startTime": "1697217113457",
    "state": "succeeded",
    "threats": [],
    "type": "quick"
  }
]

可以使用 Unix date 命令将时间转换为更易于读取的格式。 为方便起见,请参阅将 Unix 时间戳(以毫秒为单位)转换为 year-month-day 和 hour:min:sec 格式的示例。

例如:

date -d @$(echo "1697204573732/1000" | bc) "+%Y-%m-%dT%H:%M:%S"

2023-10-13T13:42:53

提取 MDE 扫描结果

本部分详细介绍了提取有关 MDE 扫描期间所识别威胁列表的报告步骤。 要从 mde-agent-information.json 文件中提取扫描结果报告,请执行以下命令。

cat <path to>/mde-agent-information.json| jq .threatInformation

以下示例显示了从 mde-agent-information.json 文件中提取的由扫描所标识的威胁报告。

{
  "list": {
    "threats": {
      "scans": [
        {
          "type": "quick",
          "start_time": 1697204573732,
          "end_time": 1697204632487,
          "files_scanned": 1750,
          "threats": [],
          "state": "succeeded"
        },
        {
          "type": "quick",
          "start_time": 1697217113457,
          "end_time": 1697217162904,
          "files_scanned": 1750,
          "threats": [],
          "state": "succeeded"
        }
      ]
    }
  },
  "quarantineList": {
    "type": "quarantined",
    "threats": []
  }
}