Compartir a través de


Configuración de actualizaciones de inteligencia de seguridad sin conexión para Microsoft Defender para punto de conexión en macOS

En este documento se describe la característica de actualización de inteligencia de seguridad sin conexión de Microsoft Defender para punto de conexión en macOS.

Esta característica permite a una organización usar un servidor de hospedaje local (lo que se conoce como servidor reflejado en este documento) para actualizar la inteligencia de seguridad (a la que se hace referencia en este documento como definiciones o firmas) en puntos de conexión de macOS que tienen una exposición limitada o no a Internet.

Un servidor reflejado es cualquier servidor del entorno del cliente que pueda conectarse a la nube de Microsoft para descargar las firmas. Otros puntos de conexión de macOS extraen las firmas del servidor reflejado en un intervalo predefinido.

Ventajas principales

  • El equipo de seguridad puede controlar y administrar la frecuencia de las descargas de firmas en el servidor local y la frecuencia con la que los puntos de conexión extraen firmas del servidor local.

  • Tiene una capa adicional de protección y control, ya que las firmas descargadas se pueden probar en un dispositivo de prueba antes de que se propaguen a toda la flota.

  • Necesita menos ancho de banda de red, ya que solo un servidor local sondea la nube de Microsoft para obtener las firmas más recientes en nombre de toda la flota.

  • El servidor reflejado puede ejecutar Windows, Mac o Linux, y no es necesario instalar Defender para punto de conexión en ese servidor.

  • Obtiene la protección antivirus más actualizada, ya que las firmas siempre se descargan junto con el motor antivirus compatible más reciente.

  • Las versiones anteriores de las firmas (n-1) se mueven a una carpeta de copia de seguridad en el servidor reflejado en cada iteración. Si hay un problema con las actualizaciones más recientes, puede extraer la versión de firma n-1 de la carpeta de copia de seguridad en los dispositivos.

  • En el caso poco frecuente de que se produzca un error en la actualización sin conexión, puede configurar una opción de reserva para obtener actualizaciones en línea desde la nube de Microsoft.

Funcionamiento de la actualización de inteligencia de seguridad sin conexión

Las organizaciones deben configurar un servidor reflejado, que es un servidor web/NFS local al que puede acceder la nube de Microsoft.

Las firmas se descargan desde la nube de Microsoft a este servidor reflejado mediante la ejecución de un script mediante el programador de tareas o trabajos cron en el servidor local.

Los puntos de conexión de macOS que ejecutan Defender para punto de conexión extraen las firmas descargadas de este servidor reflejado en un intervalo de tiempo definido por el usuario.

Las firmas extraídas a los puntos de conexión de macOS desde el servidor local se comprueban primero antes de cargarse en el motor antivirus.

Para desencadenar y configurar el proceso de actualización, actualice el archivo json de configuración administrada en los puntos de conexión de macOS.

El estado de la actualización se puede ver en la CLI de mdatp.

El flujo de proceso para descargar las actualizaciones de inteligencia de seguridad en el servidor reflejado se muestra en el diagrama siguiente.

Diagrama de flujo de procesos en el servidor reflejado para descargar las actualizaciones de inteligencia de seguridad

El flujo de proceso para las actualizaciones de inteligencia de seguridad en el punto de conexión de macOS se muestra en el diagrama siguiente.

Diagrama de flujo de procesos en el punto de conexión de macOS para actualizaciones de inteligencia de seguridad

El servidor reflejado puede ejecutar cualquiera de los siguientes sistemas operativos:

  • Linux (cualquier tipo)
  • Windows (cualquier versión)
  • Mac (cualquier versión)

Requisitos previos

  • Defender para punto de conexión, versión 101.25012.0003 o posterior, debe instalarse en los puntos de conexión de macOS.

  • Los puntos de conexión de macOS deben tener conectividad con el servidor reflejado.

  • El punto de conexión macOS debe ejecutar cualquiera de las distribuciones compatibles con Defender para punto de conexión.

  • El servidor reflejado puede ser un servidor HTTP/HTTPS o un servidor compartido de red, por ejemplo, un servidor NFS.

  • El servidor reflejado debe tener acceso a las siguientes direcciones URL:

    • https://github.com/microsoft/mdatp-xplat.git
    • https://go.microsoft.com/fwlink/?linkid=2144709
  • El servidor reflejado debe admitir Bash o PowerShell.

  • Se requieren las siguientes especificaciones mínimas del sistema para el servidor reflejado:

    Núcleo de CPU RAM Disco libre Intercambio
    2 núcleos (4 núcleos preferidos) 1 GB min (4 GB preferidos) 2 GB Dependiente del sistema

    Nota:

    Esta configuración puede variar en función del número de solicitudes que se atienden y la carga que debe procesar cada servidor.

