Recoger registros de McAfee Firewall Enterprise

Disponible en:

En este documento se describe cómo puede recoger registros de McAfee Firewall Enterprise. El código del analizador primero extrae los campos mediante una serie de patrones Grok, que gestionan los formatos SYSLOG y JSON. A continuación, en función de la categoría de registro identificada, aplica patrones Grok específicos y extracciones de pares clave-valor para asignar los datos al esquema del UDM de Google Security Operations.

Antes de empezar

  • Asegúrate de que tienes una instancia de Google Security Operations.
  • Asegúrate de usar Windows 2016 o una versión posterior, o un host Linux con systemd.
  • Si se ejecuta a través de un proxy, asegúrate de que los puertos del cortafuegos estén abiertos.
  • Asegúrate de que tienes acceso con privilegios a McAfee ESM.

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará el agente de Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instalar el agente de Bindplane

Instalación de ventanas

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre un terminal con privilegios de superusuario o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    • Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    • Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    receivers:
      udplog:
        # Replace with your specific IP and port
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Path to the ingestion authentication file
        creds: '/path/to/your/ingestion-auth.json'
        # Your Chronicle customer ID
        customer_id: 'your_customer_id'
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
          log_type: SYSLOG
          namespace: mcafee_esm
          raw_log_field: body
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  3. Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Sustituye <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.

Reinicia el agente de Bindplane para aplicar los cambios

  • En Linux, para reiniciar el agente de Bindplane, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  • En Windows, para reiniciar el agente de Bindplane, puedes usar la consola Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar McAfee ESM para reenviar Syslog

  1. Inicia sesión en la consola de McAfee ESM.
  2. Ve a Propiedades del sistema > Reenvío de eventos.
  3. Haga clic en Añadir para crear una regla de reenvío de syslog.
  4. Configure los siguientes ajustes:
    • Nombre: introduce un nombre descriptivo (por ejemplo, Reenvío de Google SecOps).
    • Dirección IP de destino: introduce la IP de tu servidor Syslog (o del agente de Bindplane).
    • Puerto de destino: usa 514 para UDP (puedes especificar otro puerto en función de la configuración de tu servidor Syslog o Bindplane).
    • Protocolo: selecciona UDP (las otras opciones son TCP o TLS, según la configuración de tu servidor Syslog o Bindplane).
    • Formato: elige CEF (Common Event Format) o ASCII (formato recomendado para los registros de McAfee).
    • Filtros: define los tipos de eventos que quieres reenviar, como registros de firewall, eventos de autenticación o detecciones de amenazas.
  5. Haz clic en Guardar.
  6. Reinicia el servicio McAfee ESM para que los cambios surtan efecto.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
