为Linux上的Microsoft Defender for Endpoint配置脱机安全智能更新

本文逐步讲解如何为 Linux 上的Microsoft Defender for Endpoint设置脱机安全智能更新。 使用此方法,通过将更新下载到本地镜像服务器并在车队中分发更新,使 Linux 设备上具有有限或没有 Internet 连接的防病毒定义保持最新状态。 在开始之前,请查看 先决条件 以确保环境满足要求。

脱机安全智能更新的工作原理

本文介绍如何在 Linux 上的 Defender for Endpoint 中配置脱机安全智能更新。 此功能使你能够在互联网连接受限或无法连接互联网的 Linux 设备上更新安全智能(也称为定义签名)。 通过此配置,可以使用本地托管服务器(称为 镜像 服务器)连接到 Microsoft 云来下载安全智能更新。 其他Linux设备以预定义的时间间隔从镜像服务器拉取这些更新。

使用离线安全智能更新的好处

主要的优点包括:

  • 安全团队可以控制和管理本地服务器上的签名下载频率,以及终结点从本地服务器拉取签名的频率。
  • 你有额外的保护和控制层,因为下载的签名可以在测试设备上进行测试,然后再将其传播到整个队列。
  • 需要较少的网络带宽,因为只有一台本地服务器代表整个机群从Microsoft云获取最新更新。
  • 镜像服务器可以运行 Windows、Mac 或 Linux,无需在该服务器上安装 Defender for Endpoint。
  • 你将获得最新的防病毒保护,因为签名始终随最新的兼容防病毒引擎一起下载。
  • 旧版本的签名 (n-1) 会在每次迭代时被移至镜像服务器上的备份文件夹。 如果最新更新有问题,你可以从备份文件夹中将 n-1 签名版本拉取到你的设备上。
  • 在极少数情况下,脱机更新失败时,可以配置回退选项,从Microsoft云获取联机更新。

过程概述

概括而言,脱机更新过程的工作原理如下:

  • 你设置了一个镜像服务器,它是可由Microsoft云访问的本地 Web 或 NFS 服务器。
  • 在这台镜像服务器上,通过本地服务器上的 cron 任务或任务计划程序执行脚本,从 Microsoft 云下载签名。
  • 运行 Defender for Endpoint 的 Linux 终结点按照预定义的时间间隔从镜像服务器拉取签名。
  • 从本地服务器拉取到Linux设备的签名先进行验证,然后再将其加载到防病毒引擎中。
  • 若要开始并配置更新过程,可以在Linux设备上更新托管配置 json 文件。
  • 可以在 mdatp CLI 中查看更新的状态。

用于下载安全智能更新的镜像服务器上的流程图

图 1:镜像服务器上用于下载安全智能更新的进程流程图

Linux 终结点上安全智能更新的流程图

图 2:Linux 终结点上的安全智能更新流程图

镜像服务器可以运行以下任何操作系统:

  • Linux (任何口味)
  • Windows (任何版本)
  • Mac (任何版本)

先决条件

  • 必须在Linux终结点上安装 Defender for Endpoint 版本101.24022.0001或更高版本。

  • Linux终结点需要连接到 镜像 服务器。

  • Linux终结点必须运行任何 Defender for Endpoint 支持的分发版。 (请参阅受支持的 Linux 发行版。)

  • 镜像服务器可以是 HTTP/HTTPS 服务器,也可以是网络共享服务器,例如 NFS 服务器。

  • 镜像服务器需要有权访问以下 URL:

    • https://github.com/microsoft/mdatp-xplat.git
    • https://go.microsoft.com/fwlink/?linkid=2144709
  • 镜像服务器应支持 bash 或 PowerShell。

  • 镜像服务器需要以下最低系统规范:

    CPU 核心 RAM 可用磁盘空间 交换
    2 核 (首选 4 核) 最小 1 GB (首选 4 GB) 2 GB 依赖于系统

    注意

    此配置可能因所处理的请求数和每个服务器必须处理的负载而异。

配置镜像服务器

注意

  • 镜像服务器的管理和所有权完全由客户拥有,因为它驻留在客户的专用环境中。
  • 镜像服务器不需要安装 Defender for Endpoint。

获取脱机安全智能下载器脚本

Microsoft在 microsoft/mdatp-xplat GitHub 存储库上托管脱机安全智能下载程序脚本。