Configuración del servidor reflejado

Nota:

La administración y la propiedad del servidor reflejado recaen únicamente en el cliente, ya que reside en el entorno privado del cliente.

Cualquier servidor HTTP se puede usar como servidor reflejado. El servidor reflejado no necesita tener Instalado Defender para punto de conexión.

Aunque la administración y la propiedad del servidor reflejado recaen únicamente en el cliente, en esta sección se presentan dos scripts de Bash de ejemplo que muestran cómo usar Python 3 y Caddy para configurar un servidor de archivos HTTP básico en macOS. Estos scripts se proporcionan solo con fines ilustrativos y deben adaptarse a sus propias necesidades y entornos específicos.

  • python_http_server.sh: usa el módulo de servidor HTTP integrado de Python 3 para atender archivos de un directorio especificado.
  • caddy_http_server.sh: instala y configura el servidor web caddy para servir archivos de un directorio especificado.

Para comprobar que el servicio está configurado correctamente después de configurar el servidor, vaya a "https://localhost:8080".

Para casos de uso avanzados o de producción, consulte la documentación oficial de cada servidor:

Revise y adapte siempre los scripts al entorno y a los requisitos de seguridad.

Script de ejemplo: Configuración de un servidor de archivos HTTP básico en macOS mediante 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 ejemplo: Configuración de un servidor de archivos HTTP básico en macOS mediante 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

Obtención del script de descargador de inteligencia de seguridad sin conexión

Microsoft hospeda un script de descargador de inteligencia de seguridad sin conexión en el siguiente repositorio de GitHub: https://github.com/microsoft/mdatp-xplat.

Siga estos pasos para obtener el script de descargador:

Opción 1: Clonar el repositorio (preferido)

Instale git en el servidor reflejado.

Vaya al directorio donde desea clonar el repositorio.

Ejecute el comando: git clone https://github.com/microsoft/mdatp-xplat.git

Opción 2: Descargar el archivo ZIP

Descargue el archivo ZIP del repositorio: https://github.com/microsoft/mdatp-xplat/archive/refs/heads/master.zip.

Copie el archivo ZIP en la carpeta donde desea conservar el script.

Extraiga la carpeta comprimida.

Nota:

Programe un trabajo cron o un trabajo lanzado para mantener el archivo zip descargado o del repositorio actualizado a la versión más reciente a intervalos regulares.

Después de clonar el repositorio o descargar el archivo comprimido, la estructura de directorios local debe ser la siguiente:

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:

Consulte el archivo README.md para comprender con detalle cómo usar el script.

El archivo settings.json consta de algunas variables que el usuario puede configurar para determinar la salida de la ejecución del script.

Nombre del campo Valor Descripción
downloadFolder string Se asigna a la ubicación en la que el script descarga los archivos.
downloadLinuxUpdates bool Cuando se establece en true, el script descarga las actualizaciones específicas de Linux en downloadFolder.
logFilePath string Configura los registros de diagnóstico en una carpeta determinada. Este archivo se puede compartir con Microsoft para depurar el script si hay algún problema.
downloadMacUpdates bool El script descarga las actualizaciones específicas de Mac en .downloadFolder
downloadPreviewUpdates bool Descarga la versión preliminar de las actualizaciones disponibles para el sistema operativo específico.
backupPreviousUpdates bool Permite que el script copie la actualización anterior en la _back carpeta y que se descarguen nuevas actualizaciones en downloadFolder.

Ejecución del script de descargador de inteligencia de seguridad sin conexión

Para ejecutar manualmente el script de descarga, configure los parámetros en el archivo settings.json según la descripción de la sección anterior y use uno de los siguientes comandos basados en el sistema operativo del servidor reflejado:

Bash:

./xplat_offline_updates_download.sh

Powershell:

./xplat_offline_updates_download.ps1

Nota:

Programe un trabajo cron o un trabajo lanzado para ejecutar este script con el fin de descargar las últimas actualizaciones de inteligencia de seguridad en el servidor reflejado a intervalos regulares.

Hospedar las actualizaciones de inteligencia de seguridad sin conexión en el servidor reflejado

Una vez que se ejecuta el script, las firmas más recientes se descargan en la carpeta configurada en el archivo settings.json (updates.zip).

Una vez descargado el archivo ZIP de firmas, se puede usar el servidor reflejado para hospedarlo. El servidor reflejado se puede hospedar mediante cualquiera de los servidores compartidos HTTP/HTTPS/network.

