Ingesta de mensajes CEF y Syslog en Microsoft Sentinel con el agente de Azure Monitor

En este artículo se describe cómo usar los conectores Syslog a través de AMA y formato de evento común (CEF) a través de AMA para filtrar e ingerir rápidamente mensajes de Syslog, incluidos los de formato de evento común (CEF), desde máquinas Linux y desde dispositivos de seguridad y red.

Estos conectores instalan el agente de Azure Monitor (AMA) en cualquier máquina Linux desde la que quiera recopilar mensajes Syslog o CEF. Esta máquina podría ser el origen de los mensajes, o podría ser un reenviador que recopila mensajes de otras máquinas, como dispositivos de seguridad o de red. El conector envía las instrucciones de los agentes en función de las reglas de recopilación de datos (DCR) que defina. Con el fin de mejorar el rendimiento y la eficacia de las consultas y los análisis, las DCR especifican los sistemas que se van a supervisar y los tipos de registros o mensajes que se van a recopilar, así mismo definen los filtros que se van a aplicar a los mensajes antes de ingerirlos.

Importante

El 28 de febrero de 2023 introdujimos cambios en el esquema de la tabla CommonSecurityLog. Después de estos cambios, es posible que tenga que revisar y actualizar las consultas personalizadas. Para obtener más información, consulte la sección "Acciones recomendadas" en esta entrada de blog. Microsoft Sentinel ha actualizado el contenido preconfigurado (detecciones, consultas de búsqueda, libros, analizadores, etc.).

Información general

Syslog y CEF son dos formatos comunes para registrar datos de diferentes dispositivos y aplicaciones. Ayudan a los administradores del sistema y a los analistas de seguridad a supervisar y solucionar problemas de la red e identificar posibles amenazas o incidentes.

¿Qué es Syslog?

Syslog es un protocolo estándar para enviar y recibir mensajes entre diferentes dispositivos o aplicaciones a través de una red. Originalmente se desarrolló para sistemas Unix, pero ahora es ampliamente compatible con varias plataformas y proveedores. Los mensajes de Syslog tienen una estructura predefinida que consta de una prioridad, una marca de tiempo, un nombre de host, un nombre de aplicación, un id. de proceso y un texto del mensaje. Los mensajes de Syslog se pueden enviar a través de UDP, TCP o TLS, según la configuración y los requisitos de seguridad.

¿Qué es el formato de evento común (CEF)?

CEF, o formato de evento común, es un formato neutral del proveedor para registrar datos de dispositivos de red y seguridad (por ejemplo,firewalls, enrutadores, soluciones de detección y respuesta, y sistemas de detección de intrusiones), así como de otros tipos de sistemas (por ejemplo, servidores web). Una extensión de Syslog, se desarrolló especialmente para soluciones de administración de eventos e información de seguridad (SIEM). Los mensajes CEF tienen un encabezado estándar que contiene información como el proveedor, el producto y la versión del dispositivo, así como la clase, la gravedad y el id. del evento. Los mensajes CEF también tienen un número variable de extensiones que proporcionan más detalles sobre el evento, como las direcciones IP de origen y destino, el nombre de usuario, el nombre de archivo o la acción realizada.

Como recopila Microsoft Sentinel mensajes de Syslog y CEF con el agente de Azure Monitor

En los diagramas siguientes se muestra la arquitectura de la colección de mensajes de Syslog y CEF en Microsoft Sentinel, mediante el uso de los conectores Syslog a través de AMA y formato de evento común (CEF) a través de AMA.

En este diagrama se muestran los mensajes de Syslog que se recopilan de una sola máquina virtual Linux individual en la que está instalado el agente de Azure Monitor (AMA).

Diagram of Syslog collection from single source.

