Recoger registros CEF de Imperva
En este documento se explica cómo ingerir registros CEF de Imperva en Google Security Operations mediante Bindplane. El analizador extrae los registros en formato CEF de los mensajes syslog y los convierte al formato UDM. Gestiona varios formatos de registro, extrae pares clave-valor de la carga útil, realiza transformaciones y enriquecimientos de datos, y asigna los campos extraídos a los campos de UDM correspondientes, incluida la información de la red, los detalles del usuario, la geolocalización y los resultados de seguridad.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un host Windows 2016 o posterior, o 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 Bindplane.
- Acceso privilegiado a la consola de gestión o al dispositivo de Imperva
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 Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.
Instalación de ventanas
- Abre la petición de comando 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 root 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,vio Bloc de notas).
- Busca el archivo
Edita el archivo
config.yamlde 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_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.jsona 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-agentPara 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 pasarela de WAF de Imperva (SecureSphere) para enviar CEF a través de syslog
En la consola de MX, crea un conjunto de acciones:
- Ve a Políticas > Conjuntos de acciones.
- Haz clic en Nuevo y ponle un nombre (por ejemplo,
Google SecOps CEF).
Añade la interfaz de acción syslog de CEF:
- En Interfaces de acciones disponibles, abre Registro del sistema y añade uno o varios de los siguientes elementos (según sea necesario):
- Registrar eventos de seguridad en el registro del sistema (syslog) mediante el estándar CEF
- Registrar evento de seguridad de red en el registro del sistema (syslog) mediante el estándar CEF
- Registrar eventos del sistema en el registro del sistema (syslog) mediante el estándar CEF
- Registrar eventos de seguridad personalizados en el registro del sistema (syslog) mediante el estándar CEF
- En Interfaces de acciones disponibles, abre Registro del sistema y añade uno o varios de los siguientes elementos (según sea necesario):
Configura los parámetros de la interfaz de acción:
- Host de syslog: introduce la dirección IP de tu agente de Bindplane. Para usar un puerto que no sea el predeterminado, añade
:PORT(el predeterminado es 514 si no especificas ninguno). Ejemplo:10.0.0.10:514. - Instalación o Nivel de registro: se define según los requisitos de tu política.
- Mensaje: deje los valores predeterminados del proveedor para CEF, a menos que tenga una asignación personalizada.
- Host de syslog: introduce la dirección IP de tu agente de Bindplane. Para usar un puerto que no sea el predeterminado, añade
Adjunta el conjunto de acciones a las políticas:
- En el caso de los eventos Seguridad o Seguridad de la red, abre las políticas correspondientes y asigna el valor Acción seguida a tu conjunto de acciones.
- En Eventos del sistema: cree o verifique una política de Eventos del sistema y asigne el valor Acción seguida a su conjunto de acciones para que esos eventos también se envíen a través de CEF.
Opcional: Configura objetivos específicos de la pasarela:
- Si diferentes grupos de pasarelas deben enviar datos a diferentes servidores syslog, configure cada Grupo de pasarelas > Registrador externo y habilite "Usar configuración de pasarela si existe" en la política.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
act |
security_result.action |
Derivado. Si act es "allowed", "alert", empieza por "REQ_PASSED" o empieza por "REQ_CACHED", action es "ALLOW". Si act es "deny", "blocked", empieza por "REQ_BLOCKED" o empieza por "REQ_CHALLENGE", action es "BLOCK". Si act coincide con la regex (?i)REQ_BAD, action es "FAIL". De lo contrario, action es "UNKNOWN_ACTION". A continuación, security_result.action se define con el valor de action. |
act |
security_result.action_details |
Derivado. En función del valor de act, se genera una descripción detallada. Ejemplos: "REQ_CACHED_FRESH: response was returned from the data center's cache" ("REQ_CACHED_FRESH: la respuesta se ha devuelto desde la caché del centro de datos"), "REQ_BLOCKED: the request was blocked" ("REQ_BLOCKED: la solicitud se ha bloqueado"). |
app |
network.application_protocol |
Se asigna directamente después de convertirse a mayúsculas. |
cs1 |
security_result.detection_fields.value |
Se asigna de forma condicional si cs1 no está vacío o es "N/A". security_result.detection_fields.key se define con el valor de cs1Label. |
cs1Label |
security_result.detection_fields.key |
Se asigna de forma condicional si cs1 no está vacío o es "N/A". security_result.detection_fields.value se define con el valor de cs1. |
cs2 |
security_result.detection_fields.value |
Se asigna condicionalmente si no está vacío. security_result.detection_fields.key se define con el valor de cs2Label. |
cs2Label |
security_result.detection_fields.key |
Se asigna condicionalmente si cs2 no está vacío. security_result.detection_fields.value se define con el valor de cs2. |
cs3 |
security_result.detection_fields.value |
Se asigna de forma condicional si no está vacío o es "-". security_result.detection_fields.key se asigna al valor de cs3Label. |
cs3Label |
security_result.detection_fields.key |
Se asigna de forma condicional si cs3 no está vacío o es "-". security_result.detection_fields.value se define con el valor de cs3. |
cs4 |
security_result.detection_fields.value |
Se asigna de forma condicional si no está vacío. security_result.detection_fields.key se define con el valor de cs4Label. |
cs4Label |
security_result.detection_fields.key |
Se asigna condicionalmente si cs4 no está vacío. security_result.detection_fields.value se define con el valor de cs4. |
cs5 |
security_result.detection_fields.value |
Se asigna de forma condicional si no está vacío. security_result.detection_fields.key se define con el valor de cs5Label. |
cs5Label |
security_result.detection_fields.key |
Se asigna condicionalmente si cs5 no está vacío. security_result.detection_fields.value se define con el valor de cs5. |
cs6 |
security_result.detection_fields.value |
Se asigna de forma condicional si no está vacío. security_result.detection_fields.key se define con el valor de cs6Label. |
cs6Label |
security_result.detection_fields.key |
Se asigna condicionalmente si cs6 no está vacío. security_result.detection_fields.value se define con el valor de cs6. |
cs7 |
principal.location.region_latitude |
Se asigna condicionalmente si cs7Label es "latitude". |
cs8 |
principal.location.region_longitude |
Se asigna condicionalmente si cs8Label es "longitude". |
cn1 |
security_result.detection_fields.value |
Se asigna de forma condicional si no está vacío y cn1Label no está vacío. security_result.detection_fields.key se define con el valor de cn1Label. |
cn1Label |
security_result.detection_fields.key |
Se asigna de forma condicional si cn1 y cn1Label no están vacíos. security_result.detection_fields.value se define con el valor de cn1. |
fileType |
security_result.detection_fields.value |
Se asigna de forma condicional si no está vacío. security_result.detection_fields.key tiene el valor "fileType". |
filePermission |
security_result.detection_fields.value |
Se asigna condicionalmente si no está vacío. security_result.detection_fields.key tiene el valor "filePermission". |
request |
target.url |
Asignación directa. |
requestClientApplication |
network.http.user_agent |
Se asigna condicionalmente si no está vacío. Sobrescribe el valor asignado del campo user_agent extraído de los pares clave-valor requestContext o requestClientApplication de la carga útil de CEF. |
requestMethod |
network.http.method |
Asignación directa. |
siteid |
security_result.detection_fields.value |
Se asigna de forma condicional si no está vacío. security_result.detection_fields.key se ha definido como "siteid". |
sourceServiceName |
target.hostname |
Asignación directa. Sobrescribe el valor de dhost si está presente. |
src |
principal.ip |
Asignación directa. |
start |
metadata.event_timestamp.seconds |
Se extrae mediante un patrón grok y se convierte en una marca de tiempo. Se usa como alternativa para deviceReceiptTime si no está presente. Si deviceReceiptTime y start están vacíos, se usa la marca de tiempo del registro. |
suid |
principal.user.userid |
Se asigna condicionalmente si no está vacío. |
| N/A | metadata.event_type |
Codificado como "NETWORK_HTTP". |
| N/A | metadata.log_type |
Se asigna directamente desde el campo log_type de nivel superior. |
| N/A | metadata.product_event_type |
Se asigna desde csv.event_id si no está vacío. |
| N/A | metadata.product_name |
Codificado como "Cortafuegos de aplicación web". |
| N/A | metadata.vendor_name |
Codificado como "Imperva". |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.