Una vez hospedado, copie la ruta de acceso absoluta del servidor hospedado (hasta pero sin incluir el directorio arch_*).

Por ejemplo, si el script se ejecuta con downloadFolder=/tmp/wdav-updatey el servidor HTTP (www.example.server.com:8000) hospeda la ruta de acceso /tmp/wdav-update, el URI correspondiente es: www.example.server.com:8000/mac/production/.

También podemos usar la ruta de acceso absoluta del directorio (punto de montaje local/remoto) como /tmp/wdav-update/mac/production.

Una vez configurado el servidor reflejado, es necesario propagar esta dirección URL a los puntos de conexión de Mac como offlineDefinitionUpdateUrl en la configuración administrada, tal como se describe en la sección siguiente.

Configuración de los puntos de conexión

Use el siguiente archivo de mdatp_managed.json de ejemplo y actualice los parámetros según la configuración y, a continuación, copie el archivo en la ubicación /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"
  }
}
Nombre del campo Valores Comentarios
automaticDefinitionUpdateEnabled true/false Determina el comportamiento de Defender para punto de conexión que intenta realizar actualizaciones automáticamente, está activado o desactivado, respectivamente.
definitionUpdatesInterval Numérico Tiempo de intervalo entre cada actualización automática de firmas (en segundos).
offlineDefinitionUpdateUrl string Valor de dirección URL generado como parte de la configuración del servidor reflejado. Esto puede ser en términos de la dirección URL del servidor remoto o un directorio (punto de montaje local o remoto).
offlineDefinitionUpdate enabled/disabled Cuando se establece en enabled, la característica "actualización de inteligencia de seguridad sin conexión" está habilitada y viceversa.
offlineDefinitionUpdateFallbackToCloud true/false Determine el enfoque de actualización de inteligencia de seguridad de Defender para punto de conexión cuando el "servidor reflejado sin conexión" no puede atender la solicitud de actualización. Si se establece en , la actualización se vuelve a trueintentar a través de la nube de Microsoft cuando se produce un error en la "actualización de inteligencia de seguridad sin conexión"; en caso contrario, viceversa.
offlineDefinitionUpdateVerifySig enabled/disabled Cuando se establece enableden , las definiciones descargadas se comprueban en los puntos de conexión; de lo contrario, viceversa.

Comprobación de la configuración

Para probar si la configuración se aplica correctamente en los puntos de conexión de macOS, ejecute el siguiente comando:

mdatp health --details definitions

Una salida de ejemplo tendría un aspecto similar al siguiente 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]

Desencadenar las actualizaciones de inteligencia de seguridad sin conexión

  • Actualización automática

    Si los campos automaticDefinitionUpdateEnabled y offline_definition_update en el json administrado se establecen trueen , las "actualizaciones de inteligencia de seguridad sin conexión" se desencadenan automáticamente a intervalos periódicos.

    De forma predeterminada, este intervalo periódico es de 8 horas. Se puede configurar estableciendo el definitionUpdatesInterval parámetro en el json administrado.

  • Actualización manual

    Para desencadenar la "actualización de inteligencia de seguridad sin conexión" manualmente para descargar las firmas del servidor reflejado en los puntos de conexión de Mac, ejecute el siguiente comando:

    mdatp definitions update
    

Comprobación del estado de la actualización

Después de desencadenar la "actualización de inteligencia de seguridad sin conexión" mediante el método automático o manual, compruebe que la actualización se realizó correctamente mediante la ejecución del comando : mdatp health --details --definitions.

Compruebe los campos siguientes:

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

Pasos habituales para la solución de problemas

  • Compruebe el estado de la característica "actualización de inteligencia de seguridad sin conexión" mediante el siguiente comando:

    mdatp health --details definitions
    

    Este comando proporciona un mensaje descriptivo en la sección definitions_update_fail_reason .

  • Compruebe si offline_definition_update y offline_definition_update_verify_sig están habilitados.

  • Compruebe si definitions_update_source_uri es igual a offline_definition_url_configured.

    • definitions_update_source_uri es el origen desde el que se descargaron las firmas.
    • offline_definition_url_configured es el origen desde el que se deben descargar las firmas, la que se menciona en el archivo de configuración administrado.
  • Pruebe a realizar la prueba de conectividad para comprobar si el servidor reflejado es accesible desde el host:

    mdatp connectivity test
    
  • Intente desencadenar una actualización manual con el siguiente comando:

    mdatp definitions update
    

Vea también