El proceso de ingesta de datos mediante el agente de Azure Monitor usa los siguientes componentes y flujos de datos:

  • Orígenes de registros: Estas son las distintas máquinas virtuales Linux del entorno que generan mensajes de Syslog. Estos mensajes se recopilan mediante el demonio de Syslog local en el puerto TCP o UDP 514 (u otro puerto según, sus preferencias).

  • El demonio de Syslog local (ya sea rsyslog o syslog-ng) recopila los mensajes de registro en el puerto TCP o UDP 514 (u otro puesto, según sus preferencias). A continuación, el demonio envía estos registros al agente de Azure Monitor (consulte la nota siguiente).

  • El agente de Azure Monitor que se instala en cada máquina virtual Linux de la que quiere recopilar mensajes de Syslog, mediante la configuración del conector de datos según las siguientes instrucciones. El agente analiza los registros y, a continuación, los envía al área de trabajo de Microsoft Sentinel (Log Analytics) .

  • El área de trabajo de Microsoft Sentinel (Log Analytics): los mensajes de Syslog que se envían aquí terminan en la tabla Syslog, donde puede consultar los registros y realizar análisis sobre ellos para detectar y responder a amenazas de seguridad.

Nota:

  • El agente de Azure Monitor admite los puertos RFC 3164 y 5424 de Syslog.

  • Si desea usar un puerto distinto del 514 para recibir mensajes Syslog/CEF, asegúrese de que la configuración del puerto en el demonio de Syslog coincide con la de la aplicación que genera los mensajes.

  • El demonio de Syslog envía registros al agente de Azure Monitor de dos maneras diferentes en función de la versión del AMA:

    • Las versiones del AMA 1.28.11 y posteriores reciben registros en el puerto TCP 28330.
    • Las versiones anteriores del AMA reciben registros a través del socket de dominio Unix.

Configuración de los conectores de datos

Configuración del conector Syslog a través de AMA

El proceso de configuración del conector Syslog a través de AMA tiene dos partes:

  1. Instale el agente de Azure Monitor y cree una regla de recopilación de datos (DCR).

  2. Si va a recopilar registros de otras máquinas mediante un reenviador de registros, ejecute el script "instalación" en el reenviador de registros para configurar el demonio de Syslog y escuchar mensajes de otras máquinas y abrir los puertos locales necesarios.

