Recoger registros CEF de ArcSight
En este documento se explica cómo ingerir registros CEF (Common Event Format) de ArcSight en Google Security Operations mediante Bindplane. El analizador transforma los datos sin procesar en un formato estructurado de modelo de datos unificado (UDM). Extrae campos de los encabezados y las extensiones de CEF, los asigna a campos de UDM y aplica una lógica específica para clasificar eventos como inicios de sesión de usuarios, conexiones de red y accesos a recursos en función de la información extraída.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Un host Windows 2016 o posterior, o un host Linux con
systemd
- Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
- ArcSight SmartConnector 8.4 (o una versión posterior) instalado en un host con acceso de red al agente de Bindplane
- Acceso privilegiado al portal de OpenText
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á 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
Instala el agente de Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.
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 más opciones de instalación, consulta la 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 the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'ARCSIGHT_CEF' raw_log_field: body ingestion_labels: 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 donde 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
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Descargar ArcSight SmartConnector
- Inicia sesión en el portal de asistencia de OpenText.
- Busca y descarga el SmartConnector de ArcSight más reciente para Linux.
- Nombre de archivo de ejemplo:
ArcSight-Connector-Linux64-8.4.0.8499.0.bin
.
Instalar ArcSight SmartConnector
Sube el archivo
.bin
al servidor de Smart Connector:scp ArcSight-Connector-Linux64-8.4.0.8499.0.bin user@your-smartconnector-host:/tmp
Inicia sesión en el servidor SmartConnector mediante SSH y ejecuta el siguiente comando:
cd /tmp chmod +x ArcSight-Connector-Linux64-8.4.0.8499.0.bin ./ArcSight-Connector-Linux64-8.4.0.8499.0.bin
Sigue el instalador interactivo:
- Selecciona el directorio de instalación (por ejemplo,
/opt/arcsight/connectors/current
). - Acepta la licencia.
- Seleccione Instalar conector cuando se le solicite.
- Selecciona el directorio de instalación (por ejemplo,
Configurar ArcSight SmartConnector para enviar CEF a Syslog
En el host de SmartConnector, inicia el asistente de destino:
cd /opt/arcsight/connectors/current/bin ./arcsight connectors
En el asistente, haz lo siguiente:
- Seleccione Añadir destino.
- Selecciona Syslog de CEF.
Proporciona los siguientes detalles de configuración:
- Host/IP: introduce la dirección IP del agente de Bindplane.
- Puerto: introduce el número de puerto de tu agente de Bindplane.
- Protocolo: selecciona UDP.
Completa la configuración y reinicia el conector:
./arcsight agents
Ejecuta una comprobación de la conectividad (por ejemplo, busca
Successfully connected to syslog: X.X.X.X:514
).tail -f /opt/arcsight/connectors/current/logs/agent.log
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
actuar | security_result.action_details | Se asigna directamente desde el campo act . |
agt | principal.ip | Se asigna directamente desde el campo agt . |
agt | principal.asset.ip | Se asigna directamente desde el campo agt . |
aplicación | network.application_protocol | Se asigna directamente desde el campo app . |
imagen | metadata.event_timestamp.seconds | Se asigna directamente desde el campo art . |
cs2 | additional.fields.value.string_value | Se asigna directamente desde el campo cs2 cuando cs2Label es EventlogCategory . |
cs2Label | additional.fields.key | Se asigna directamente desde el campo cs2Label cuando su valor es EventlogCategory . |
cs3 | additional.fields.value.string_value | Se asigna directamente desde el campo cs3 cuando cs3Label es Process ID . |
cs3Label | additional.fields.key | Se asigna directamente desde el campo cs3Label cuando su valor es Process ID . |
cs5 | additional.fields.value.string_value | Se asigna directamente desde el campo cs5 cuando cs5Label es Authentication Package Name . |
cs5Label | additional.fields.key | Se asigna directamente desde el campo cs5Label cuando su valor es Authentication Package Name . |
cs6 | additional.fields.value.string_value | Se asigna directamente desde el campo cs6 cuando cs6Label es Logon GUID . |
cs6Label | additional.fields.key | Se asigna directamente desde el campo cs6Label cuando su valor es Logon GUID . |
dhost | about.hostname | Se asigna directamente desde el campo dhost . |
dhost | target.hostname | Se asigna directamente desde el campo dhost . |
dntdom | about.administrative_domain | Se asigna directamente desde el campo dntdom . |
dntdom | target.administrative_domain | Se asigna directamente desde el campo dntdom . |
dproc | about.process.command_line | Se asigna directamente desde el campo dproc . |
dproc | target.process.command_line | Se asigna directamente desde el campo dproc . |
dst | principal.ip | Se asigna directamente desde el campo dst . |
dst | principal.asset.ip | Se asigna directamente desde el campo dst . |
dst | target.ip | Se asigna directamente desde el campo dst . |
duid | target.user.userid | Se asigna directamente desde el campo duid . |
duser | target.user.user_display_name | Se asigna directamente desde el campo duser . |
dvc | about.ip | Se asigna directamente desde el campo dvc . |
dvchost | about.hostname | Se asigna directamente desde el campo dvchost . |
eventId | additional.fields.value.string_value | Se asigna directamente desde el campo eventId . |
externalId | metadata.product_log_id | Se asigna directamente desde el campo externalId . |
fname | additional.fields.value.string_value | Se asigna directamente desde el campo fname . |
msg | metadata.description | Se asigna directamente desde el campo msg . |
proto | network.ip_protocol | Se asigna directamente desde el campo proto . Traduce los nombres de los protocolos a sus respectivas constantes (por ejemplo, tcp a TCP ). |
rt | metadata.event_timestamp.seconds | Se asigna directamente desde el campo rt . |
shost | about.hostname | Se asigna directamente desde el campo shost . |
shost | principal.hostname | Se asigna directamente desde el campo shost . |
src | principal.ip | Se asigna directamente desde el campo src . |
src | principal.asset.ip | Se asigna directamente desde el campo src . |
src | target.ip | Se asigna directamente desde el campo src . |
sproc | principal.process.command_line | Se asigna directamente desde el campo sproc . |
spt | principal.port | Se asigna directamente desde el campo spt . |
spt | target.port | Se asigna directamente desde el campo spt . |
additional.EventRecordID | additional.fields.value.string_value | Se asigna directamente desde el campo ad.EventRecordID . |
additional.ThreadID | additional.fields.value.string_value | Se asigna directamente desde el campo ad.ThreadID . |
additional.Opcode | additional.fields.value.string_value | Se asigna directamente desde el campo ad.Opcode . |
additional.ProcessID | additional.fields.value.string_value | Se asigna directamente desde el campo ad.ProcessID . |
additional.TargetDomainName | additional.fields.value.string_value | Se asigna directamente desde el campo ad.TargetDomainName . |
additional.Version | additional.fields.value.string_value | Se asigna directamente desde el campo ad.Version . |
deviceExternalId | about.asset.hardware.serial_number | Se asigna directamente desde el campo deviceExternalId . |
deviceInboundInterface | additional.fields.value.string_value | Se asigna directamente desde el campo deviceInboundInterface . |
deviceOutboundInterface | additional.fields.value.string_value | Se asigna directamente desde el campo deviceOutboundInterface . |
PanOSConfigVersion | security_result.detection_fields.value | Se asigna directamente desde el campo PanOSConfigVersion . |
PanOSContentVersion | security_result.detection_fields.value | Se asigna directamente desde el campo PanOSContentVersion . |
PanOSDGHierarchyLevel1 | security_result.detection_fields.value | Se asigna directamente desde el campo PanOSDGHierarchyLevel1 . |
PanOSDestinationLocation | target.location.country_or_region | Se asigna directamente desde el campo PanOSDestinationLocation . |
PanOSRuleUUID | metadata.product_log_id | Se asigna directamente desde el campo PanOSRuleUUID . |
PanOSThreatCategory | security_result.category_details | Se asigna directamente desde el campo PanOSThreatCategory . |
PanOSThreatID | security_result.threat_id | Se asigna directamente desde el campo PanOSThreatID . |
about.asset.asset_id | Se genera concatenando Palo Alto Networks. , el nombre del proveedor (LF ) y el campo deviceExternalId . |
|
extensions.auth.type | Asigna el valor AUTHTYPE_UNSPECIFIED si el campo event_name contiene logged on . |
|
metadata.description | Si el campo description contiene by seguido de una dirección IP, la dirección IP se extrae y se asigna a principal.ip y principal.asset.ip . |
|
metadata.event_type | Se determina en función de una serie de comprobaciones condicionales en varios campos, incluidos event_name , principal_* , target_* y device_event_class_id . La lógica determina el tipo de evento más adecuado en función de la información disponible. |
|
metadata.log_type | Su valor debe ser ARCSIGHT_CEF . |
|
metadata.product_event_type | Se genera concatenando \[ , the device_event_class_id field, \] - y el campo name . |
|
metadata.product_name | Se asigna el valor NGFW si el campo product_name es LF . |
|
principal.asset.ip | Si el campo description contiene by seguido de una dirección IP, la dirección IP se extrae y se asigna a principal.ip y principal.asset.ip . |
|
principal.ip | Si el campo description contiene by seguido de una dirección IP, la dirección IP se extrae y se asigna a principal.ip y principal.asset.ip . |
|
security_result.action | Se le asigna el valor ALLOW si el campo act es alert . De lo contrario, se le asigna el valor BLOCK . |
|
security_result.severity | Se asigna el valor HIGH si el campo sev es mayor o igual que 7. De lo contrario, se asigna el valor LOW . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.