Recoger registros CEF de Imperva

Disponible en:

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

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. 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

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. 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

  1. Abre la petición de comando o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre un terminal con privilegios de root o sudo.
  2. 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

Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    1. 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.
    2. Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. 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_CEF'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    

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 pasarela de WAF de Imperva (SecureSphere) para enviar CEF a través de syslog

  1. 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).
  2. 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
  3. 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.
  4. 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.
  5. 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.