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

Visión general

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 dispositivos macOS obtienen las firmas del servidor espejo a intervalos predefinidos.

Antes de comenzar, asegúrese de que la versión 101.25012.0003 o posterior de Defender for Endpoint esté instalada en los dispositivos macOS, de que los dispositivos puedan acceder al servidor de réplica y de que el servidor de réplica tenga acceso a Internet para descargar firmas. Para obtener la lista completa, consulte la sección requisitos previos para las actualizaciones de inteligencia de seguridad sin conexión más adelante en este artículo.

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 antiguas de las firmas (n-1) se mueven en cada iteración a una carpeta de copia de seguridad en su servidor espejo. Si hay algún problema con las actualizaciones más recientes, puedes recuperar la versión n-1 de las firmas desde la carpeta de copia de seguridad a tus 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 espejo ejecutando un script mediante cron o el Programador de tareas en el servidor local.

Los dispositivos macOS que ejecutan Defender for Endpoint obtienen las firmas descargadas de este servidor de réplica a intervalos definidos 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 de inteligencia de seguridad sin conexión se puede ver en la CLI de mdatp.

En el diagrama siguiente se muestra cómo se descargan las actualizaciones de inteligencia de seguridad desde la nube de Microsoft al servidor reflejado.

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

En el diagrama siguiente se muestra cómo los puntos de conexión de macOS extraen y comprueban las actualizaciones de inteligencia de seguridad del servidor reflejado.

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 sabor)
  • 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 equipos con macOS deben tener conectividad con el servidor réplica.

  • El dispositivo macOS debe ejecutar una de las distribuciones compatibles con Defender para Endpoint.

  • 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 espejo no necesita tener instalado Defender for Endpoint.

Aunque la administración y la propiedad del servidor reflejado se encuentran únicamente con el cliente, los dos scripts de Bash de ejemplo siguientes 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.

Para comprobar que el servidor de archivos HTTP está configurado correctamente, vaya a "https://localhost:8080".

Para casos de uso avanzados o de producción, consulte la documentación oficial de Python servidor HTTP y Caddy:

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

El siguiente script inicia un servidor HTTP ligero Python 3 que puede hospedar los archivos de actualización sin conexión descargados desde un directorio 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 ejemplo: Configuración de un servidor de archivos HTTP básico en macOS mediante Caddy

El siguiente script instala y configura el servidor web de Caddy en macOS para hospedar los archivos de actualización sin conexión descargados.

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

Obtener el script para descargar 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 del directorio local debe coincidir con el ejemplo siguiente, que muestra el script del descargador y sus archivos de configuración:

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 La secuencia de comandos descarga las actualizaciones específicas para 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.

Ejecute el script del descargador de inteligencia de seguridad sin conexión

Para ejecutar manualmente el script de descarga, configure los parámetros en el archivo settings.json (como downloadFolder, downloadMacUpdates y backupPreviousUpdates) usando las descripciones de los campos de settings.json del script de descarga, y utilice uno de los siguientes comandos según el sistema operativo del servidor espejo:

En un servidor espejo basado en Bash (Linux o macOS), ejecute el script de shell para descargar el paquete de definiciones sin conexión más reciente:

./xplat_offline_updates_download.sh

En un servidor espejo con Windows, use la versión del script para PowerShell para descargar el paquete de definiciones sin conexión:

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

Alojar las actualizaciones de inteligencia de seguridad sin conexión en el servidor espejo

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 espejo puede alojarse mediante cualquiera de los servidores HTTP/HTTPS o recursos compartidos de red.

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, propague esta dirección URL a los puntos de conexión de Mac estableciendolo como el offlineDefinitionUpdateUrl valor del archivo de configuración administrado (mdatp_managed.json) como se describe en Configuración de los puntos de conexión de macOS para las actualizaciones sin conexión.

Configuración de los puntos de conexión

Importante

Defender para punto de conexión debe estar ya instalado en el punto de conexión de macOS, y necesitas permisos de root o sudo para escribir en /etc/opt/microsoft/mdatp/managed/.

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 si Defender for Endpoint, al intentar 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 la URL generado durante la configuración del servidor espejo. 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 método de actualización de inteligencia de seguridad de Defender for Endpoint cuando el "servidor espejo sin conexión" no puede atender la solicitud de actualización. Si se establece en true, la actualización se vuelve a intentar a través de la nube de Microsoft si falla la "actualización de inteligencia de seguridad sin conexión"; de lo contrario, viceversa.
offlineDefinitionUpdateVerifySig enabled/disabled Cuando se establece en enabled, las definiciones descargadas se comprueban en los equipos terminales; en caso contrario, se hace a la inversa.

Comprobación de la configuración

Para probar si la configuración se aplica correctamente en los puntos de conexión de macOS, use el siguiente comando para mostrar los campos de estado de actualización de definición, incluida la dirección URL sin conexión configurada y el origen de actualización:

mdatp health --details definitions

Una salida de ejemplo tendría el siguiente fragmento de código. Compruebe que definitions_status muestra up_to_date y definitions_update_fail_reason está vacío, lo que indica que la configuración de actualización sin conexión funciona correctamente:

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 el campo automaticDefinitionUpdateEnabled (que controla si Defender for Endpoint intenta realizar actualizaciones automáticas de definiciones, tal como se configura en el archivo JSON administrado) y offline_definition_update (el nombre de estado informado para el campo de configuración administrada offlineDefinitionUpdate) en el JSON administrado se establecen en true, las "actualizaciones sin conexión de inteligencia de seguridad" se activan 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 activar manualmente la "actualización sin conexión de inteligencia de seguridad" para descargar las firmas desde el servidor espejo en los dispositivos 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.

La siguiente salida de ejemplo muestra los campos de estado de la definición de la clave. Confirme que definitions_status es up_to_date y definitions_update_fail_reason está vacío:

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

Pasos habituales para la solución de problemas

Si las actualizaciones de inteligencia de seguridad sin conexión no funcionan según lo previsto, siga estos pasos para diagnosticar y resolver el problema.

  • 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 comprensible para el usuario 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.
  • Ejecute una prueba de conectividad para confirmar que el punto de conexión puede llegar al servidor reflejado configurado y a otros servicios necesarios:

    mdatp connectivity test
    
  • Si la conectividad se realiza correctamente, pero las definiciones siguen obsoletas, vuelva a intentar la actualización de la definición manualmente:

    mdatp definitions update
    

Vea también

Para obtener más información, consulte los siguientes artículos.