执行以下步骤获取下载器脚本:

选项 1:克隆存储库 (首选)

若要克隆存储库,请执行以下步骤:

  1. 在 镜像 服务器上安装 git

  2. 导航到要克隆存储库的目录。

  3. 运行以下命令:git clone https://github.com/microsoft/mdatp-xplat.git

选项 2:下载压缩的文件

若要使用 zip 包而不是克隆存储库,请执行以下步骤:

  1. 下载压缩文件

  2. 将下载的文件复制到要保留脚本的文件夹。

  3. 解压压缩文件夹。

  4. 安排一个任务或 cron 作业,以定期将代码仓库/已下载的 ZIP 文件更新到最新版本。

克隆存储库或下载压缩文件后的本地目录结构

使用以下示例目录列表验证本地副本是否包含预期的 linux/definition_downloader 结构和脚本:

user@vm:~/mdatp-xplat$ tree linux/definition_downloader/
linux/definition_downloader/
├── README.md
├── settings.json
├── settings.ps1
├── xplat_offline_updates_download.ps1
└── xplat_offline_updates_download.sh

0 directories, 5 files

注意

浏览 README.md 文件,详细了解如何使用脱机更新下载程序脚本。

文件 settings.json 包含一些变量,用户可以配置这些变量来确定脚本执行的输出。

字段名称 说明
downloadFolder 字符串 映射到脚本将文件下载到的位置。
downloadLinuxUpdates bool true设置为 时,脚本会将Linux特定更新下载到 downloadFolder
logFilePath 字符串 在给定文件夹中设置诊断日志。 如果存在任何问题,可以与Microsoft共享诊断日志文件进行调试。
downloadMacUpdates bool 该脚本会将特定于 Mac 的更新下载到 downloadFolder
downloadPreviewUpdates bool 下载可用于特定 OS 的更新的预览版本。
backupPreviousUpdates bool 允许脚本在 文件夹中复制以前的更新 _back ,并将新更新下载到 downloadFolder

执行脱机安全智能下载器脚本

若要手动执行下载器脚本,请根据上一部分中的说明在 settings.json 文件中配置参数,并根据镜像服务器的 OS 使用以下命令之一:

  • Bash:运行以下命令,将最新的脱机定义更新提取到配置的下载文件夹中:

    ./xplat_offline_updates_download.sh
    
  • PowerShell:如果镜像服务器运行Windows,请使用 PowerShell 下载程序脚本检索脱机定义包:

    ./xplat_offline_updates_download.ps1
    

注意

设置一个cron 作业来执行此脚本,以便定期在镜像服务器上下载最新的安全情报更新。

在 镜像 服务器上托管脱机安全智能更新

执行脚本后,最新的签名会被下载到 settings.json 文件(updates.zip)中配置的文件夹。

下载签名 zip 后,可以使用 镜像 服务器来托管它。 可以使用任何 HTTP/HTTPS/网络共享服务器或本地/远程装载点来托管镜像服务器。

一旦更新文件托管在镜像服务器上,请复制托管服务器的绝对路径(至 arch_* 目录处,但不包括该目录)。

注意

例如,如果使用 downloadFolder=/tmp/wdav-update 执行下载器脚本,并且 HTTP 服务器(www.example.server.com:8000)托管 /tmp/wdav-update 路径,则相应的 URI 为:www.example.server.com:8000/linux/production/(请确认该目录中存在 arch_* 目录)。

还可以使用目录的绝对路径 (本地/远程装载点) 。 例如,如果脚本将文件下载到 目录中 /tmp/wdav-update,则相应的 URI 为:/tmp/wdav-update/linux/production

设置镜像服务器后,需要按照offlineDefinitionUpdateUrl中所述,将此 URI 作为托管配置中的 下发到 Linux 端点。

配置终结点

可以通过两种方式配置脱机安全智能更新功能:

  • 通过 Defender/Intune 门户中的安全设置管理:允许集中管理和配置一组设备的设置。
  • 通过 托管 JSON 文件:允许手动或通过 Chef、Ansible 等第三方管理工具配置设置。

