Partilhar via


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

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 espelhado é qualquer servidor no ambiente do cliente que se pode ligar à cloud da Microsoft para transferir as assinaturas. Outros pontos finais do macOS extraem as assinaturas do servidor espelhado num intervalo predefinido.

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 existir um problema com as atualizações mais recentes, pode solicitar a versão de assinatura 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 pontos finais do macOS que executam o Defender para Ponto Final extraem as assinaturas transferidas deste servidor espelhado num intervalo de tempo definido pelo utilizador.

As assinaturas extraídas para os pontos finais do macOS a partir do servidor local são primeiro verificadas antes de serem carregadas para o 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 pode ser visto na CLI do mdatp.

O fluxo de processo para transferir atualizações de informações de segurança para o servidor espelhado é ilustrado no diagrama seguinte.

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

O fluxo de processo para atualizações de informações de segurança no ponto final do macOS é ilustrado no diagrama seguinte.

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 Min (4 GB Preferenciais) 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 a propriedade do servidor espelhado estejam exclusivamente no cliente, esta secção apresenta dois scripts Bash de exemplo que demonstram como utilizar o Python 3 e o 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.

  • python_http_server.sh: utiliza o módulo de servidor HTTP incorporado do Python 3 para servir ficheiros de um diretório especificado.
  • caddy_http_server.sh: instala e configura o servidor Web da Caddy para servir ficheiros a partir de um diretório especificado.

Para verificar se o serviço está configurado corretamente depois de configurar o servidor, navegue para "https://localhost:8080".

Para casos de produção ou utilização avançada, veja a documentação oficial de cada servidor:

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

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

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

Instale o git no servidor espelhado.

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 zipada.

Nota

Agende uma tarefa cron ou uma tarefa iniciada para manter o ficheiro zip repositório/transferido atualizado para a versão mais recente em intervalos regulares.

Depois de clonar o repositório ou transferir o ficheiro zipado, a estrutura do diretório local deve ser a seguinte:

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 Mapeia para a localização para onde o script transfere os ficheiros.
downloadLinuxUpdates bool Quando definido como true, o script transfere as atualizações específicas do Linux para o downloadFolder.
logFilePath cadeia 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 do downloader, configure os parâmetros no ficheiro settings.json de acordo com a descrição na secção anterior e utilize um dos seguintes comandos com base no SO do servidor espelhado:

Bash:

./xplat_offline_updates_download.sh

PowerShell:

./xplat_offline_updates_download.ps1

Nota

Agende uma tarefa cron ou uma tarefa iniciada para executar este script para transferir as atualizações de informações de segurança mais recentes para o servidor espelhado em intervalos regulares.

Alojar as atualizações de informações de segurança offline no servidor espelhado

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 zip de assinaturas for transferido, o servidor espelhado pode ser utilizado para alojá-lo. O servidor espelhado pode ser alojado com qualquer um dos servidores de partilha http/HTTPS/rede.

Depois de alojado, copie o caminho absoluto do servidor alojado (até ao 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.

Assim que o servidor espelhado estiver configurado, precisamos de propagar este URL para os pontos finais do Mac como no offlineDefinitionUpdateUrl na Configuração Gerida, conforme descrito na secção seguinte.

Configurar os pontos finais

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 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 a abordagem de atualização de informações de segurança do Defender para Endpoint quando o "servidor espelhado offline" não conseguir servir 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 pontos finais do macOS, execute o seguinte comando:

mdatp health --details definitions

Uma saída de exemplo teria um aspeto semelhante ao seguinte fragmento de código:

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 os campos automaticDefinitionUpdateEnabled e offline_definition_update no json gerido estiverem definidos como true, as "atualizações de informações de segurança offline" são acionadas 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.

Verifique os seguintes campos:

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

Passos comuns de resolução de problemas

  • 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 de onde as assinaturas foram transferidas.
    • offline_definition_url_configured é a origem de onde as assinaturas devem ser transferidas, a mencionada no ficheiro de configuração gerida.
  • Experimente executar o teste de conectividade para verificar se o servidor espelhado está acessível a partir do anfitrião:

    mdatp connectivity test
    
  • Tente acionar uma atualização manual com o seguinte comando:

    mdatp definitions update
    

Consulte também