Настройка автономных обновлений аналитики угроз для Microsoft Defender для конечной точки на macOS

В этом документе описывается функция автономного обновления аналитики безопасности Microsoft Defender для конечной точки в macOS.

Эта функция позволяет организации использовать локальный сервер размещения (в этом документе он называется сервером зеркало) для обновления аналитики безопасности (которые в этом документе называются определениями или подписями) на конечных точках macOS, которые имеют ограниченный доступ к Интернету или не имеют доступа к ним.

Сервер зеркало — это любой сервер в среде клиента, который может подключиться к облаку Майкрософт для скачивания подписей. Другие конечные устройства macOS получают сигнатуры с зеркального сервера через заранее заданные интервалы.

Перед началом работы ознакомьтесь с предварительными условиями для зеркального сервера и конечных точек macOS.

Основные преимущества

  • Ваша группа безопасности может контролировать частоту загрузки подписей на локальный сервер и частоту извлечения подписей с локального сервера конечными точками.

  • У вас есть дополнительный уровень защиты и контроля, так как скачанные сигнатуры можно протестировать на тестовом устройстве, прежде чем они будут распространены на весь парк.

  • Требуется меньшая пропускная способность сети, так как только один локальный сервер опрашивает облако Майкрософт, чтобы получить последние подписи от имени всего парка.

  • Сервер зеркало может работать под управлением Windows, Mac или Linux, и вам не нужно устанавливать Defender для конечной точки на этом сервере.

  • Вы получаете самую актуальную антивирусную защиту, так как подписи всегда скачиваются вместе с последней совместимой антивирусной подсистемой.

  • Более старые версии подписей (n-1) перемещаются в папку резервного копирования на сервере зеркало в каждой итерации. Если с последними обновлениями возникнет проблема, вы можете скопировать версию сигнатуры n-1 из папки резервного копирования на ваши устройства.

  • В редких случаях, когда автономное обновление завершается сбоем, можно настроить резервный вариант для получения обновлений по сети из облака Майкрософт.

Как работает автономное обновление аналитики безопасности

Организациям необходимо настроить сервер зеркало, который является локальным веб-сервером или сервером NFS, доступным в облаке Майкрософт.

Подписи скачиваются из облака Майкрософт на этот сервер зеркало путем выполнения скрипта с помощью планировщика заданий или задач cron на локальном сервере.

Конечные точки macOS, на которых работает Defender for Endpoint, извлекают загруженные сигнатуры с этого зеркального сервера через заданные пользователем интервалы времени.

Подписи, получаемые конечными точками macOS с локального сервера, сначала проходят проверку, прежде чем загружаются в антивирусный модуль.

Чтобы активировать и настроить процесс обновления, обновите json-файл управляемой конфигурации на конечных точках macOS.

Состояние обновления автономной аналитики безопасности можно увидеть в интерфейсе командной строки mdatp.

Процесс загрузки обновлений аналитики безопасности на сервер зеркало показан на следующей схеме.

Схема процесса на зеркальном сервере для скачивания обновлений аналитики безопасности

Процесс обновления аналитики безопасности в конечной точке macOS показан на следующей схеме.

Схема процесса в конечной точке macOS для обновлений аналитики безопасности

Сервер зеркало может запускать любую из следующих операционных систем:

  • Linux (любой вкус)
  • Windows (любая версия)
  • Mac (любая версия)

Предварительные условия

  • На конечных точках macOS должен быть установлен Defender для конечной точки версии 101.25012.0003 или более поздней.

  • Конечные точки macOS должны иметь подключение к серверу зеркало.

  • На конечной точке macOS должна быть установлена одна из версий macOS, поддерживаемых Defender for Endpoint.

  • Сервер зеркало может быть сервером HTTP/HTTPS или сервером общей сети, например сервером NFS.

  • Сервер зеркало должен иметь доступ к следующим URL-адресам:

    • https://github.com/microsoft/mdatp-xplat.git
    • https://go.microsoft.com/fwlink/?linkid=2144709
  • Зеркальный сервер должен поддерживать bash или PowerShell.

  • Для сервера зеркало требуются следующие минимальные системные спецификации:

    Ядро ЦП ОЗУ Бесплатный диск Обмен
    2 ядра (предпочтительное 4 ядра) 1 ГБ min (предпочтительно 4 ГБ) 2 ГБ Зависимая от системы

    Примечание.

    Эта конфигурация может отличаться в зависимости от количества обслуживаемых запросов и загрузки, которую должен обработать каждый сервер.

Настройка сервера зеркало

Примечание.

Управление зеркальным сервером и право собственности на него полностью остаются за заказчиком, поскольку он находится в частной среде заказчика.

В качестве сервера зеркало можно использовать любой HTTP-сервер. На зеркальном сервере не нужно устанавливать Defender for Endpoint.

