Recoger registros de gestión de Imperva SecureSphere
En este documento se explica cómo ingerir registros de gestión de Imperva SecureSphere en Google Security Operations mediante Bindplane. El analizador extrae campos de los registros en formato CEF o JSON. Utiliza patrones grok y el análisis de pares clave-valor para asignar campos de registro sin procesar al modelo de datos unificado, gestionando tanto los campos CEF estándar como las estructuras JSON personalizadas, y priorizando los datos JSON si están disponibles. Imperva SecureSphere ofrece funciones completas de cortafuegos de aplicaciones web, seguridad de bases de datos y seguridad de archivos para implementaciones locales y en la nube.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Una instancia de Google SecOps
- Windows 2016 o versiones posteriores, o un host Linux con
systemd
- Si se ejecuta a través de un proxy, asegúrese de que los puertos del cortafuegos estén abiertos según los requisitos del agente de Bindplane.
- Acceso privilegiado a la consola de gestión de Imperva SecureSphere
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_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: 'IMPERVA_SECURESPHERE' 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 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 el reenvío de Syslog en Imperva SecureSphere Management
- Inicia sesión en la consola de gestión de Imperva SecureSphere.
- Vaya a Configuración > Conjuntos de acciones.
- Haz clic en Añadir para crear un conjunto de acciones.
- Proporcione los siguientes detalles de configuración:
- Nombre: introduce un nombre descriptivo (por ejemplo,
Google SecOps Syslog
).
- Nombre: introduce un nombre descriptivo (por ejemplo,
Configurar la acción de evento de seguridad
- Haz clic en Añadir acción y configura lo siguiente:
- Tipo de acción: selecciona Syslog.
- Host: introduce la dirección IP del agente de Bindplane.
- Puerto: introduce el número de puerto del agente de Bindplane (el valor predeterminado es
514
). - Protocolo: selecciona UDP o TCP.
- Nivel de registro de Syslog: selecciona DEBUG.
- Instalación de syslog: selecciona LOCAL0.
- Formato de mensaje: selecciona Registro de la pasarela - Evento de seguridad - Registro del sistema (syslog) con el estándar CEF.
Configurar acción de evento del sistema
- Haz clic en Añadir acción y configura lo siguiente:
- Tipo de acción: selecciona Registro del sistema.
- Host: introduce la dirección IP del agente de BindPlane.
- Puerto: introduce el número de puerto del agente de BindPlane.
- Protocolo: selecciona UDP o TCP.
- Formato del mensaje: selecciona Registrar evento del sistema en el registro del sistema (syslog) mediante el estándar CEF.
Aplicar conjuntos de acciones a políticas
- Ve a Políticas > Políticas de seguridad.
- En cada política pertinente, configure Acciones seguidas para que use su conjunto de acciones.
- Ve a Políticas > Políticas de eventos del sistema.
- Configura las políticas de eventos del sistema para usar el conjunto de acciones y disfrutar de una monitorización completa.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
action |
security_result.action_details |
El valor del campo action se asigna al campo security_result.action_details . |
application-name |
target.application |
El valor del campo application-name se asigna al campo target.application . |
cat |
security_result.category_details |
El valor del campo cat se asigna al campo security_result.category_details . |
class |
security_result.detection_fields.value |
El valor del campo class se asigna al campo value de security_result.detection_fields . El key correspondiente es "class". |
collection_time.seconds |
metadata.event_timestamp.seconds |
El valor de collection_time.seconds del registro sin procesar se usa como valor de segundos de metadata.event_timestamp . |
create-time |
metadata.event_timestamp.seconds |
El valor de create-time se analiza y su valor en segundos se usa como valor en segundos de metadata.event_timestamp . |
cs1 |
security_result.rule_name |
El valor del campo cs1 se asigna al campo security_result.rule_name . |
cs10 |
target.resource.attribute.labels.value |
El valor del campo cs10 se asigna al campo value de target.resource.attribute.labels . |
cs10Label |
target.resource.attribute.labels.key |
El valor del campo cs10Label se asigna al campo key de target.resource.attribute.labels . |
cs11 |
principal.application |
El valor del campo cs11 se asigna al campo principal.application . |
cs12 |
security_result.description |
El valor del campo cs12 , después de quitar las llaves y los signos de dólar, se asigna al campo security_result.description . |
cs14 |
target.resource.attribute.labels.value |
El valor del campo cs14 se asigna al campo value de target.resource.attribute.labels . |
cs14Label |
target.resource.attribute.labels.key |
El valor del campo cs14Label se asigna al campo key de target.resource.attribute.labels . |
cs15 |
security_result.summary |
El valor del campo cs15 se asigna al campo security_result.summary . |
cs16 |
principal.process.command_line |
El valor del campo cs16 se asigna al campo principal.process.command_line . |
cs17 |
target.resource.resource_subtype |
El valor del campo cs17 se asigna al campo target.resource.resource_subtype . |
cs2 |
principal.group.group_display_name |
El valor del campo cs2 se asigna al campo principal.group.group_display_name . |
cs3 |
principal.hostname , principal.asset.hostname |
El valor del campo cs3 se asigna a los campos principal.hostname y principal.asset.hostname . |
cs4 |
target.application |
El valor del campo cs4 se asigna al campo target.application , a menos que el valor sea "ProcessWitness". |
cs5 |
metadata.description |
El valor del campo cs5 se asigna al campo metadata.description . |
cs6 |
target.resource_ancestors.name |
El valor del campo cs6 se asigna al campo target.resource_ancestors.name . |
cs7 |
target.resource_ancestors.resource_subtype |
El valor del campo cs7 se asigna al campo target.resource_ancestors.resource_subtype . |
cs8 |
target.resource.name , target.resource.resource_type |
El valor del campo cs8 se asigna al campo target.resource.name y target.resource.resource_type se define como "DATABASE". |
cs9 |
principal.user.userid |
El valor del campo cs9 se asigna al campo principal.user.userid . |
description |
security_result.description |
El valor del campo description se asigna al campo security_result.description . |
dest-ip |
target.ip , target.asset.ip |
La dirección IP extraída del campo dest-ip se asigna a los campos target.ip y target.asset.ip . |
dest-port |
target.port |
El valor del campo dest-port , convertido en un número entero, se asigna al campo target.port . |
deviceExternalId |
intermediary.hostname |
El valor del campo deviceExternalId se asigna al campo intermediary.hostname . |
dpt |
target.port |
El valor del campo dpt , convertido en un número entero, se asigna al campo target.port . |
dst |
target.ip , target.asset.ip |
El valor del campo dst se asigna a los campos target.ip y target.asset.ip . |
duser |
target.user.userid |
El valor del campo duser se asigna al campo target.user.userid . |
eventId |
metadata.product_log_id |
El valor del campo eventId se asigna al campo metadata.product_log_id . |
gateway-name |
security_result.detection_fields.value |
El valor del campo gateway-name se asigna al campo value de security_result.detection_fields . El key correspondiente es "gateway-name". |
http.request.method |
network.http.method |
El valor del campo http.request.method se asigna al campo network.http.method . |
http.request.user-agent |
network.http.user_agent |
El valor del campo http.request.user_agent se asigna al campo network.http.user_agent . |
http.response.code |
network.http.response_code |
El valor del campo http.response.code , convertido en un número entero, se asigna al campo network.http.response_code . |
http.session-id |
network.session_id |
El valor del campo http.session-id se asigna al campo network.session_id . |
http.user-name |
principal.user.userid |
El valor del campo http.user-name , sin las comillas, se asigna al campo principal.user.userid . |
log_type |
metadata.log_type |
El valor del campo log_type del registro sin procesar se asigna al campo metadata.log_type . |
mx-ip |
intermediary.ip |
El valor del campo mx-ip se asigna al campo intermediary.ip . |
MxIP |
intermediary.ip |
El valor del campo MxIP se asigna al campo intermediary.ip . |
OSUser |
principal.user.userid |
El valor del campo OSUser se asigna al campo principal.user.userid . |
policy-name |
security_result.detection_fields.value |
El valor del campo policy-name se asigna al campo value de security_result.detection_fields . El key correspondiente es "policy-name". |
pquery |
target.resource.name , target.process.command_line |
Si pquery no está vacío y contiene la palabra "from", se extrae el nombre de la tabla y se asigna a target.resource.name , target.resource.resource_type se define como "TABLE" y todo el valor de pquery se asigna a target.process.command_line . De lo contrario, se asigna todo el valor de pquery a target.resource.name . |
pro |
security_result.description |
El valor del campo pro se asigna al campo security_result.description . |
product |
metadata.product_name |
El valor del campo product se asigna al campo metadata.product_name . |
product_type |
metadata.product_event_type |
El valor del campo product_type se asigna al campo metadata.product_event_type . |
protocol |
network.ip_protocol |
Si el valor del campo protocol es "TCP" o "UDP", se asigna al campo network.ip_protocol . |
proto |
network.ip_protocol |
El valor del campo proto se asigna al campo network.ip_protocol . |
reason |
security_result.rule_name |
El valor del campo reason se asigna al campo security_result.rule_name . |
rt |
metadata.event_timestamp.seconds |
El valor de rt se analiza y su valor en segundos se usa como valor en segundos de metadata.event_timestamp . |
server-group-name |
target.resource.attribute.labels.value |
El valor del campo server-group-name se asigna al campo value de target.resource.attribute.labels . El key correspondiente es "server-group-name". |
server-group-simulation-mode |
target.resource.attribute.labels.value |
El valor del campo server-group-simulation-mode se asigna al campo value de target.resource.attribute.labels . El key correspondiente es "server-group-simulation-mode". |
service-name |
target.resource.attribute.labels.value |
El valor del campo service-name se asigna al campo value de target.resource.attribute.labels . El key correspondiente es "service-name". |
ServiceName |
target.application |
Si ApplicationName no está vacío y ServiceName sí, el valor de ApplicationName se asigna a ServiceName . A continuación, el valor de ServiceName se asigna a target.application . |
severity |
security_result.severity , security_result.severity_details |
El valor del campo severity se convierte a mayúsculas. Si es uno de los valores "LOW", "MEDIUM", "HIGH" o "CRITICAL", se asigna a security_result.severity . Si es "INFORMATIVE" o "INFO", security_result.severity se define como "INFORMATIONAL". El valor original también se asigna a security_result.severity_details . |
severity_data |
security_result.severity |
El valor del campo severity_data se convierte a mayúsculas. Si es "HIGH", "LOW", "MEDIUM", "CRITICAL", "ERROR" o "INFORMATIONAL", se asigna a security_result.severity . |
source-ip |
principal.ip , principal.asset.ip |
El valor del campo source-ip se asigna a los campos principal.ip y principal.asset.ip . |
source-port |
principal.port |
El valor del campo source-port , convertido en un número entero, se asigna al campo principal.port . |
spt |
principal.port |
El valor del campo spt , convertido en un número entero, se asigna al campo principal.port . |
src |
principal.ip , principal.asset.ip |
El valor del campo src se asigna a los campos principal.ip y principal.asset.ip . |
srcapp |
principal.application |
El valor del campo srcapp se asigna al campo principal.application . |
srchost |
principal.hostname , principal.asset.hostname |
El valor del campo srchost se asigna a los campos principal.hostname y principal.asset.hostname . |
vendor |
metadata.vendor_name |
El valor del campo vendor se asigna al campo metadata.vendor_name . |
version |
metadata.product_version |
El valor del campo version se asigna al campo metadata.product_version . |
violation-id |
security_result.detection_fields.value |
El valor del campo violation-id se asigna al campo value de security_result.detection_fields . El key correspondiente es "violation-id". |
violation-type |
security_result.detection_fields.value |
El valor del campo violation-type se asigna al campo value de security_result.detection_fields . El key correspondiente es "violation-type". |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.