Recoger registros de DLP de Fortra Digital Guardian
En este documento se explica cómo recoger registros de DLP de Fortra Digital Guardian en Google Security Operations mediante un agente de Bindplane. El código del analizador transforma los registros sin procesar con formato JSON en un modelo de datos unificado (UDM). Primero, extrae los campos del JSON sin procesar, limpia y normaliza los datos y, a continuación, asigna los campos extraídos a sus atributos de UDM correspondientes. De esta forma, enriquece los datos con tipos de eventos específicos en función de la actividad identificada.
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 Fortra Digital Guardian DLP.
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: DIGITALGUARDIAN_DLP 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 la exportación de syslog de Fortra Digital Guardian
- Inicia sesión en la consola de gestión de Digital Guardian.
- Ve a Workspace > Exportación de datos > Crear exportación.
- Seleccione Alertas o Eventos como fuente de datos en la lista Fuentes de datos.
- Seleccione Syslog como tipo de exportación.
En la lista Tipo, selecciona UDP (también puedes seleccionar TCP como protocolo de transporte, en función de tu configuración de Bindplane).
En el campo Servidor, introduzca la dirección IP del agente de Bindplane.
En el campo Port (Puerto), introduce
514
(puedes proporcionar otro puerto en función de la configuración de tu agente de Bindplane).Selecciona un nivel de gravedad en la lista Nivel de gravedad.
Seleccione la casilla Activo.
Haz clic en Siguiente.
En la lista de campos disponibles, añada todos los campos de alerta y evento para la exportación de datos.
Selecciona los criterios de los campos de los datos que vas a exportar.
Haz clic en Siguiente.
Selecciona un grupo para los criterios.
Haz clic en Siguiente.
Haga clic en Probar consulta.
Haz clic en Siguiente.
Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Versión del agente | observer.platform_version | Se asigna directamente desde el campo de registro sin procesar Agent Version . |
Aplicación | principal.process.command_line | Se asigna directamente desde el campo de registro sin procesar Application si no está vacío. |
Línea de comandos | target.process.command_line | Se asigna directamente desde el campo de registro sin procesar Command Line . |
Nombre de la empresa | principal.user.company_name | Se asigna directamente desde el campo de registro sin procesar Company Name . |
Nombre del ordenador | principal.hostname | Se asigna directamente desde el campo de registro sin procesar Computer Name . |
Nombre de host de DNS | target.asset.hostname | Se asigna directamente desde el campo de registro sin procesar DNS Hostname . |
Tipo de unidad de destino | about.labels.value | Se asigna directamente desde el campo de registro sin procesar Destination Drive Type . La tecla correspondiente se ha definido como Destination Drive Type . |
Extensión del archivo de destino | target.file.mime_type | Se asigna directamente desde el campo de registro sin procesar Destination File Extension si no es no extension ni [no extension] . |
Ruta del archivo de destino | target.file.full_path | Se asigna directamente desde el campo de registro sin procesar Destination File Path . |
GUID del dispositivo | src.resource.id | Asignado desde el campo de registro sin formato Device GUID con el prefijo GUID: . |
Remitente del mensaje de correo electrónico | network.email.from | Se asigna directamente desde el campo de registro sin procesar Email Sender si no está vacío. |
Asunto del correo electrónico | network.email.subject | Se asigna directamente desde el campo de registro sin procesar Email Subject si Email Sender no está vacío. |
Nombre visible del evento | target.resource.type | Se asigna directamente desde el campo de registro sin procesar Event Display Name . |
Hora del evento | metadata.event_timestamp.seconds | Se ha convertido a marca de tiempo desde el campo de registro sin procesar Event Time con los formatos yyyy-MM-dd HH:mm:ss A y TIMESTAMP_ISO8601 . |
Descripción del archivo | metadata.description | Se asigna directamente desde el campo de registro sin procesar File Description . |
Tamaño de archivo | about.labels.value | Se asigna directamente desde el campo de registro sin procesar File Size . La tecla correspondiente se ha definido como File Size . |
Versión del archivo | about.labels.value | Se asigna directamente desde el campo de registro sin procesar File Version . La tecla correspondiente se ha definido como File Version . |
Dirección IP | principal.ip | Se asigna directamente desde el campo de registro sin procesar IP Address si Source IP Address está vacío. |
Puerto local | principal.port | Se asigna directamente desde el campo de registro sin procesar Local Port si no está vacío y se convierte en un número entero. |
Dirección MAC | target.mac | Se asigna directamente desde el campo de registro sin procesar MAC Address si no está vacío. |
ID de máquina | principal.asset.asset_id | Asignado desde el campo de registro sin formato Machine ID con el prefijo MachineId: . |
Tipo de máquina | principal.asset.category | Se asigna directamente desde el campo de registro sin procesar Machine Type . |
Hash MD5 | target.process.file.md5 | Se asigna directamente desde el campo de registro sin procesar MD5 Hash después de convertirlo a minúsculas. |
Dirección de la red | network.direction | Se ha asignado desde el campo de registro sin procesar Network Direction . Si Inbound , asigna el valor INBOUND . Si Outbound , asigna el valor OUTBOUND . |
Tipo de operación | security_result.action_details | Se asigna directamente desde el campo de registro sin procesar Operation Type . |
Aplicación para padres | principal.process.parent_process.command_line | Se asigna directamente desde el campo de registro sin procesar Parent Application si no está vacío. |
Hash MD5 principal | target.process.parent_process.file.md5 | Se asigna directamente desde el campo de registro sin procesar Parent MD5 Hash después de convertirlo a minúsculas si coincide con un patrón de cadena hexadecimal. |
Dominio de proceso | target.administrative_domain | Se asigna directamente desde el campo de registro sin procesar Process Domain . |
Procesar extensión de archivo | target.process.file.mime_type | Se asigna directamente desde el campo de registro sin procesar Process File Extension si no es no extension ni [no extension] . |
Ruta de proceso | target.process.file.full_path | Se asigna directamente desde el campo de registro sin procesar Process Path . |
PID del proceso | principal.process.pid | Se asigna directamente desde el campo de registro sin procesar Process PID después de convertirlo en una cadena. |
Nombre del producto | metadata.product_name | Se asigna directamente desde el campo de registro sin procesar Product Name . |
Versión del producto | metadata.product_version | Se asigna directamente desde el campo de registro sin procesar Product Version . |
Protocolo | network.application_protocol | Si es HTTP o HTTPS , asigna el valor HTTPS . |
Nombre de la impresora | src.resource.name | Se asigna directamente desde el campo de registro sin procesar Printer Name . |
Puerto remoto | target.port | Se asigna directamente desde el campo de registro sin procesar Remote Port si no está vacío y se convierte en un número entero. |
Hash SHA1 | target.process.file.sha1 | Se asigna directamente desde el campo de registro sin procesar SHA1 Hash después de convertirlo a minúsculas. |
Hash SHA256 | target.process.file.sha256 | Se asigna directamente desde el campo de registro sin procesar SHA256 Hash después de convertirlo a minúsculas. |
Emisor de la firma | network.tls.server.certificate.issuer | Se asigna directamente desde el campo de registro sin procesar Signature Issuer . |
Firma del sujeto | network.tls.server.certificate.subject | Se asigna directamente desde el campo de registro sin procesar Signature Subject . |
Extensión del archivo de origen | src.file.mime_type | Se asigna directamente desde el campo de registro sin procesar Source File Extension si no es no extension ni [no extension] . |
Ruta del archivo de origen | src.file.full_path | Se asigna directamente desde el campo de registro sin procesar Source File Path . |
Dirección IP de origen | principal.ip | Se asigna directamente desde el campo de registro sin procesar Source IP Address si no está vacío. |
Tamaño total | about.labels.value | Se asigna directamente desde el campo de registro sin procesar Total Size . La tecla correspondiente se ha definido como Total Size . |
Ruta de URL | target.url | Se asigna directamente desde el campo de registro sin procesar URL Path . |
ID único | metadata.product_log_id | Se asigna directamente desde el campo de registro sin procesar Unique ID . |
Usuario | principal.user.userid | Se asigna directamente desde el campo de registro sin procesar User . |
Was Detail Blocked | security_result.action | Si Yes , asigna el valor BLOCK . Si No , asigna el valor ALLOW . |
dg_dst_dev.dev_prdname | target.asset.hardware.model | Se asigna directamente desde el campo de registro sin procesar dg_dst_dev.dev_prdname . |
dg_dst_dev.dev_sernum | target.asset.hardware.serial_number | Se asigna directamente desde el campo de registro sin procesar dg_dst_dev.dev_sernum . |
dg_recipients.uad_mr | network.email.to | Se asigna directamente desde el campo de registro sin procesar dg_recipients.uad_mr si coincide con un patrón de dirección de correo. |
dg_src_dev.dev_prdname | principal.asset.hardware.model | Se asigna directamente desde el campo de registro sin procesar dg_src_dev.dev_prdname . |
dg_src_dev.dev_sernum | principal.asset.hardware.serial_number | Se asigna directamente desde el campo de registro sin procesar dg_src_dev.dev_sernum . |
metadata.event_type | metadata.event_type | Inicialmente, se define como GENERIC_EVENT . Cambia en función de condiciones específicas: - NETWORK_HTTP : si están presentes el nombre de host, el protocolo HTTP/HTTPS y la dirección MAC. - FILE_COPY : si existen las rutas de archivo de destino y de origen, y Operation Type es File Copy . - FILE_MOVE : si existen las rutas de archivo de destino y de origen, y Operation Type es File Move . - FILE_UNCATEGORIZED : si existe la ruta del archivo de destino, la ruta del proceso o la línea de comandos, y Operation Type contiene File . - USER_LOGOUT : si el ID de usuario existe y Operation Type contiene Logoff . - USER_LOGIN : si el ID de usuario existe y Operation Type contiene Logon . - NETWORK_UNCATEGORIZED : si se incluyen la ruta del proceso, la línea de comandos, la dirección de red saliente y la dirección MAC. - SCAN_PROCESS : si se incluyen la ruta del proceso o la línea de comandos y el ID del proceso. - PROCESS_UNCATEGORIZED : si existe la ruta del proceso o la línea de comandos. |
metadata.log_type | metadata.log_type | Su valor debe ser DIGITALGUARDIAN_DLP . |
metadata.product_log_id | metadata.product_log_id | Se asigna directamente desde el campo de registro sin procesar Unique ID . |
metadata.product_name | metadata.product_name | Se asigna directamente desde el campo de registro sin procesar Product Name . |
metadata.product_version | metadata.product_version | Se asigna directamente desde el campo de registro sin procesar Product Version . |
metadata.vendor_name | metadata.vendor_name | Su valor debe ser DigitalGuardian . |
network.application_protocol | network.application_protocol | Su valor debe ser HTTPS si Protocol es HTTP o HTTPS . |
network.direction | network.direction | Se ha asignado desde el campo de registro sin procesar Network Direction . Si Inbound , asigna el valor INBOUND . Si Outbound , asigna el valor OUTBOUND . |
network.email.from | network.email.from | Se asigna directamente desde el campo de registro sin procesar Email Sender si no está vacío. |
network.email.subject | network.email.subject | Se asigna directamente desde el campo de registro sin procesar Email Subject si Email Sender no está vacío. |
network.email.to | network.email.to | Se asigna directamente desde el campo de registro sin procesar dg_recipients.uad_mr si coincide con un patrón de dirección de correo. |
network.tls.server.certificate.issuer | network.tls.server.certificate.issuer | Se asigna directamente desde el campo de registro sin procesar Signature Issuer . |
network.tls.server.certificate.subject | network.tls.server.certificate.subject | Se asigna directamente desde el campo de registro sin procesar Signature Subject . |
observer.platform_version | observer.platform_version | Se asigna directamente desde el campo de registro sin procesar Agent Version . |
principal.asset.asset_id | principal.asset.asset_id | Asignado desde el campo de registro sin formato Machine ID con el prefijo MachineId: . |
principal.asset.category | principal.asset.category | Se asigna directamente desde el campo de registro sin procesar Machine Type . |
principal.asset.hardware.model | principal.asset.hardware.model | Se asigna directamente desde el campo de registro sin procesar dg_src_dev.dev_prdname . |
principal.asset.hardware.serial_number | principal.asset.hardware.serial_number | Se asigna directamente desde el campo de registro sin procesar dg_src_dev.dev_sernum . |
principal.hostname | principal.hostname | Se asigna directamente desde el campo de registro sin procesar Computer Name . |
principal.ip | principal.ip | Se asigna directamente desde el campo de registro sin procesar Source IP Address si no está vacío. De lo contrario, se asigna desde IP Address si no está vacío. |
principal.port | principal.port | Se asigna directamente desde el campo de registro sin procesar Local Port si no está vacío y se convierte en un número entero. |
principal.process.command_line | principal.process.command_line | Se asigna directamente desde el campo de registro sin procesar Application si no está vacío. |
principal.process.parent_process.command_line | principal.process.parent_process.command_line | Se asigna directamente desde el campo de registro sin procesar Parent Application si no está vacío. |
principal.process.parent_process.file.md5 | principal.process.parent_process.file.md5 | Se asigna directamente desde el campo de registro sin procesar Parent MD5 Hash después de convertirlo a minúsculas si coincide con un patrón de cadena hexadecimal. |
principal.process.pid | principal.process.pid | Se asigna directamente desde el campo de registro sin procesar Process PID después de convertirlo en una cadena. |
principal.user.company_name | principal.user.company_name | Se asigna directamente desde el campo de registro sin procesar Company Name . |
principal.user.userid | principal.user.userid | Se asigna directamente desde el campo de registro sin procesar User . |
security_result.action | security_result.action | Si Was Detail Blocked es Yes , asigna el valor BLOCK . Si Was Detail Blocked es No , asigna el valor ALLOW . |
security_result.action_details | security_result.action_details | Se asigna directamente desde el campo de registro sin procesar Operation Type . |
src.file.full_path | src.file.full_path | Se asigna directamente desde el campo de registro sin procesar Source File Path . |
src.file.mime_type | src.file.mime_type | Se asigna directamente desde el campo de registro sin procesar Source File Extension si no es no extension ni [no extension] . |
src.resource.id | src.resource.id | Asignado desde el campo de registro sin formato Device GUID con el prefijo GUID: . |
src.resource.name | src.resource.name | Se asigna directamente desde el campo de registro sin procesar Printer Name . |
target.administrative_domain | target.administrative_domain | Se asigna directamente desde el campo de registro sin procesar Process Domain . |
target.asset.hardware.model | target.asset.hardware.model | Se asigna directamente desde el campo de registro sin procesar dg_dst_dev.dev_prdname . |
target.asset.hardware.serial_number | target.asset.hardware.serial_number | Se asigna directamente desde el campo de registro sin procesar dg_dst_dev.dev_sernum . |
target.asset.hostname | target.asset.hostname | Se asigna directamente desde el campo de registro sin procesar DNS Hostname . |
target.asset.product_object_id | target.asset.product_object_id | Se asigna directamente desde el campo de registro sin procesar Adapter Name . |
target.file.full_path | target.file.full_path | Se asigna directamente desde el campo de registro sin procesar Destination File Path . |
target.file.mime_type | target.file.mime_type | Se asigna directamente desde el campo de registro sin procesar Destination File Extension si no es no extension ni [no extension] . |
target.mac | target.mac | Se asigna directamente desde el campo de registro sin procesar MAC Address si no está vacío. |
target.port | target.port | Se asigna directamente desde el campo de registro sin procesar Remote Port si no está vacío y se convierte en un número entero. |
target.process.command_line | target.process.command_line | Se asigna directamente desde el campo de registro sin procesar Command Line . |
target.process.file.full_path | target.process.file.full_path | Se asigna directamente desde el campo de registro sin procesar Process Path . |
target.process.file.md5 | target.process.file.md5 | Se asigna directamente desde el campo de registro sin procesar MD5 Hash después de convertirlo a minúsculas. |
target.process.file.mime_type | target.process.file.mime_type | Se asigna directamente desde el campo de registro sin procesar Process File Extension si no es no extension ni [no extension] . |
target.process.file.sha1 | target.process.file.sha1 | Se asigna directamente desde el campo de registro sin procesar SHA1 Hash después de convertirlo a minúsculas. |
target.process.file.sha256 | target.process.file.sha256 | Se asigna directamente desde el campo de registro sin procesar SHA256 Hash después de convertirlo a minúsculas. |
target.process.parent_process.command_line | target.process.parent_process.command_line | Se asigna directamente desde el campo de registro sin procesar Parent Application si no está vacío. |
target.process.parent_process.file.md5 | target.process.parent_process.file.md5 | Se asigna directamente desde el campo de registro sin procesar Parent MD5 Hash después de convertirlo a minúsculas si coincide con un patrón de cadena hexadecimal. |
target.resource.type | target.resource.type | Se asigna directamente desde el campo de registro sin procesar Event Display Name . |
target.url | target.url | Se asigna directamente desde el campo de registro sin procesar URL Path . |
extensions.auth.type | extensions.auth.type | Asigna el valor AUTHTYPE_UNSPECIFIED si Operation Type es User Logoff o User Logon . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.