Recopila registros de IBM Security Verify Access
En este documento, se describe cómo puedes recopilar registros de IBM Security Verify Access. El analizador extrae campos comunes, como marcas de tiempo, nombres de host y descripciones, con patrones de Grok. Luego, aprovecha el análisis XML para obtener información detallada del evento incorporada en el campo de descripción y, en última instancia, asigna los datos extraídos al modelo de datos unificado (UDM) para la representación estandarizada de eventos de seguridad.
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 de administrador a IBM Security Verify Access (ISVA).
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- 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
- Accede a 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.
Instala el agente de BindPlane
Instalación de Windows
- 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 una terminal con privilegios de raíz 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 obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
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).
- Ubica el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: udplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: ibm_security_verify raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
Reemplaza
<customer_id>
por el ID de cliente real.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
Personaliza el formato de registro
- Para editar el archivo de configuración
WebSEAL
, usa la interfaz de administración local (LMI) del dispositivo. - En la LMI, ve a Administración de proxy inverso.
- Haz clic en Administrar > Configuración > Editar archivo de configuración (puedes usar el editor para editar directamente el archivo de configuración
WebSEAL
). - Ve a logging[stanza], busca
syntax requests = {yes|no}
y haz clic en Sí. - Ve al parámetro
gmt-time
y edítalo de la siguiente manera:gmt-time = yes
. Reemplaza request-log-format por lo siguiente:
request-log-format = ibmsva: %h %l "%u" %t "%r" %s %b %T %j %{X-Forwarded-For}i %a %A %H %p %m %U %v %d %q
Consulta la siguiente explicación de cada directiva:
ibmsva:
Identifica los registros del dispositivo SVA.%h
: Host remoto%l
: Nombre de registro remoto%u
: Usuario remoto%t
: Hora y fecha en formato CLF%r
: Primera línea de la solicitud%s
: Estado de la respuesta%b
: Bytes en la respuesta (sin incluir los encabezados HTTP)%T
: Es el tiempo de entrega de la solicitud (en segundos).%j
: Nombre del cruce%X-Forwarded-For
: Dirección IP de reenvío%a
: Dirección IP remota%A
: Dirección IP local%H
: Es el protocolo de solicitud.%p
: Puerto%m
: Es el método de solicitud (GET, POST, HEAD).%U
: URL solicitada%v
: Nombre del servidor%d
: Es el identificador de la transacción.%q
: Cadena de consulta
Configura el reenvío de Syslog en ISVA
- Accede a la interfaz de administración local de ISVA.
- Ve a Monitor > Registros > Reenvío de Syslog remoto.
- Haz clic en Agregar.
- Especifica los detalles del servidor de syslog remoto.
- Servidor: Es la dirección IP o el nombre de host del servidor de syslog (Bindplane).
- Puerto: Es el puerto en el que el servidor de syslog escucha las solicitudes (Bindplane).
- Protocolo: Selecciona UDP o TCP (según la configuración de syslog o Bindplane).
- Formato: Selecciona Syslog.
- Haz clic en Guardar.
Cómo configurar las fuentes de registro para un servidor de registro remoto
- Selecciona el servidor syslog remoto al que deseas enviar los registros.
- Haz clic en Fuentes.
- Haz clic en Agregar.
Especifica los detalles de la fuente de registro y, luego, haz clic en Aceptar.
- Nombre: Selecciona WebSEAL.
- Nombre de la instancia: Selecciona la instancia de WebSEAL.
- Archivo de registro: Es el nombre del archivo de registro de origen.
- Opcional: Etiqueta: Es la etiqueta que se agregará a las entradas de registro enviadas.
- Facility: Todos los mensajes se enviarán con el código de la instalación especificado (lista de códigos disponibles).
- Gravedad: Es la gravedad de las entradas de registro enviadas.
- Todos los mensajes se enviarán con el nivel de gravedad especificado.
Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
acción | read_only_udm.security_result.action_details | Se extrae del campo XML "/event/originator/action" cuando el campo "description" contiene "event". |
app | read_only_udm.target.application | Se extrae con el patrón grok del campo "message". |
auth_details | read_only_udm.security_result.detection_fields.value | Se extrae del campo XML "/event/accessor/principal/@auth" cuando el campo "description" contiene "event". La clave se establece en "Auth". |
authntype | read_only_udm.security_result.detection_fields.value | Se extrae del campo XML "/event/authntype" cuando el campo "description" contiene "event". La clave se establece en "Authntype". |
datos | read_only_udm.metadata.description | Si el campo "data" no está vacío, su valor reemplaza el valor existente de "read_only_udm.metadata.description". |
descripción | read_only_udm.metadata.description | Se extrae con el patrón grok del campo "message". Si el campo "description" contiene "event", se analiza como XML para extraer otros campos. |
event_id | read_only_udm.metadata.product_log_id | Se extrae del campo XML "/event/originator/event_id" cuando el campo "description" contiene "event". |
Nombre de host | read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname | Se extrae con el patrón grok del campo "message". |
id | read_only_udm.metadata.product_log_id | Se extrae con el patrón grok del campo "message". |
ubicación | read_only_udm.principal.location.name | Se extrae del campo XML "/event/originator/location" cuando el campo "description" contiene "event". |
resultado | read_only_udm.security_result.detection_fields.value | Se extrae del campo XML "/event/outcome" cuando el campo "description" contiene "event". La clave se establece en "Resultado". |
outcome_reason | read_only_udm.security_result.summary | Se extrae del campo XML "/event/outcome/@reason" cuando el campo "description" contiene "event". También se usa para determinar el valor de "read_only_udm.security_result.action", que se establece en "BLOCK" si "outcome_reason" contiene "fail" (sin distinción entre mayúsculas y minúsculas); de lo contrario, se establece en "ALLOW". |
outcome_status | read_only_udm.security_result.detection_fields.value | Se extrae del campo XML "/event/outcome/@status" cuando el campo "description" contiene "event". La clave se establece en "Estado del resultado". |
originator_blade | read_only_udm.security_result.detection_fields.value | Se extrae del campo XML "/event/originator/@blade" cuando el campo "description" contiene "event". La clave se establece en "Originator Blade". |
originator_component | read_only_udm.security_result.detection_fields.value | Se extrae del campo XML "/event/originator/component" cuando el campo "description" contiene "event". La clave se establece en "Componente de origen". |
originator_instance | read_only_udm.security_result.detection_fields.value | Se extrae del campo XML "/event/originator/@instance" cuando el campo "description" contiene "event". La clave se establece en "Instancia del creador". |
session_id | read_only_udm.network.session_id | Se extrae del campo XML "/event/accessor/session_id" cuando el campo "description" contiene "event". |
target_url | read_only_udm.target.url | Se extrae del campo XML "/event/target/url" cuando el campo "description" contiene "event". |
thread_id | read_only_udm.security_result.detection_fields.value | Se extrae con el patrón grok del campo "message". La clave se establece en "ID de subproceso". |
timestamp | read_only_udm.metadata.event_timestamp | Se extrae con el patrón grok del campo "message". Con formato del filtro "fecha" según la presencia y el formato del campo "zona horaria". |
time_stamp | read_only_udm.metadata.event_timestamp | Se extrae del campo XML "/event/date" cuando el campo "description" contiene "event". Se formateó con el filtro "fecha". |
Zona horaria | Se usa junto con el campo "timestamp" para dar formato al campo "read_only_udm.metadata.event_timestamp" con el filtro "date". | |
url | read_only_udm.target.url | Se extrae con el patrón grok del campo "message". |
usuario | read_only_udm.principal.user.userid | Se extrae del campo XML "/event/accessor/principal" cuando el campo "description" contiene "event". |
user_location | read_only_udm.principal.ip, read_only_udm.principal.asset.ip | Se extrae del campo XML "/event/accessor/user_location" cuando el campo "description" contiene "event". Si "user_location_type" contiene "ip" (sin distinción entre mayúsculas y minúsculas), se analiza como una dirección IP y se asigna a "read_only_udm.principal.ip" y "read_only_udm.principal.asset.ip". |
user_location_type | Se usa para determinar si "user_location" se debe analizar como una dirección IP. | |
N/A | read_only_udm.metadata.vendor_name | Establece el valor en "IBM_SECURITY_VERIFY". |
N/A | read_only_udm.metadata.product_name | Establece el valor en "IBM_SECURITY_VERIFY". |
N/A | read_only_udm.metadata.event_type | Inicialmente, se establece en "STATUS_UPDATE". Se cambió a "USER_LOGIN" si se extraen los campos "user" y "hostname". |
N/A | read_only_udm.extensions.auth.type | Establece el valor en "SSO" si se extraen los campos "user" y "hostname". |
N/A | read_only_udm.network.application_protocol | Se establece en "HTTP" si el campo "message" contiene "HttpServletRequest". |
N/A | read_only_udm.metadata.log_type | Se establece en "IBM_SECURITY_VERIFY", que se toma de los metadatos de registro. |
Cambios
2024-05-13
- Se actualizó el analizador para admitir registros en formato XML.
2023-01-25
- Sin embargo, el analizador se creó recientemente.