Recoger registros de McAfee Firewall Enterprise
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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- 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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- 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
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre un terminal con privilegios de superusuario o sudo.
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
- Para ver otras opciones de instalación, consulta esta guía de instalación.
Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps
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).
- Busca el archivo
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
Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
Sustituye
<customer_id>
por el ID de cliente real.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
- Inicia sesión en la consola de McAfee ESM.
- Ve a Propiedades del sistema > Reenvío de eventos.
- Haga clic en Añadir para crear una regla de reenvío de syslog.
- 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.
- Haz clic en Guardar.
- 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.