Хотя управление сервером зеркало и владение ими лежит исключительно на клиенте, в этом разделе представлены два примера скриптов Bash, демонстрирующих использование Python 3 и Caddy для настройки базового файлового сервера HTTP в macOS. Эти скрипты предоставляются только в целях иллюстрации и должны быть адаптированы к вашим конкретным потребностям и среде.

  • python_http_server.sh: использует встроенный модуль HTTP-сервера Python 3 для обслуживания файлов из указанного каталога.
  • caddy_http_server.sh: устанавливает и настраивает веб-сервер Caddy для обслуживания файлов из указанного каталога.

Чтобы проверить правильность настройки HTTP-файлового сервера, перейдите к разделу "https://localhost:8080".

Варианты использования в рабочей или расширенной среде см. в официальной документации по каждому серверу:

Всегда проверяйте и адаптируйте скрипты к своей среде и требованиям безопасности.

Пример скрипта. Настройка простого HTTP-файлового сервера в macOS с помощью Python 3

#!/bin/bash
# python_http_server.sh
# Starts a simple HTTP server using Python 3

# Check for Python 3
if ! command -v python3 &> /dev/null; then
  echo "Python 3 is not installed. Please install it first."
  exit 1
fi

PORT=8080
FOLDER="."

if [ ! -z "$1" ]; then
  PORT=$1
fi
if [ ! -z "$2" ]; then
  FOLDER=$2
fi

echo "Starting Python HTTP server on port $PORT (localhost only), serving folder: $FOLDER..."
python3 -m http.server "$PORT" --bind 127.0.0.1 --directory "$FOLDER"

Пример сценария. Настройка базового файлового сервера HTTP в macOS с помощью Caddy

#!/bin/bash
# caddy_http_server.sh
# Installs and configures Caddy HTTP server on macOS

PORT=8080
FOLDER="."

if [ ! -z "$1" ]; then
  PORT=$1
fi
if [ ! -z "$2" ]; then
  FOLDER=$2
fi

check_homebrew() {
  if ! command -v brew &> /dev/null; then
    echo "Homebrew is required to install Caddy."
    read -p "Would you like to install Homebrew? (y/n): " install_brew
    if [[ "$install_brew" =~ ^[Yy]$ ]]; then
      echo "Installing Homebrew..."
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      export PATH="/opt/homebrew/bin:$PATH"
    else
      echo "Please install Caddy manually and restart this script."
      exit 1
    fi
  fi
}

install_caddy() {
  if ! brew list caddy &> /dev/null; then
    echo "Installing Caddy via Homebrew..."
    brew install caddy
  else
    echo "Caddy is already installed."
  fi
}

# Check for Caddy
if ! command -v caddy &> /dev/null; then
  echo "Caddy is not installed."
  check_homebrew
  install_caddy
else
  echo "Caddy is already installed."
fi

# Create a simple Caddyfile
cat <<EOL > Caddyfile
localhost:${PORT} {
  root * ${FOLDER}
  file_server browse
}
EOL

echo "Caddyfile created. Starting Caddy server on port $PORT..."
caddy run --config ./Caddyfile

Получите скрипт для скачивания аналитики безопасности в автономном режиме

Корпорация Майкрософт размещает скрипт автономного загрузчика аналитики безопасности в следующем репозитории GitHub: https://github.com/microsoft/mdatp-xplat.

Чтобы получить скрипт загрузчика, выполните следующие действия:

Вариант 1. Клонирование репозитория (предпочтительный)

Установите Git на сервере зеркало.

Перейдите в каталог, в котором вы хотите клонировать репозиторий.

Выполните команду: git clone https://github.com/microsoft/mdatp-xplat.git

Вариант 2. Скачивание ZIP-файла

Скачайте ZIP-файл репозитория: https://github.com/microsoft/mdatp-xplat/archive/refs/heads/master.zip.

Скопируйте ZIP-файл в папку, в которой вы хотите сохранить скрипт.

Извлеките zip-папку.

Примечание.

Запланируйте задание cron или запущенное задание , чтобы регулярно обновлять репозиторий или скачанный ZIP-файл до последней версии.

После клонирования репозитория или скачивания zip-файла структура локальных каталогов должна выглядеть следующим образом:

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 строка Настраивает журналы диагностики в заданной папке. Этот файл можно предоставить корпорации Майкрософт для отладки скрипта при возникновении каких-либо проблем.
downloadMacUpdates логический Скрипт скачивает обновления, относящиеся к Mac, в downloadFolder.
downloadPreviewUpdates логический тип Скачивает предварительную версию обновлений, доступных для конкретной ОС.
backupPreviousUpdates bool Позволяет скрипту копировать предыдущее обновление в папку _back , а новые обновления скачиваются в downloadFolder.

Выполнение скрипта загрузчика аналитики безопасности в автономном режиме

Чтобы вручную выполнить скрипт загрузчика, настройте параметры в файле settings.json (напримерdownloadFolderdownloadMacUpdates, и backupPreviousUpdates) с помощью описаний полей в таблице полейsettings.json и выполните одну из следующих команд на основе ОС зеркального сервера:

Bash:

./xplat_offline_updates_download.sh

Powershell:

./xplat_offline_updates_download.ps1

Примечание.

Запланируйте задание cron или задание launchd для выполнения этого скрипта, чтобы через регулярные промежутки времени загружать на зеркальный сервер последние обновления аналитики угроз.

Разместите автономные обновления аналитики безопасности на сервере-зеркале

После выполнения скрипта последние подписи загружаются в папку, настроенную в файле 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/mac/production/.

Мы также можем использовать абсолютный путь к каталогу (локальная или удаленная точка подключения), например /tmp/wdav-update/mac/production.

После настройки зеркального сервера распространите этот URL-адрес на конечные точки Mac, задав его в качестве offlineDefinitionUpdateUrl значения в управляемом файле конфигурации (mdatp_managed.json), как описано в разделе "Настройка конечных точек".

Настройка конечных точек

Это важно

Defender для конечных точек должен быть уже установлен на устройстве с macOS, а для записи в /etc/opt/microsoft/mdatp/managed/ вам потребуются права root или sudo.

Используйте следующий пример файла mdatp_managed.json и обновите параметры в соответствии с конфигурацией, а затем скопируйте файл в расположение /etc/opt/microsoft/mdatp/managed/mdatp_managed.json.

{
  "cloudService": {
    "automaticDefinitionUpdateEnabled": true,
    "definitionUpdatesInterval": 1202
  },
  "antivirusEngine": {
    "offlineDefinitionUpdateUrl": "http://172.22.199.67:8000/mac/production/",
    "offlineDefintionUpdateFallbackToCloud":false,
    "offlineDefinitionUpdate": "enabled"
  },
  "features": {
    "offlineDefinitionUpdateVerifySig": "enabled"
  }
}
Имя поля Значения Comments
automaticDefinitionUpdateEnabled true/false Определяет, включена или отключена соответственно возможность Defender for Endpoint автоматически выполнять обновления.
definitionUpdatesInterval Числовой Время интервала между каждым автоматическим обновлением подписей (в секундах).
offlineDefinitionUpdateUrl строка Значение URL-адреса, созданное в процессе настройки зеркального сервера. Это может быть URL-адрес удаленного сервера или каталог (локальная или удаленная точка подключения).
offlineDefinitionUpdate enabled/disabled Если задано значение enabled, функция "автономное обновление аналитики безопасности" включена, и наоборот.
offlineDefinitionUpdateFallbackToCloud true/false Определите подход к получению обновлений аналитики безопасности Microsoft Defender для конечных точек, если автономный зеркальный сервер не может обработать запрос на обновление. Если задано значение true, обновление повторно выполняется через облако Майкрософт при сбое автономного обновления аналитики безопасности; в противном случае — наоборот.
offlineDefinitionUpdateVerifySig enabled/disabled Если задано значение enabled, скачанные определения проверяются на конечных точках; в противном случае — наоборот.

Проверка конфигурации

Чтобы проверить правильность применения параметров к конечным точкам macOS, выполните следующую команду:

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/mac/production/" [managed]
offline_definition_update                   : "enabled" [managed]
offline_definition_update_verify_sig        : "enabled"
offline_definition_update_fallback_to_cloud : false[managed]

Активация обновлений аналитики безопасности в автономном режиме

  • Автоматическое обновление

    Если полям automaticDefinitionUpdateEnabled и offline_definition_update в управляемом json задано значение true, то "автономные обновления аналитики безопасности" активируются автоматически через периодические интервалы.

    По умолчанию этот периодический интервал составляет 8 часов. Его можно настроить, задав definitionUpdatesInterval параметр в управляемом файле JSON.

  • Обновление вручную

    Чтобы вручную запустить «автономное обновление аналитики безопасности» для загрузки сигнатур с зеркального сервера на конечных точках Mac, выполните следующую команду:

    mdatp definitions update
    

Проверка состояния обновления

После активации "автономного обновления аналитики безопасности" автоматическим или ручным методом убедитесь, что обновление прошло успешно, выполнив команду : mdatp health --details --definitions.

Проверьте следующие поля:

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

Общие действия по устранению неполадок

  • Проверьте состояние функции "автономное обновление аналитики безопасности" с помощью следующей команды:

    mdatp health --details definitions
    

    Эта команда выводит понятное для пользователя сообщение в разделе definitions_update_fail_reason.

  • Проверьте, включены ли offline_definition_update и offline_definition_update_verify_sig .

  • Проверьте, равны ли definitions_update_source_uri и offline_definition_url_configured.

    • definitions_update_source_uri — это источник, из которого были загружены подписи.
    • offline_definition_url_configured — это источник, из которого следует скачать сигнатуры, упомянутый в управляемом файле конфигурации.
  • Попробуйте выполнить проверку подключения, чтобы проверить, доступен ли зеркальный сервер с узла:

    mdatp connectivity test
    
  • Попробуйте запустить обновление вручную с помощью следующей команды:

    mdatp definitions update
    

См. также