Configurar atualizações de informações de segurança offline para Microsoft Defender para Endpoint no macOS

Descrição geral

Este documento descreve a funcionalidade Atualização de Informações de Segurança Offline do Microsoft Defender para Endpoint no macOS.

Esta funcionalidade permite que uma organização utilize um servidor de alojamento local (referido como um servidor espelhado neste documento) para atualizar as informações de segurança (referidas neste documento como definições ou assinaturas) em pontos finais macOS que tenham ou não exposição limitada à Internet.

Um servidor de réplica é qualquer servidor existente no ambiente do cliente que consiga ligar-se à nuvem da Microsoft para transferir as assinaturas. Outros pontos finais do macOS extraem as assinaturas do servidor espelhado num intervalo predefinido.

Antes de começar, certifique-se de que o Defender for Endpoint versão 101.25012.0003 ou posterior está instalado nos endpoints do macOS, que os endpoints podem aceder ao servidor espelho e que o servidor espelho tem acesso à internet para descarregar assinaturas. Para a lista completa, consulte a secção de pré-requisitos para atualizações de inteligência de segurança offline mais adiante neste artigo.

Principais benefícios

  • A sua equipa de segurança pode controlar e gerir a frequência das transferências de assinaturas para o servidor local e a frequência com que os pontos finais extraem assinaturas do servidor local.

  • Tem uma camada adicional de proteção e controlo, uma vez que as assinaturas transferidas podem ser testadas num dispositivo de teste antes de serem propagadas para toda a frota.

  • Precisa de menos largura de banda de rede, uma vez que apenas um servidor local consulta a microsoft cloud para obter as assinaturas mais recentes em nome de toda a sua frota.

  • O servidor espelhado pode executar o Windows, Mac ou Linux e não tem de instalar o Defender para Endpoint nesse servidor.

  • Obtém a proteção antivírus mais atualizada, porque as assinaturas são sempre transferidas juntamente com o motor antivírus compatível mais recente.

  • As versões mais antigas das assinaturas (n-1) são movidas para uma pasta de cópia de segurança no servidor espelhado em cada iteração. Se houver um problema com as atualizações mais recentes, pode copiar a versão de assinaturas n-1 da pasta de cópia de segurança para os seus dispositivos.

  • No caso raro de a atualização offline falhar, pode configurar uma opção de contingência para obter atualizações online a partir da cloud da Microsoft.

Como funciona a atualização de informações de segurança offline

As organizações precisam de configurar um servidor espelhado, que é um servidor Web/NFS local acessível pela cloud da Microsoft.

As assinaturas são transferidas da cloud da Microsoft para este servidor espelhado ao executar um script com o cron job/task scheduler no servidor local.

Os dispositivos macOS com o Defender para Endpoint obtêm as assinaturas descarregadas deste servidor de réplica em intervalos definidos pelo utilizador.

As assinaturas obtidas do servidor local para os terminais macOS são primeiro verificadas antes de serem carregadas no motor antivírus.

Para acionar e configurar o processo de atualização, atualize o ficheiro json de configuração gerida nos pontos finais do macOS.

O estado da atualização de inteligência de segurança offline pode ser visto na CLI mdatp.

O diagrama seguinte mostra como as atualizações de inteligência de segurança são descarregadas da cloud da Microsoft para o servidor espelho.

Diagrama de fluxo de processos no Servidor Espelhado para transferir as atualizações de informações de segurança

O diagrama seguinte mostra como os endpoints do macOS retiram e verificam atualizações de inteligência de segurança do servidor espelho.

Diagrama de fluxo de processos no ponto final do macOS para atualizações de informações de segurança

O servidor espelhado pode executar qualquer um dos seguintes sistemas operativos:

  • Linux (qualquer sabor)
  • Windows (qualquer versão)
  • Mac (qualquer versão)

Pré-requisitos

  • A versão 101.25012.0003 ou posterior do Defender para Endpoint tem de ser instalada nos pontos finais do macOS.

  • Os pontos finais do macOS têm de ter conectividade ao servidor espelhado.

  • O ponto final do macOS tem de estar a executar qualquer uma das distribuições suportadas pelo Defender para Endpoint.

  • O servidor espelhado pode ser um servidor HTTP/HTTPS ou um servidor de partilha de rede, por exemplo, um servidor NFS.

  • O servidor espelhado tem de ter acesso aos seguintes URLs:

    • https://github.com/microsoft/mdatp-xplat.git
    • https://go.microsoft.com/fwlink/?linkid=2144709
  • O servidor espelhado deve suportar bash ou PowerShell.

  • São necessárias as seguintes especificações mínimas do sistema para o servidor espelhado:

    Núcleo da CPU RAM Disco gratuito Trocar
    2 núcleos (Preferencial 4 Núcleos) 1 GB mín. (4 GB recomendado) 2 GB Dependente do Sistema

    Nota

    Esta configuração pode variar consoante o número de pedidos que são servidos e a carga que cada servidor tem de processar.

Configurar o servidor espelhado

Nota