若要在 Defender 门户中配置脱机安全智能更新,请执行以下步骤:

  1. 在 Defender 门户中,导航到 “终结点>配置管理>终结点安全策略”,然后选择“ 创建新策略”。
  2. 在策略创建向导中,选择“Linux”作为平台,Microsoft Defender“防病毒”作为模板。 然后选择“ 创建策略”。
  3. 提供策略的名称和说明,然后选择“ 下一步”。

“配置设置” 步骤中,可以在 “防病毒引擎 ”和“ 云提供的保护首选项 ”部分下找到脱机安全智能更新功能的配置设置。

设置 说明
启用离线安全智能更新 此设置在Linux终结点上启用脱机安全智能更新功能。 启用此设置后,以下两个设置将变为可用。 确保还启用了 自动安全智能更新
离线安全智能更新回退至云端 如果设置为 True,则当终端无法从镜像服务器获取签名更新时,将尝试从 Microsoft 云获取。
脱机安全智能更新 URL 或目录 此设置指定托管安全智能更新的 镜像 服务器的 URL 或目录路径。 URL 应采用以下格式:如果使用 HTTP/HTTPS 服务器,则为 http://<mirror_server_address>/linux/production/;如果使用网络共享或本地/远程挂载点,则为目录路径。 有关详细信息,请参阅在镜像服务器上托管脱机安全智能更新
安全智能更新时间间隔 默认情况下,Linux终结点每 8 小时 (28800 秒) 从 镜像 服务器拉取签名更新。 如果要指定其他间隔,请使用此设置。 指定间隔(以秒为单位)。

验证配置

若要测试设置是否正确应用于Linux终结点,请运行以下命令:

mdatp health --details definitions

以下示例输出显示确认定义已成功更新且应用脱机更新配置的字段:

user@vm:~$ mdatp health --details definitions
automatic_definition_update_enabled         : true [managed]
definitions_updated                         : Mar 14, 2024 at 12:13:17 PM
definitions_updated_minutes_ago             : 2
definitions_version                         : "1.407.417.0"
definitions_status                          : "up_to_date"
definitions_update_source_uri               : "https://go.microsoft.com/fwlink/?linkid=2144709"
definitions_update_fail_reason              : ""
offline_definition_url_configured           : "http://172.XX.XXX.XX:8000/linux/production/" [managed]
offline_definition_update                   : "enabled" [managed]
offline_definition_update_verify_sig        : "enabled"
offline_definition_update_fallback_to_cloud : false[managed]

触发离线安全智能更新

可以自动或手动触发脱机安全智能更新。

自动更新

自动更新在以下情况下发生:

  • 如果将防病毒引擎的强制执行级别设置为real_time,并且在automaticDefinitionUpdateEnabled托管配置文件中将字段offline_definition_updatemdatp_managed.json设置为true,则脱机安全情报更新会按固定时间间隔自动触发。
  • 默认情况下,此定期间隔为 8 小时。 但是,可以通过在definitionUpdatesInterval文件中设置mdatp_managed.json参数来配置它。

手动更新

若要手动触发脱机安全智能更新以从 Linux 终结点上的镜像服务器下载签名,请运行以下命令以强制从配置的源立即进行定义更新:

mdatp definitions update

检查更新状态

触发更新后,使用以下检查确认成功:

  1. 通过运行以下命令 mdatp health --details --definitions验证更新是否成功。

  2. 验证以下字段。 以下示例输出显示了表明更新成功的定义健康状态字段:

user@vm:~$ mdatp health --details definitions
...
definitions_status                          : "up_to_date"
...
definitions_update_fail_reason              : ""
...

故障排除和诊断

如果更新失败、停滞或无法启动,请执行以下步骤进行故障排除:

  1. 检查离线安全智能更新的状态。 使用以下命令查看当前定义状态和更新源:

    mdatp health --details definitions
    

    definitions_update_fail_reason 部分中查找信息。

  2. 确保 offline_definition_updateoffline_definition_update_verify_sig 已启用。

  3. 请确保 definitions_update_source_uri 等于 offline_definition_url_configured

    • definitions_update_source_uri 是下载这些签名的来源。
    • offline_definition_url_configured 是应从中下载签名的来源,即托管配置文件中提到的那个来源。
  4. 运行连接测试,确认终结点可以访问镜像服务器和所需的Defender服务:

    mdatp connectivity test
    
  5. 如果连接成功,请使用以下命令手动重试定义更新:

    mdatp definitions update