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

适用于

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

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

重要

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

先决条件和系统要求

有关先决条件和系统要求的说明,请参阅 Linux 上的Microsoft 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. 提取存档的内容。

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

创建 Puppet 清单

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

  1. 如果 Puppet 安装,请在 modules 文件夹下创建 文件夹 install_mdatp/filesinstall_mdatp/manifestsmodules 文件夹通常位于 /etc/puppetlabs/code/environments/production/modules Puppet 服务器上。

  2. mdatp_onboard.json 之前创建的文件复制到 install_mdatp/files 文件夹。

  3. 创建包含 init.pp 部署说明的文件:

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

创建清单文件

有两种方法可以创建清单文件:

  • 使用安装程序脚本;或
  • 手动配置存储库。

创建清单以使用安装程序脚本部署 Defender for Endpoint

  1. 下载安装程序 bash 脚本。 从 GitHub 存储库Microsoft拉取 安装程序 bash 脚本 ,或使用以下命令下载它。
wget https://raw.githubusercontent.com/microsoft/mdatp-xplat/refs/heads/master/linux/installation/mde_installer.sh /etc/puppetlabs/code/environments/production/modules/install_mdatp/files/
  1. 将以下内容添加到 install_mdatp/manifests/init.pp 文件中。 还可以直接从 GitHub 下载文件

# Puppet manifest to install Microsoft Defender for Endpoint on Linux.
# @param channel The release channel based on your environment, insider-fast or prod.

class install_mdatp (
  $channel = 'prod',
) {
  # Ensure that the directory /tmp/mde_install exists
  file { '/tmp/mde_install':
    ensure => directory,
    mode   => '0755',
  }

  # Copy the installation script to the destination
  file { '/tmp/mde_install/mde_installer.sh':
    ensure => file,
    source => 'puppet:///modules/install_mdatp/mde_installer.sh',
    mode   => '0777',
  }

  # Copy the onboarding script to the destination
  file { '/tmp/mde_install/mdatp_onboard.json':
    ensure => file,
    source => 'puppet:///modules/install_mdatp/mdatp_onboard.json',
    mode   => '0777',
  }

  # Install MDE on the host using an external script
  exec { 'install_mde':
    command     => "/tmp/mde_install/mde_installer.sh --install --channel ${channel} --onboard /tmp/mde_install/mdatp_onboard.json",
    path        => '/bin:/usr/bin',
    user        => 'root',
    logoutput   => true,
    require     => File['/tmp/mde_install/mde_installer.sh', '/tmp/mde_install/mdatp_onboard.json'], # Ensure the script is copied before running the installer
  }

}

注意

安装程序脚本还支持其他参数,例如通道、实时保护、版本等。若要从可用选项列表中选择,检查帮助。 ./mde_installer.sh --help

通过手动配置存储库创建用于部署 Defender for Endpoint 的清单

将以下内容添加到 install_mdatp/manifests/init.pp 文件中。 也可以从 GitHub 下载它。

# Puppet manifest to install Microsoft Defender for Endpoint on Linux.
# @param channel The release channel based on your environment, insider-fast or prod.

class install_mdatp::configure_debian_repo (
  String $channel,
  String $distro,
  String $version ) {
  # Configure the APT repository for Debian-based systems

  $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',
    },
  }
}

class install_mdatp::configure_redhat_repo (
  String $channel,
  String $distro,
  String $version) {
  # Configure the Yum repository for RedHat-based systems
  
  yumrepo { 'microsoftpackages':
    baseurl  => "https://packages.microsoft.com/rhel/${version}/prod",
    descr    => 'packages-microsoft-com-prod',
    enabled  => 1,
    gpgcheck => 1,
    gpgkey   => 'https://packages.microsoft.com/keys/microsoft.asc',
  }
}

class install_mdatp::install {
  # Common configurations for both Debian and 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'],
  }

  # Install mdatp package
  package { 'mdatp':
    ensure  => installed,
    require => [
      File['/etc/opt/microsoft/mdatp/mdatp_onboard.json'],
    ],
  }
}


class install_mdatp (
  $channel = 'prod'
) {
  # Include the appropriate class based on the OS family
  
  $distro = downcase($facts['os']['name'])
  $version = $facts['os']['release']['major']
  
  case $facts['os']['family'] {
    'Debian': {
      class { 'install_mdatp::configure_debian_repo':
        channel => 'prod',
        distro => $distro,
        version => $version
        } -> class { 'install_mdatp::install': }
    }
    'RedHat': {
      class { 'install_mdatp::configure_redhat_repo':
        channel => 'prod',
        distro => $distro,
        version => $version,
        } -> class { 'install_mdatp::install': }
    }
    default: { fail("${facts['os']['family']} is currently not supported.")}
  }
}

注意

可以从以下渠道之一部署 Linux 上的 Defender for Endpoint: insiders-fast、insiders-slow、prod。每个通道对应于一个 Linux 软件存储库。 通道的选择决定了提供给设备的更新的类型和频率。 中的 insiders-fast 设备是第一个接收预览版更新和新功能的设备,其次是 insiders-slow,最后 prod是 。

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

警告

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

在 site.pp 文件中包含清单

在文件中包括本文 site.pp 前面所述的清单:

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

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

监视 Puppet 部署

在代理设备上,还可以通过运行以下命令检查部署状态:

mdatp health
...
healthy                                 : true
health_issues                           : []
licensed                                : true
org_id                                  : "[your organization identifier]"
...
  • healthy:确认 Defender for Endpoint 已成功部署并正常运行。
  • health_issues:说明导致正常状态变为 false 的问题。
  • licensed:确认设备已绑定到你的组织。
  • orgId:Defender for Endpoint 组织标识符。

解决安装问题

如果在安装过程中遇到问题,请尝试以下自我故障排除步骤:

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

  2. 有关常见 安装问题 的详细信息,请参阅安装问题

  3. 如果设备的运行状况为 false,请参阅MDE代理运行状况问题

  4. 有关产品性能问题,请参阅 排查性能问题性能优化

  5. 有关代理和连接问题,请参阅 排查云连接问题

若要从Microsoft获取支持,请使用客户端分析器提交支持票证并提供日志文件

如何在 Linux 上为Microsoft Defender配置策略

可以使用以下方法在终结点上配置防病毒和 EDR 设置:

操作系统升级

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

卸载

在 文件中创建类似于install_mdatp以下内容的init.pp模块remove_mdatp

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

提示

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