Requisitos previos

  • Debe tener habilitada la solución de Microsoft Sentinel adecuada: Syslog o el formato de evento común.

  • La cuenta de Azure debe tener los siguientes roles o permisos:

    Rol integrado Ámbito Motivo
    - Colaborador de la máquina virtual
    - Azure Connected Machine
       Administrador de recursos
  • Máquinas virtuales
  • Virtual Machine Scale Sets
  • Servidores habilitados para Azure Arc
  • Implementación del agente
    Cualquier rol que incluya la acción
    Microsoft.Resources/deployments/*
  • Subscription
  • Resource group
  • Regla de recopilación de datos existente
  • Implementación de las plantillas de Azure Resource Manager
    Colaborador de supervisión
  • Subscription
  • Resource group
  • Regla de recopilación de datos existente
  • Para crear o editar reglas de recopilación de datos

Requisitos previos del reenviador de registros

Si va a recopilar mensajes de un reenviador de registros, se aplicarán los siguientes requisitos previos adicionales:

  • Debe tener una máquina virtual Linux designada (el reenviador de registros) para recopilar registros.

  • Si el reenviador de registros no es una máquina virtual de Azure, debe tener instalado el agente de Connected Machine de Azure Arc.

  • La máquina virtual del reenviador de registros de Linux debe tener instalado Python 2.7 o 3. Use el comando python --version o python3 --version para comprobarlo. Si usa Python 3, asegúrese de que se establece como el comando predeterminado en la máquina o ejecute los scripts siguientes con el comando "python3" en lugar de "python".

  • El reenviador de registros debe tener habilitada el demonio de syslog-ng o rsyslog.

  • Para conocer los requisitos de espacio para el reenviador de registros, consulte Punto de referencia de rendimiento de Azure Monitor Agent. También puede revisar esta entrada de blog, que incluye diseños para la ingesta escalable.

  • Los orígenes de registro (los dispositivos y dispositivos de seguridad) deben configurarse para enviar sus mensajes de registro al demonio de Syslog del reenviador de registros en lugar de a su demonio de Syslog local.

Evitar la duplicación de ingesta de datos

El uso de la misma facilidad para los mensajes Syslog y CEF puede dar lugar a la duplicación de ingesta de datos entre las tablas CommonSecurityLog y Syslog.

Para evitar esta situación, usa uno de estos métodos:

  • Si el dispositivo de origen permite la configuración de la instalación de destino: en cada máquina de origen que envía registros al reenviador de registros en formato CEF, edita el archivo de configuración de Syslog para eliminar las instalaciones utilizadas y así enviar mensajes CEF. De esta forma, las instalaciones que se envían en CEF no se enviarán también en Syslog. Asegúrate de que cada DCR que configures en los siguientes pasos utilice la función correspondiente para CEF o Syslog, respectivamente.

    Para ver un ejemplo de cómo organizar un DCR para ingerir mensajes de Syslog y CEF del mismo agente, vaya a Flujos de Syslog y CEF en el mismo DCR más adelante en este artículo.

  • Si no se puede aplicar el cambio de instalación en el dispositivo de origen: use una transformación de tiempo de ingesta para filtrar los mensajes CEF del flujo de Syslog y evitar la duplicación, tal y como se muestra en el ejemplo de consulta abajo. Los datos se enviarán dos veces desde la máquina del recopilador al área de trabajo.

    source |
    where ProcessName !contains "CEF"
    

Reenviador de registros: consideraciones de seguridad

Asegúrese de configurar la seguridad de la máquina de acuerdo con la directiva de seguridad de su organización. Por ejemplo, puede configurar la red para que se alinee con la directiva de seguridad de la red corporativa y cambiar los puertos y protocolos del demonio para que se adapten a sus requisitos. Para mejorar la configuración de seguridad de la máquina, proteja la máquina virtual en Azure o revise estos procedimientos recomendados para la seguridad de red.

Si los dispositivos envían registros de Syslog y CEF sobre TLS (por ejemplo, porque el reenviador de registros está en la nube), deberá configurar el demonio de Syslog (rsyslog o syslog-ng) para que se comunique en TLS:

Instalación del AMA y creación de una regla de recopilación de datos (DCR)

Puede realizar este paso de dos maneras:

  • Implemente y configure el conector de datos Syslog a través de AMA en el portal de Microsoft Sentinel. Con esta configuración, puede crear, administrar y eliminar controladores de dominio por área de trabajo. El AMA se instalará automáticamente en las máquinas virtuales que seleccione en la configuración del conector.
    —O—
  • Enviar solicitudes HTTP a la API de ingestión de registros. Con esta configuración, puede crear, administrar y eliminar varios controladores de dominio. Esta opción es más flexible que el portal. Por ejemplo, con la API, puede filtrar por niveles de registro específicos, donde con la interfaz de usuario, solo puede seleccionar un nivel de registro mínimo. El inconveniente es que tiene que instalar manualmente el agente de Azure Monitor en el reenviador de registros antes de crear una DCR.

Seleccione a continuación la pestaña correspondiente para ver las instrucciones de cada forma.

Abra la página del conector e inicie el asistente de DCR

  1. Abra Azure Portal y vaya al servicio Microsoft Sentinel.

  2. Seleccione Conectores de datos en el menú de navegación

  3. Escriba Syslog en el cuadro Buscar. En los resultados, seleccione el conectorSyslog a través de AMA.

  4. Seleccione Abrir página del conector en el panel de detalles.

  5. En el área Configuración, seleccione +Crear regla de recopilación de datos.

    Screenshot showing the CEF via AMA connector page.

  6. En la pestaña Básico:

    • Escriba un nombre de DCR.
    • Seleccione su suscripción.
    • Seleccione el grupo de recursos en el que se encuentra su DCR.

    Screenshot showing the DCR details in the Basic tab.

  7. Seleccione Siguiente: Recursos>.

Definición de recursos (VM)

En la pestaña Recursos, seleccione las máquinas en las que desea instalar el AMA, en este caso, la máquina del reenviador de registro. (Si el reenviador de registros no aparece en la lista, es posible que no tenga instalado el agente de Azure Connected Machine).

  1. Use los filtros disponibles o el cuadro de búsqueda para buscar la máquina virtual del reenviador de registro. Puede expandir una suscripción en la lista para ver sus grupos de recursos y un grupo de recursos para ver sus máquinas virtuales.

  2. Seleccione la máquina virtual del reenviador de registros en la que desea instalar el AMA. (La casilla aparecerá junto al nombre de la máquina virtual al mantener el puntero sobre ella).

    Screenshot showing how to select resources when setting up the DCR.

  3. Revise los cambios y seleccione Siguiente: Recopilar >.

Seleccione las instalaciones y las gravedades y cree la DCR

Nota:

El uso de la misma facilidad para los mensajes Syslog y CEF puede dar lugar a la duplicación de ingesta de datos. Aprenda a evitar la duplicación de ingesta de datos.

  1. En la pestaña Recopilar, seleccione el nivel de registro mínimo para cada instalación. Al seleccionar un nivel de registro, Microsoft Sentinel recopila registros para el nivel seleccionado y otros niveles con una gravedad mayor. Por ejemplo, si selecciona LOG_ERR, Microsoft Sentinel recopila registros para los niveles LOG_ERR, LOG_CRIT, LOG_ALERT, y LOG_EMERG.

    Screenshot showing how to select log levels when setting up the DCR.

  2. Revise las selecciones y seleccione Siguiente: Revisar y crear.

  3. En la pestaña Revisar y crear, seleccione Crear.

    Screenshot showing how to review the configuration of the DCR and create it.

  • El conector instalará el agente de Azure Monitor en las máquinas que seleccionó al crear la DCR.

  • Verá las notificaciones de Azure Portal cuando se cree la DCR y el agente esté instalado.

  • Seleccione Actualizar en la página del conector para ver la DCR que se muestra en la lista.

Ejemplos de secciones de instalaciones y niveles de registro

Revise estos ejemplos de la configuración de las instalaciones y los niveles de registro. El campo name incluye el nombre del filtro.

Para la ingesta de mensajes CEF, el valor de "streams" debe ser "Microsoft-CommonSecurityLog" en lugar de "Microsoft-Syslog".

En este ejemplo se recopilan eventos de las instalaciones cron, daemon, local0, local3 y uucp, con los niveles de registro Warning, Error, Critical, Alert y Emergency:

    "dataSources": {
      "syslog": [
        {
        "name": "SyslogStream0",
        "streams": [
          "Microsoft-Syslog"
        ],
        "facilityNames": [ 
          "cron",
          "daemon",
          "local0",
          "local3", 
          "uucp"
        ],
        "logLevels": [ 
          "Warning", 
          "Error", 
          "Critical", 
          "Alert", 
          "Emergency"
        ]
      }
    ]
  }
Flujos de Syslog y CEF en el mismo DCR

En este ejemplo se muestra cómo se pueden recopilar mensajes de Syslog y CEF en el mismo DCR.

Consulte Evitar la duplicación de la ingesta de datos más arriba en este artículo para obtener más información sobre los pasos que se deben seguir al ingerir mensajes de Syslog y CEF mediante un único agente y DCR.

El DCR recopila mensajes de eventos CEF para:

  • Las instalaciones authpriv y mark con los niveles de registro Info, Notice, Warning, Error, Critical, Alert, y Emergency
  • La instalación daemon con los niveles de registro Warning, Error, Critical, Alert y Emergency

Recopila mensajes de eventos de Syslog para:

  • Los niveles de registro kern, local0, local5 y news con los niveles de registro Critical, Alert y Emergency
  • Las instalaciones mail y uucp con el nivel de registro Emergency
    "dataSources": {
      "syslog": [
        {
          "name": "CEFStream1",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "authpriv", 
            "mark"
          ],
          "logLevels": [
            "Info",
            "Notice", 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "CEFStream2",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "daemon"
          ],
          "logLevels": [ 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream3",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "kern",
            "local0",
            "local5", 
            "news"
          ],
          "logLevels": [ 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream4",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "mail",
            "uucp"
          ],
          "logLevels": [ 
            "Emergency"
          ]
        }
      ]
    }

Ejecución del script de “instalación”

El script de "instalación" no instala realmente nada, pero configura el demonio de Syslog en el reenviador de registros correctamente para recopilar los registros.

  1. En la página del conector, copie la línea de comandos que aparece en Ejecutar el siguiente comando para instalar y aplicar el recopilador CEF: seleccionando el icono copiar situado junto a él.

    Screenshot of command line on connector page.

    También puede copiarlo desde aquí:

    sudo wget -O Forwarder_AMA_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Forwarder_AMA_installer.py&&sudo python Forwarder_AMA_installer.py
    
  2. Inicie sesión en la máquina del reenviador de registros donde acaba de instalar el AMA.

  3. Pegue el comando que copió en el último paso para iniciar el script de instalación.
    El script configura el demonio de rsyslog o syslog-ng para usar el protocolo necesario y reinicia el demonio. El script abre el puerto 514 para escuchar los mensajes entrantes en los protocolos UDP y TCP. Para cambiar esta configuración, consulte el archivo de configuración del demonio de Syslog según el tipo de demonio que se ejecuta en la máquina:

    • Rsyslog: /etc/rsyslog.conf
    • Syslog-ng: /etc/syslog-ng/syslog-ng.conf

    Nota:

    Para evitar escenarios de disco completo en los que el agente no puede funcionar, se recomienda establecer la configuración de syslog-ng o rsyslog en no almacenar los registros innecesarios. Un escenario de disco completo interrumpe la función del conector de AMA instalado. Obtenga más información sobre RSyslog o Syslog-ng.

Prueba del conector

  1. Para validar que el demonio de syslog se ejecuta en el puerto UDP y que AMA está escuchando, ejecute este comando:

    netstat -lnptv
    

    Debería ver el demonio rsyslog o syslog-ng escuchando en el puerto 514.

  2. Para capturar mensajes enviados desde un registrador o un dispositivo conectado, ejecute este comando en segundo plano:

    tcpdump -i any port 514 -A -vv &
    
  3. Después de completar la validación, se recomienda detener tcpdump: Type fg y, a continuación, seleccione Ctrl+C.

  4. Para enviar mensajes de demostración, realice una de las siguientes acciones:

    • Use la utilidad netcat. En este ejemplo, la utilidad lee los datos publicados a través del comando echo con el modificador de nueva línea desactivado. A continuación, la utilidad escribe los datos en el puerto UDP 514 en el host local sin tiempo de espera. Para ejecutar la utilidad netcat, es posible que tenga que instalar un paquete adicional.

      echo -n "<164>CEF:0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time" | nc -u -w0 localhost 514
      
    • Use el registrador. En este ejemplo se escribe el mensaje en la instalación local 4, en el nivel de gravedad Warning, en el puerto 514, en el host local, en el formato RFC CEF. Las marcas -t y --rfc3164 se usan para cumplir con el formato RFC esperado.

      logger -p local4.warn -P 514 -n 127.0.0.1 --rfc3164 -t CEF "0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time"
      
  5. Para comprobar que el conector está instalado correctamente, ejecute el script de solución de problemas con uno de estos comandos:

    • Para los registros CEF, ejecute:

       sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef
      
    • Para los registros de Cisco Adaptive Security Appliance (ASA), ejecute:

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --asa
      
    • Para los registros de Cisco Firepower Threat Defense (FTD), ejecute:

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --ftd