使用 Puppet 在 Linux 上部署Microsoft Defender for Endpoint

适用于:

希望体验 Defender for Endpoint? 注册免费试用版

本文介绍如何使用 Puppet 在 Linux 上部署 Defender for Endpoint。 成功的部署需要完成以下所有任务:

重要

本文包含有关第三方工具的信息。 这是为了帮助完成集成方案而提供的,但是,Microsoft 不提供对第三方工具的故障排除支持。
请联系第三方供应商获取支持。

先决条件和系统要求

有关当前软件版本的先决条件和系统要求的说明,请参阅 Linux 上的 main Defender for Endpoint 页

此外,对于 Puppet 部署,需要熟悉 Puppet 管理任务、配置 Puppet 以及如何部署包。 Puppet 有很多方法可以完成相同的任务。 这些说明假定支持 Puppet 模块(例如 apt )的可用性,以帮助部署包。 你的组织可能使用不同的工作流。 有关详细信息,请参阅 Puppet 文档

下载载入包

从 Microsoft Defender 门户下载载入包。

警告

不支持重新打包 Defender for Endpoint 安装包。 这样做可能会对产品的完整性产生负面影响,并导致不良结果,包括但不限于触发篡改警报和无法应用的更新。

  1. 在Microsoft Defender门户中,转到“设置>终结点>”“设备管理>载入”。

  2. 在第一个下拉菜单中,选择“ Linux 服务器 ”作为操作系统。 在第二个下拉菜单中,选择“ 首选 Linux 配置管理工具 ”作为部署方法。

  3. 选择“下载载入包”。 将文件另存为 WindowsDefenderATPOnboardingPackage.zip。

    用于下载载入程序包的选项

  4. 在命令提示符下,验证是否具有 文件。

    ls -l
    
    total 8
    -rw-r--r-- 1 test  staff  4984 Feb 18 11:22 WindowsDefenderATPOnboardingPackage.zip
    
  5. 提取存档的内容。

    unzip WindowsDefenderATPOnboardingPackage.zip
    
    Archive:  WindowsDefenderATPOnboardingPackage.zip
    inflating: mdatp_onboard.json
    

创建 Puppet 清单

需要创建 Puppet 清单,以便将 Linux 上的 Defender for Endpoint 部署到 Puppet 服务器托管的设备。 此示例使用 puppetlabs 提供的 aptyumrepo 模块,并假定这些模块已安装在 Puppet 服务器上。

在 Puppet 安装的 modules 文件夹下创建文件夹 install_mdatp/filesinstall_mdatp/manifests 。 此文件夹通常位于 Puppet 服务器上的 /etc/puppetlabs/code/environments/production/modules 中。 将上面创建的mdatp_onboard.json文件复制到 install_mdatp/files 文件夹。 创建包含部署说明的 init.pp 文件:

pwd
/etc/puppetlabs/code/environments/production/modules
tree install_mdatp
install_mdatp
├── files
│   └── mdatp_onboard.json
└── manifests
    └── init.pp

install_mdatp/manifests/init.pp 的内容

Linux 上的 Defender for Endpoint 可以从以下通道之一进行部署, (下面表示为 [通道]) : 预览体验成员-快速预览体验成员-慢速prod。其中每个通道都对应于 Linux 软件存储库。

通道的选择决定了提供给设备的更新的类型和频率。 预览体验成员中的设备是第一个接收更新和新功能的设备,然后是预览体验成员慢,最后是 prod

为了预览新功能并提供早期反馈,建议将企业中的某些设备配置为使用 预览体验成员-快速预览体验成员-慢速。

警告

在初始安装后切换通道需要重新安装产品。 若要切换产品通道:卸载现有包,重新配置设备以使用新通道,然后按照本文档中的步骤从新位置安装包。

记下分发版和版本,并在 下 https://packages.microsoft.com/config/[distro]/标识其最接近的条目。

在以下命令中,将 [发行版][版本] 替换为已识别的信息:

注意

对于 RedHat、Oracle Linux、Amazon Linux 2 和 CentOS 8,请将 [发行版] 替换为“rhel”。