A gestão e a propriedade do servidor espelhado residem exclusivamente no cliente, uma vez que reside no ambiente privado do cliente.

Qualquer servidor HTTP pode ser utilizado como um servidor espelhado. O servidor espelhado não precisa de ter o Defender para Endpoint instalado.

Embora a gestão e propriedade do servidor espelho seja exclusivamente do cliente, os seguintes dois scripts de exemplo Bash demonstram como usar Python 3 e Caddy para configurar um servidor de ficheiros HTTP básico no macOS. Estes scripts são fornecidos apenas para fins de ilustração e devem ser adaptados às suas necessidades e ambiente específicos.

Para verificar se o servidor de ficheiros HTTP está configurado corretamente, navegue até "https://localhost:8080".

Para casos de produção ou de uso avançado, consulte a documentação oficial do servidor HTTP Python e do Caddy:

Reveja e adapte sempre os scripts ao seu ambiente e requisitos de segurança.

Script de exemplo: Configurar um servidor de ficheiros HTTP básico no macOS com o Python 3

O script seguinte inicia um servidor HTTP Python 3 leve que pode alojar os ficheiros de atualização offline descarregados a partir de um diretório especificado.

#!/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"

Script de exemplo: configurar um servidor de ficheiros HTTP básico no macOS com o Caddy

O script seguinte instala e configura o servidor web Caddy no macOS para alojar os ficheiros de atualização offline descarregados.

#!/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

Obter o script do transferidor de informações de segurança offline

A Microsoft aloja um script do transferidor de informações de segurança offline no seguinte repositório do GitHub: https://github.com/microsoft/mdatp-xplat.

Execute os seguintes passos para obter o script do downloader:

Opção 1: Clonar o repositório (preferencial)

Instala o Git no teu servidor espelho.

Navegue para o diretório onde pretende clonar o repositório.

Execute o comando: git clone https://github.com/microsoft/mdatp-xplat.git

Opção 2: Transferir o ficheiro zip

Transfira o ficheiro ZIP do repositório: https://github.com/microsoft/mdatp-xplat/archive/refs/heads/master.zip.

Copie o ficheiro zip para a pasta onde pretende manter o script.

Extraia a pasta comprimida.

Nota

Agende uma tarefa cron ou uma tarefa launchd para manter o repositório/ficheiro ZIP transferido atualizado para a versão mais recente regularmente.

Após clonar o repositório ou descarregar o ficheiro comprimido, a estrutura local de diretórios deve corresponder ao seguinte exemplo, que mostra o script de download e os seus ficheiros de configuração:

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

Nota

Percorra o ficheiro README.md para compreender detalhadamente como utilizar o script.

O ficheiro settings.json consiste em algumas variáveis que o utilizador pode configurar para determinar o resultado da execução do script.

Nome do Campo Valor Descrição
downloadFolder cadeia (de caracteres) Mapeia para a localização para onde o script transfere os ficheiros.
downloadLinuxUpdates bool Quando definido para true, o script descarrega as atualizações específicas do Linux para o downloadFolder.
logFilePath cadeia (de caracteres) Configura os registos de diagnóstico numa determinada pasta. Este ficheiro pode ser partilhado com a Microsoft para depurar o script, caso existam problemas.
downloadMacUpdates bool O script transfere as atualizações específicas do Mac para o downloadFolder.
downloadPreviewUpdates bool Transfere a versão de pré-visualização das atualizações disponíveis para o SO específico.
backupPreviousUpdates bool Permite que o script copie a atualização anterior na _back pasta e as novas atualizações são transferidas para downloadFolder.

Executar o script do transferidor de informações de segurança offline

Para executar manualmente o script de transferência, configure os parâmetros no ficheiro settings.json (como downloadFolder, downloadMacUpdates e backupPreviousUpdates) utilizando as descrições dos campos em descrições dos campos do settings.json do script de transferência e use um dos seguintes comandos, com base no sistema operativo do servidor espelho:

Num servidor espelho baseado em Bash (Linux ou macOS), execute o script shell para descarregar o pacote de definição offline mais recente:

./xplat_offline_updates_download.sh

Num servidor espelho baseado em Windows, use a versão PowerShell do script para descarregar o pacote de definição offline:

./xplat_offline_updates_download.ps1

Nota

Agende uma tarefa cron ou uma tarefa do launchd para executar este script e descarregar, em intervalos regulares, as atualizações mais recentes de inteligência de segurança para o servidor de mirror.

Aloje as atualizações offline de inteligência de segurança no servidor de réplica

Depois de o script ser executado, as assinaturas mais recentes são transferidas para a pasta configurada no ficheiro de settings.json (updates.zip).

Assim que o ficheiro ZIP de assinaturas for descarregado, o servidor de réplica pode ser utilizado para o alojar. O servidor de réplica pode ser alojado em qualquer servidor HTTP/HTTPS ou partilha de rede.

Depois de o alojar, copie o caminho absoluto do servidor (até, mas sem incluir, o diretório arch_*).

Por exemplo, se o script for executado com downloadFolder=/tmp/wdav-updatee o servidor HTTP (www.example.server.com:8000) estiver a alojar o caminho /tmp/wdav-update, o URI correspondente será: www.example.server.com:8000/mac/production/.