actuar security_result.action_details El valor se toma del campo "act" de la carga útil JSON analizada.
gato security_result.category_details El valor se toma del campo "cat" de la carga útil JSON analizada.
data.AppID target.application El valor se toma del campo "AppID" de la carga útil JSON analizada.
data.Destination_Hostname target.hostname El valor se toma del campo "Destination_Hostname" de la carga útil JSON analizada.
data.Destination_UserID target.user.windows_sid El valor se toma del campo "Destination_UserID" de la carga útil JSON analizada.
data.DomainID target.administrative_domain El valor se toma del campo "DomainID" de la carga útil JSON analizada.
data.dst_ip target.ip El valor se toma del campo "dst_ip" de la carga útil JSON analizada.
data.dst_mac target.mac El valor se toma del campo "dst_mac" de la carga útil JSON analizada.
data.dst_port target.port El valor se toma del campo "dst_port" de la carga útil JSON analizada y se convierte en un número entero.
data.HostID target.hostname El valor se toma del campo "HostID" de la carga útil JSON analizada.
data.norm_sig.name Este campo determina el tipo de evento en función de su valor.
data.PID target.process.pid El valor se toma del campo "PID" de la carga útil JSON analizada.
data.Process_Name target.process.command_line El valor se toma del campo "Process_Name" de la carga útil JSON analizada.
data.severity security_result.severity El valor se toma del campo "severity" de la carga útil JSON analizada, se convierte en un número entero y se asigna a un nivel de gravedad de UDM en función de su valor: BAJO (1-32), MEDIO (33-65) o ALTO (66-100).
data.sig.name security_result.description El valor se toma del campo "sig.name" de la carga útil JSON analizada.
data.Source_Logon_ID about.labels.value El valor se toma del campo "Source_Logon_ID" de la carga útil JSON analizada.
data.Source_UserID principal.user.windows_sid El valor se toma del campo "Source_UserID" de la carga útil JSON analizada.
data.src_ip principal.ip El valor se toma del campo "src_ip" de la carga útil JSON analizada.
data.src_mac principal.mac El valor se toma del campo "src_mac" de la carga útil JSON analizada.
data.src_port principal.port El valor se toma del campo "src_port" de la carga útil JSON analizada y se convierte en un número entero.
data.UserIDDst target.user.userid El valor se toma del campo "UserIDDst" de la carga útil JSON analizada.
data.UserIDSrc principal.user.userid El valor se toma del campo "UserIDSrc" de la carga útil JSON analizada.
deviceExternalId about.asset.asset_id El valor se toma del campo "deviceExternalId" de la carga útil JSON analizada y se combina con el nombre del producto para crear un ID de recurso único.
deviceTranslatedAddress about.nat_ip El valor se toma del campo "deviceTranslatedAddress" de la carga útil JSON analizada.
dst target.ip El valor se toma del campo "dst" de la carga útil JSON analizada.
dpt target.port El valor se toma del campo "dpt" de la carga útil JSON analizada y se convierte en un número entero.
eventId additional.fields.value.string_value El valor se toma del campo "eventId" de la carga útil JSON analizada.
externalId metadata.product_log_id El valor se toma del campo "externalId" de la carga útil JSON analizada.
nombre de host principal.hostname El valor se toma del campo "hostname" extraído por el patrón grok.
log_category metadata.log_type El valor se toma del campo "log_category" extraído por el patrón grok.
log_type metadata.product_event_type El valor se toma del campo "log_type" extraído por el patrón grok.
mensaje Este campo se analiza para extraer varios campos en función de la categoría del registro.
nitroURL Este campo no está asignado al objeto IDM en el UDM.
pid principal.process.pid El valor se toma del campo "pid" extraído por el patrón grok.
process_id about.process.pid El valor se toma del campo "process_id" extraído por el patrón grok.
proto network.ip_protocol El valor se toma del campo "proto" de la carga útil JSON analizada y se asigna al protocolo IP correspondiente.
rhost principal.ip El valor se toma del campo "rhost" extraído por el patrón grok y se analiza como una dirección IP.
shost principal.hostname El valor se toma del campo "shost" de la carga útil JSON analizada.
sntdom principal.administrative_domain El valor se toma del campo "sntdom" de la carga útil JSON analizada.
spt principal.port El valor se toma del campo "spt" de la carga útil JSON analizada y se convierte en un número entero.
src principal.ip El valor se toma del campo "src" de la carga útil JSON analizada.
Tiempo timestamp El valor se toma del campo "time" extraído por el patrón grok y se analiza como una marca de tiempo.
tipo metadata.product_event_type El valor se toma del campo "type" extraído por el filtro kv.
uid principal.user.userid El valor se toma del campo "uid" extraído por el filtro kv.
metadata.event_type metadata.event_type El valor se asigna en función del nombre del evento y de otros campos del registro. La lógica para determinar el tipo de evento es la siguiente: - Si el nombre del evento contiene "TCP", el tipo de evento se define como "NETWORK_CONNECTION". - Si el nombre del evento contiene "Mail", el tipo de evento se define como "EMAIL_TRANSACTION". - Si el nombre del evento contiene "HTTP" o "http", el tipo de evento se define como "NETWORK_HTTP". - Si el nombre del evento contiene "User Accessed" o "denied by access-list", el tipo de evento se define como "USER_RESOURCE_ACCESS". - Si el nombre del evento contiene "Data Source Idle", el tipo de evento se define como "STATUS_UPDATE". - Si el nombre del evento contiene "Comm with snowflex", el tipo de evento se define como "SERVICE_UNSPECIFIED". - Si el nombre del evento contiene "An account was successfully logged on" (Se ha iniciado sesión correctamente en una cuenta), el tipo de evento se define como "USER_LOGIN". - Si el nombre del evento contiene "Initialization status for service objects", el tipo de evento se define como "GENERIC_EVENT". - Si no se cumple ninguna de las condiciones anteriores, el tipo de evento se define como "GENERIC_EVENT".
metadata.vendor_name metadata.vendor_name El valor es "MCAFEE".
network.direction network.direction El valor se asigna a "INBOUND" si el campo "deviceDirection" de la carga útil JSON analizada es 0. De lo contrario, se le asigna el valor "OUTBOUND".
security_result.severity security_result.severity El valor es "LOW" si el campo "cef_event_severity" de la carga útil JSON analizada es 1, "MEDIUM" si es 2, "HIGH" si es 3 y "CRITICAL" si es 9.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.