# Puppet manifest to install Microsoft Defender for Endpoint on Linux.
# @param channel The release channel based on your environment, insider-fast or prod.
# @param distro The Linux distribution in lowercase. In case of RedHat, Oracle Linux, Amazon Linux 2, and CentOS 8, the distro variable should be 'rhel'.
# @param version The Linux distribution release number, e.g. 7.4.

class install_mdatp (
  $channel = 'insiders-fast',
  $distro = undef,
  $version = undef
) {
  case $facts['os']['family'] {
    'Debian' : {
      $release = $channel ? {
        'prod'  => $facts['os']['distro']['codename'],
        default => $channel
      }
      apt::source { 'microsoftpackages' :
        location => "https://packages.microsoft.com/${distro}/${version}/prod",
        release  => $release,
        repos    => 'main',
        key      => {
          'id'     => 'BC528686B50D79E339D3721CEB3E94ADBE1229CF',
          'server' => 'keyserver.ubuntu.com',
        },
      }
    }
    'RedHat' : {
      yumrepo { 'microsoftpackages' :
        baseurl  => "https://packages.microsoft.com/${distro}/${version}/${channel}",
        descr    => "packages-microsoft-com-prod-${channel}",
        enabled  => 1,
        gpgcheck => 1,
        gpgkey   => 'https://packages.microsoft.com/keys/microsoft.asc',
      }
    }
    default : { fail("${facts['os']['family']} is currently not supported.") }
  }

  case $facts['os']['family'] {
    /(Debian|RedHat)/: {
      file { ['/etc/opt', '/etc/opt/microsoft', '/etc/opt/microsoft/mdatp']:
        ensure => directory,
        owner  => root,
        group  => root,
        mode   => '0755',
      }

      file { '/etc/opt/microsoft/mdatp/mdatp_onboard.json':
        source  => 'puppet:///modules/install_mdatp/mdatp_onboard.json',
        owner   => root,
        group   => root,
        mode    => '0600',
        require => File['/etc/opt/microsoft/mdatp'],
      }

      package { 'mdatp':
        ensure  => 'installed',
        require => File['/etc/opt/microsoft/mdatp/mdatp_onboard.json'],
      }
    }
    default : { fail("${facts['os']['family']} is currently not supported.") }
  }
}

部署

在 site.pp 文件中包括上述清单:

cat /etc/puppetlabs/code/environments/production/manifests/site.pp
node "default" {
    include install_mdatp
}

已注册的代理设备会定期轮询 Puppet 服务器,并在检测到新的配置文件和策略后立即安装它们。

监视 Puppet 部署

在代理设备上,还可以通过运行以下操作来检查载入状态:

mdatp health
...
licensed                                : true
org_id                                  : "[your organization identifier]"
...
  • 许可:这确认设备已绑定到你的组织。

  • orgId:这是 Defender for Endpoint 组织标识符。

检查载入状态

可以通过创建脚本来检查设备是否已正确载入。 例如,以下脚本检查已注册设备的载入状态:

mdatp health --field healthy

如果产品已加入并按预期运行,则上述命令会打印 1

重要

产品首次启动时,会下载最新的反恶意软件定义。 这可能需要几分钟时间,具体取决于 Internet 连接。 在此期间,上述命令返回值 0

如果产品不正常,则退出代码 (,可通过 echo $?) 检查,指示问题:

  • 如果设备尚未载入,则为 1。
  • 如果无法建立与守护程序的连接,则为 3。

日志安装问题

有关如何在发生错误时查找安装程序创建的自动生成的日志的详细信息,请参阅 日志安装问题

操作系统升级

将操作系统升级到新的主版本时,必须先卸载 Linux 上的 Defender for Endpoint,安装升级,最后在设备上重新配置 Linux 上的 Defender for Endpoint。

卸载

init.pp 文件中创建类似于 install_mdatp 的模块remove_mdatp

class remove_mdatp {
    package { 'mdatp':
        ensure => 'purged',
    }
}

提示

想要了解更多信息? Engage技术社区中的 Microsoft 安全社区:Microsoft Defender for Endpoint技术社区