Recoger registros de Cisco Stealthwatch
En este documento se explica cómo recoger registros de Cisco Secure Network Analytics (antes Stealthwatch) en Google Security Operations mediante Bindplane. El analizador gestiona dos formatos de registros de Cisco Stealthwatch: uno con información de IP y paquetes de cliente/servidor, y otro con ID de dispositivo y recuentos de bytes. Extrae campos, los convierte a los tipos de datos adecuados, los asigna al UDM y define campos de metadatos como el proveedor, el producto y el tipo de evento en función del contenido y el formato del registro.
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 Cisco Stealthwatch.
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
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 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: '/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 ingestion_labels: log_type: CISCO_STEALTHWATCH 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
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
Configurar Syslog de Cisco Secure Network Analytics (antes Stealthwatch)
- Inicia sesión en la interfaz de usuario web de la consola de gestión.
- Ve a Configuración > Gestión de respuestas.
Editar formato de syslog:
- Nombre: introduce un nombre para el formato syslog.
- Descripción: proporciona una descripción del formato.
- Residencia:
Local 0
- Gravedad: se ha asignado el valor
Informational
. - En el campo Mensaje, pega el siguiente formato:
Lancope|StealthWatch|time|{time}|target_hostname|{target_hostname}|alarm_severity_id|{alarm_severity_id}|alarm_type_id|{alarm_type_id}|alarm_type_description|{alarm_type_description}|port|{port}|target_ip|{target_ip}|target_mac_address|{target_mac_address}|target_label|{target_label}|alarm_type_name|{alarm_type_name}|source_hostname|{source_hostname}|source_ip|{source_ip}|source_mac_address|{source_mac_address}|source_username|{source_username}|device_ip|{device_ip}|device_name|{device_name}|details|{details}|protocol|{protocol}|alarm_id|{alarm_id}|alarm_category_name|{alarm_category_name}|start_active_time|{start_active_time}| end_active_time|{end_active_time}
Haz clic en Aceptar.
Ve a Gestión de respuestas > Acciones > Añadir mensaje Syslog.
Configura el reenviador de Syslog:
- Nombre: introduce el nombre del reenviador de Google SecOps Bindplane.
- Descripción: introduce la descripción del reenviador de Bindplane de Google SecOps.
- Dirección IP: introduce la dirección IP del agente de Bindplane.
- Puerto: introduce el número de puerto del agente de Bindplane; por ejemplo,
514
. - Formato: selecciona el formato que has creado en el paso 3.
Haz clic en Aceptar.
Configurar nombres de reglas para Cisco Secure Network Analytics (antes Stealthwatch)
- Ve a Configuración > Gestión de respuestas.
- Selecciona Reglas > Añadir > Alarmas del sistema SMC.
- Haz clic en Aceptar.
- En el cuadro de diálogo Tipos de reglas, selecciona una regla.
- Haz clic en Aceptar.
- En el cuadro de diálogo Regla, haz lo siguiente:
- Nombre: introduce un nombre para la regla.
- Esta regla se activa si: selecciona Cualquiera, Gravedad e Informativa en las listas correspondientes.
- Haz clic en Aceptar.
- Seleccione Acciones > Añadir.
- Selecciona la acción que hayas creado anteriormente.
- Haz clic en Aceptar y, a continuación, en Aceptar.
- Repite los pasos anteriores para cambiar el nombre de las tres opciones siguientes de la sección Regla:
- Mecanismo de recogida de registros admitido: Syslog
- Mecanismo de recogida de registros preferido: Syslog
- Diagrama lógico del flujo de eventos: servidor Syslog remoto de SMC
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Alarm_ID |
additional.fields[?key=='Alarm_ID'].value.string_value |
El valor de Alarm_ID del registro sin procesar se coloca en una estructura additional.fields anidada en la clave Alarm_ID . |
ClientBytes |
network.sent_bytes |
ClientBytes del registro sin procesar se convierte en un número entero sin signo y se asigna. |
ClientIP |
principal.ip |
Se asigna ClientIP del registro sin procesar. |
ClientPort |
principal.port |
ClientPort del registro sin procesar se convierte en un número entero y se asigna. |
CPayload |
Sin asignar | Este campo no se usa en el UDM final. |
DestIPv4Address |
target.ip |
Se asigna DestIPv4Address del registro sin procesar. |
DestPort |
target.port |
DestPort del registro sin procesar se convierte en un número entero y se asigna. |
details |
security_result.summary |
Se asigna el valor de details del registro sin procesar, con las comillas dobles eliminadas. |
FC |
intermediary.ip |
Se asigna FC del registro sin procesar. |
host.country |
principal.location.country_or_region |
Se asigna host.country del registro sin procesar. |
host.hostGroupNames |
about.group.group_display_name |
A cada elemento de la matriz host.hostGroupNames del registro sin procesar se le añade el prefijo host: y se asigna como un objeto about independiente. |
host.ipAddress |
principal.ip |
Se asigna host.ipAddress del registro sin procesar. |
hostBytes |
network.sent_bytes |
hostBytes del registro sin procesar se convierte en un número entero sin signo y se asigna. |
InPackets |
additional.fields[?key=='InPackets'].value.string_value |
El valor de InPackets del registro sin procesar se coloca en una estructura additional.fields anidada en la clave InPackets . |
inputSNMPIface |
additional.fields[?key=='inputSNMPIface'].value.string_value |
El valor de inputSNMPIface del registro sin procesar se coloca en una estructura additional.fields anidada en la clave inputSNMPIface . |
LastTime |
Sin asignar | En algunos casos, este campo se analiza para obtener la marca de tiempo del evento, pero no se asigna directamente al UDM. |
MessageSourceAddress |
principal.ip |
Se asigna MessageSourceAddress del registro sin procesar. |
method |
network.http.method |
Se asigna method del registro sin procesar. |
outputSNMPIface |
additional.fields[?key=='outputSNMPIface'].value.string_value |
El valor de outputSNMPIface del registro sin procesar se coloca en una estructura additional.fields anidada en la clave outputSNMPIface . |
PAAppID |
Sin asignar | Este campo no se usa en el UDM final. |
peer.country |
target.location.country_or_region |
Se asigna peer.country del registro sin procesar. |
peer.hostGroupNames |
about.group.group_display_name |
A cada elemento de la matriz peer.hostGroupNames del registro sin procesar se le añade el prefijo peer: y se asigna como un objeto about independiente. |
peer.ipAddress |
target.ip |
Se asigna peer.ipAddress del registro sin procesar. |
peerBytes |
network.received_bytes |
peerBytes del registro sin procesar se convierte en un número entero sin signo y se asigna. |
peerPackets |
Sin asignar | Este campo no se usa en el UDM final. |
Protocol |
Sin asignar | Este campo se analiza para determinar el network.ip_protocol , pero no se asigna directamente. |
ProtocolIdentifier |
Sin asignar | Este campo se usa para obtener network.ip_protocol , pero no se asigna directamente. |
reportName |
metadata.product_event_type |
Se asigna reportName del registro sin procesar. |
ServerBytes |
network.received_bytes |
ServerBytes del registro sin procesar se convierte en un número entero sin signo y se asigna. |
ServerIP |
target.ip |
Se asigna ServerIP del registro sin procesar. |
ServerPort |
target.port |
ServerPort del registro sin procesar se convierte en un número entero y se asigna. |
Service |
Sin asignar | Este campo no se usa en el UDM final. |
sid |
target.user.windows_sid |
Se asigna sid del registro sin procesar. |
SourceModuleName |
target.resource.name |
Se asigna SourceModuleName del registro sin procesar. |
SourceModuleType |
observer.application |
Se asigna SourceModuleType del registro sin procesar. |
SourcePort |
principal.port |
SourcePort del registro sin procesar se convierte en un número entero y se asigna. |
sourceIPv4Address |
principal.ip |
Se asigna sourceIPv4Address del registro sin procesar. |
SPayload |
Sin asignar | Este campo no se usa en el UDM final. |
src_ip |
principal.ip |
Se asigna src_ip del registro sin procesar. |
StartTime |
Sin asignar | En algunos casos, este campo se analiza para obtener la marca de tiempo del evento, pero no se asigna directamente al UDM. |
time |
Sin asignar | En algunos casos, este campo se analiza para obtener la marca de tiempo del evento, pero no se asigna directamente al UDM. |
timestamp |
Sin asignar | Este campo se analiza para obtener la marca de tiempo del evento, pero no se asigna directamente al UDM. |
UserName |
principal.user.user_display_name |
Se asigna UserName del registro sin procesar. |
Version |
metadata.product_version |
Version del registro sin procesar se convierte en una cadena y se asigna. |
N/A | metadata.event_timestamp |
La marca de tiempo del evento se obtiene de varios campos (LastTime , time , timestamp y StartTime ) en función del formato del registro o del campo create_time si no hay ninguna otra marca de tiempo disponible. |
N/A | metadata.log_type |
Siempre debe tener el valor CISCO_STEALTHWATCH . |
N/A | metadata.vendor_name |
Siempre debe tener el valor Cisco . |
N/A | metadata.event_type |
Determinado por la lógica del analizador en función del contenido del registro. Puede ser NETWORK_CONNECTION , USER_STATS , USER_UNCATEGORIZED , FILE_OPEN , FILE_DELETION o FILE_UNCATEGORIZED . |
N/A | network.ip_protocol |
Determinado por la lógica del analizador en función de los campos Protocol o ProtocolIdentifier . Puede ser TCP , UDP o ICMP . |
action |
security_result.action_details |
Se asigna el valor de action del registro sin procesar. |
action |
security_result.action |
Derivado del campo action . Si action es SUCCESS , este campo se define como ALLOW . De lo contrario, se define como BLOCK . |
category |
security_result.category_details |
Se asigna el valor de category del registro sin procesar. |
description |
security_result.description |
Si description y file_type están presentes en el registro sin procesar, se concatenan y se asignan. |
desc |
metadata.description |
Se asigna el valor de desc del registro sin procesar, con las comillas dobles eliminadas. |
failuer_reason |
security_result.summary |
Si failuer_reason y file_type están presentes en el registro sin procesar, se concatenan y se asignan. |
file_path |
target.file.full_path |
Se asigna file_path del registro sin procesar. |
file_type |
target.file.mime_type |
Se asigna file_type del registro sin procesar. |
hostname |
principal.hostname |
Se asigna hostname del registro sin procesar. |
ip |
principal.ip |
Se asigna ip del registro sin procesar. |
ipf |
intermediary.ip |
Se asigna ipf del registro sin procesar. |
ipt |
target.ip |
Se asigna ipt del registro sin procesar. |
process_id |
target.process.pid |
Se asigna process_id del registro sin procesar. |
protocol |
network.application_protocol |
Se asigna protocol del registro sin procesar. |
security_res.severity |
security_result.severity |
Si severity es Minor , este campo se define como INFORMATIONAL . Si severity es Major , se define como ERROR . |
session_id |
network.session_id |
Se asigna session_id del registro sin procesar. |
severity |
Sin asignar | Este campo se usa para obtener security_result.severity , pero no se asigna directamente. |
Source_HG |
principal.location.country_or_region |
Se asigna Source_HG del registro sin procesar. |
Source_HostSnapshot |
principal.url |
Se asigna Source_HostSnapshot del registro sin procesar. |
Target_HostSnapshot |
target.url |
Se asigna Target_HostSnapshot del registro sin procesar. |
user_name |
principal.user.userid |
Se asigna user_name del registro sin procesar. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.