Recopila registros de McAfee Firewall Enterprise

Compatible con:

En este documento, se describe cómo puedes recopilar registros de McAfee Firewall Enterprise. El código del analizador primero extrae campos con una serie de patrones de Grok y controla los formatos SYSLOG y JSON. Luego, según la categoría de registro identificada, aplica patrones de Grok y extracciones de par clave-valor específicos para asignar los datos al esquema de UDM de Google Security Operations.

Antes de comenzar

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

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.

Obtén el ID de cliente de Google SecOps

  1. Accede a 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.

Instala el agente de BindPlane

Instalación de Windows

  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 una terminal con privilegios de raíz 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

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    • Ubica el archivo config.yaml. Por lo general, 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. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

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

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de transferencia 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 Services o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura McAfee ESM para reenviar Syslog

  1. Accede a la consola de McAfee ESM.
  2. Ve a Propiedades del sistema > Reenvío de eventos.
  3. Haz clic en Agregar para crear una nueva regla de reenvío de syslog.
  4. Establece la siguiente configuración:
    • Nombre: Ingresa un nombre descriptivo (por ejemplo, Reenvío de Google SecOps).
    • Dirección IP de destino: Ingresa la IP de tu servidor Syslog (o agente de BindPlane).
    • Puerto de destino: Usa 514 para UDP (puedes especificar otro puerto, según la configuración de tu servidor de 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 (formato de evento común) o ASCII (formato recomendado para los registros de McAfee).
    • Filtros: Define los tipos de eventos que deseas reenviar, por ejemplo, registros de firewall, eventos de autenticación o detecciones de amenazas.
  5. Haz clic en Guardar.
  6. Reinicia el servicio de McAfee ESM para que se apliquen los cambios.

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" en la carga útil JSON analizada.
gato security_result.category_details El valor se toma del campo "cat" en la carga útil de JSON analizada.
data.AppID target.application El valor se toma del campo "AppID" en la carga útil JSON analizada.
data.Destination_Hostname target.hostname El valor se toma del campo "Destination_Hostname" en la carga útil JSON analizada.
data.Destination_UserID target.user.windows_sid El valor se toma del campo "Destination_UserID" en la carga útil JSON analizada.
data.DomainID target.administrative_domain El valor se toma del campo "DomainID" en la carga útil JSON analizada.
data.dst_ip target.ip El valor se toma del campo "dst_ip" en la carga útil JSON analizada.
data.dst_mac target.mac El valor se toma del campo "dst_mac" en la carga útil JSON analizada.
data.dst_port target.port El valor se toma del campo "dst_port" en la carga útil JSON analizada y se convierte en un número entero.
data.HostID target.hostname El valor se toma del campo "HostID" en la carga útil JSON analizada.
data.norm_sig.name Este campo determina el tipo de evento según su valor.
data.PID target.process.pid El valor se toma del campo "PID" en la carga útil JSON analizada.
data.Process_Name target.process.command_line El valor se toma del campo "Process_Name" en la carga útil JSON analizada.
data.severity security_result.severity El valor se toma del campo "severity" en la carga útil JSON analizada, se convierte en un número entero y se asigna a un nivel de gravedad de la AUA según su valor: BAJO (1-32), MEDIO (33-65), ALTO (66-100).
data.sig.name security_result.description El valor se toma del campo "sig.name" en la carga útil JSON analizada.
data.Source_Logon_ID about.labels.value El valor se toma del campo "Source_Logon_ID" en la carga útil JSON analizada.
data.Source_UserID principal.user.windows_sid El valor se toma del campo "Source_UserID" en la carga útil JSON analizada.
data.src_ip principal.ip El valor se toma del campo "src_ip" en la carga útil JSON analizada.
data.src_mac principal.mac El valor se toma del campo "src_mac" en la carga útil JSON analizada.
data.src_port principal.port El valor se toma del campo "src_port" en 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" en la carga útil JSON analizada.
data.UserIDSrc principal.user.userid El valor se toma del campo "UserIDSrc" en la carga útil JSON analizada.
deviceExternalId about.asset.asset_id El valor se toma del campo "deviceExternalId" en la carga útil JSON analizada y se combina con el nombre del producto para crear un ID de activo único.
deviceTranslatedAddress about.nat_ip El valor se toma del campo "deviceTranslatedAddress" en la carga útil JSON analizada.
DST target.ip El valor se toma del campo "dst" en la carga útil JSON analizada.
dpt target.port El valor se toma del campo "dpt" en 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" en la carga útil JSON analizada.
externalId metadata.product_log_id El valor se toma del campo "externalId" en la carga útil JSON analizada.
Nombre de host principal.hostname El valor se toma del campo "hostname" que extrae el patrón grok.
log_category metadata.log_type El valor se toma del campo "log_category" que extrae el patrón grok.
log_type metadata.product_event_type El valor se toma del campo "log_type" que extrae el patrón grok.
mensaje Este campo se analiza para extraer varios campos según la categoría del registro.
nitroURL Este campo no está asignado al objeto IDM en la UDM.
pid principal.process.pid El valor se toma del campo "pid" que extrae el patrón grok.
process_id about.process.pid El valor se toma del campo "process_id" que extrae el patrón grok.
proto network.ip_protocol El valor se toma del campo "proto" en la carga útil JSON analizada y se asigna al protocolo IP correspondiente.
rhost principal.ip El valor se toma del campo "rhost" que extrae el patrón grok y se analiza como una dirección IP.
shost principal.hostname El valor se toma del campo "shost" en la carga útil JSON analizada.
sntdom principal.administrative_domain El valor se toma del campo "sntdom" en la carga útil JSON analizada.
spt principal.port El valor se toma del campo "spt" en la carga útil JSON analizada y se convierte en un número entero.
src principal.ip El valor se toma del campo "src" en la carga útil JSON analizada.
hora timestamp El valor se toma del campo "time" que extrae el patrón grok y se analiza como una marca de tiempo.
tipo metadata.product_event_type El valor se toma del campo "type" que extrae el filtro kv.
uid principal.user.userid El valor se toma del campo "uid" que extrae el filtro kv.
metadata.event_type metadata.event_type El valor se establece en función del nombre del evento y 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 establece en "NETWORK_CONNECTION". - Si el nombre del evento contiene "Correo electrónico", el tipo de evento se establece en "EMAIL_TRANSACTION". - Si el nombre del evento contiene "HTTP" o "http", el tipo de evento se establece en "NETWORK_HTTP". - Si el nombre del evento contiene "User Accessed" o "denied by access-list", el tipo de evento se establece en "USER_RESOURCE_ACCESS". - Si el nombre del evento contiene "Data Source Idle", el tipo de evento se establece en "STATUS_UPDATE". - Si el nombre del evento contiene "Comm with snowflex", el tipo de evento se establece en "SERVICE_UNSPECIFIED". - Si el nombre del evento contiene "Se accedió correctamente a una cuenta", el tipo de evento se establece en "USER_LOGIN". - Si el nombre del evento contiene "Estado de inicialización para objetos de servicio", el tipo de evento se establece en "GENERIC_EVENT". - Si no se cumple ninguna de las condiciones anteriores, el tipo de evento se establece en "GENERIC_EVENT".
metadata.vendor_name metadata.vendor_name El valor se establece en "MCAFEE".
network.direction network.direction El valor se establece en "INBOUND" si el campo "deviceDirection" en la carga útil de JSON analizada es 0. De lo contrario, se establece como "OUTBOUND".
security_result.severity security_result.severity El valor se establece en "LOW" si el campo "cef_event_severity" en la carga útil de JSON analizada es 1, en "MEDIUM" si es 2, en "HIGH" si es 3 y en "CRITICAL" si es 9.

Cambios

2024-03-21

  • Sin embargo, el analizador se creó recientemente.