Também podemos utilizar o caminho absoluto do diretório (ponto de montagem local/remoto) como /tmp/wdav-update/mac/production.

Uma vez configurado o servidor espelhado, propague este URL para os endpoints Mac definindo-o como o offlineDefinitionUpdateUrl valor no ficheiro de configuração gerido (mdatp_managed.json), conforme descrito em Configurar os endpoints macOS para atualizações offline.

Configurar os pontos finais

Importante

O Defender for Endpoint já deve estar instalado no endpoint do macOS, e precisa de permissões root ou sudo para escrever em /etc/opt/microsoft/mdatp/managed/.

Utilize o seguinte exemplo mdatp_managed.json ficheiro e atualize os parâmetros de acordo com a configuração e, em seguida, copie o ficheiro para a localização /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"
  }
}
Nome do Campo Valores Comentários
automaticDefinitionUpdateEnabled true/false Determina o comportamento do Defender para Endpoint ao tentar efetuar atualizações automaticamente, é ativado ou desativado, respetivamente.
definitionUpdatesInterval numérico Tempo de intervalo entre cada atualização automática de assinaturas (em segundos).
offlineDefinitionUpdateUrl cadeia (de caracteres) Valor de URL gerado como parte da configuração do servidor espelhado. Isto pode ser em termos do URL do servidor remoto ou de um diretório (ponto de montagem local/remoto).
offlineDefinitionUpdate enabled/disabled Quando definida como enabled, a funcionalidade "atualização de informações de segurança offline" está ativada e vice-versa.
offlineDefinitionUpdateFallbackToCloud true/false Determine qual a abordagem de atualização da inteligência de segurança do Defender para Endpoint a adotar quando o "servidor de réplica offline" não conseguir processar o pedido de atualização. Se estiver definida como true, a atualização será repetida através da cloud da Microsoft quando a "atualização de informações de segurança offline" falhou; caso contrário, vice-versa.
offlineDefinitionUpdateVerifySig enabled/disabled Quando definidas como enabled, as definições transferidas são verificadas nos pontos finais; caso contrário, vice-versa.

Verificar a configuração

Para testar se as definições são aplicadas corretamente nos endpoints do macOS, use o seguinte comando para mostrar os campos de estado da atualização de definição, incluindo a URL offline configurada e a fonte da atualização:

mdatp health --details definitions

Uma saída de exemplo seria semelhante ao seguinte excerto de código. Verifique se definitions_status aparece up_to_date e definitions_update_fail_reason está vazio, o que indica que a configuração de atualização offline está a funcionar corretamente:

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]

Acionar as atualizações de informações de segurança offline

  • Atualização automática

    Se o automaticDefinitionUpdateEnabled campo (que controla se o Defender for Endpoint tenta atualizações automáticas de definição, conforme configurado no ficheiro JSON gerido) e o offline_definition_update (o nome de estado reportado para o offlineDefinitionUpdate campo de configuração gerida) no json gerido forem definidos para true, então as "atualizações de inteligência de segurança offline" são ativadas automaticamente em intervalos periódicos.

    Por predefinição, este intervalo periódico é de 8 horas. Pode ser configurado ao definir o definitionUpdatesInterval parâmetro no json gerido.

  • Atualização manual

    Para acionar a "atualização de informações de segurança offline" manualmente para transferir as assinaturas do servidor espelhado nos pontos finais do Mac, execute o seguinte comando:

    mdatp definitions update
    

Verificar o estado da atualização

Depois de acionar a "atualização de informações de segurança offline" através do método automático ou manual, verifique se a atualização foi efetuada com êxito ao executar o comando: mdatp health --details --definitions.

A seguinte saída de exemplo mostra os principais campos de saúde definidos. Confirma que definitions_status está up_to_date e definitions_update_fail_reason está vazio:

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

Passos comuns de resolução de problemas

Se as atualizações de inteligência de segurança offline não estiverem a funcionar como esperado, use os seguintes passos para diagnosticar e resolver o problema.

  • Verifique o estado da funcionalidade "atualização de informações de segurança offline" com o seguinte comando:

    mdatp health --details definitions
    

    Este comando fornece uma mensagem amigável na secção definitions_update_fail_reason .

  • Verifique se offline_definition_update e offline_definition_update_verify_sig estão ativados.

  • Verifique se definitions_update_source_uri é igual a offline_definition_url_configured.

    • definitions_update_source_uri é a origem a partir da qual as assinaturas foram descarregadas.
    • offline_definition_url_configured é a origem a partir da qual as assinaturas devem ser descarregadas, a indicada no ficheiro de configuração gerido.
  • Execute um teste de conectividade para confirmar que o endpoint pode aceder ao servidor espelho configurado e a outros serviços necessários:

    mdatp connectivity test
    
  • Se a conectividade tiver sucesso mas as definições continuarem desatualizadas, tente novamente a atualização manual:

    mdatp definitions update
    

Consulte também

Para mais detalhes, consulte os seguintes artigos.