Recopila registros de APM de BIG-IP de F5

Se admite en los siguientes sistemas operativos:

En este documento, se explica cómo transferir registros de F5 BIG-IP APM a Google Security Operations con Bindplane.

El administrador de políticas de acceso (APM) de BIG-IP de F5 proporciona acceso seguro y unificado a aplicaciones, APIs y datos. Proporciona control de acceso basado en el contexto y con reconocimiento de la identidad con SSO, autenticación de varios factores y capacidades de VPN SSL para redes empresariales. El analizador extrae campos de los registros con formato syslog de APM de BIG-IP de F5. Utiliza grok o kv para analizar el mensaje de registro y, luego, asigna estos valores al Modelo de datos unificados (UDM). También establece valores de metadatos predeterminados para el origen y el tipo del evento.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Windows Server 2016 o versiones posteriores, o host de Linux con systemd
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
  • Acceso privilegiado a la interfaz de administración de BIG-IP de F5

Obtén el archivo de autenticación de transferencia de Google SecOps

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

  1. Accede a 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.

Instala el agente de BindPlane

Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.

Instalación en Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el comando siguiente:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Espera a que se complete la instalación.

  4. Ejecute el siguiente comando para verificar la instalación:

    sc query observiq-otel-collector
    

El servicio debe mostrarse como RUNNING.

Instalación en Linux

  1. Abre una terminal con privilegios de administrador o sudo.
  2. Ejecuta el comando siguiente:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Espera a que se complete la instalación.

  4. Ejecute el siguiente comando para verificar la instalación:

    sudo systemctl status observiq-otel-collector
    

El servicio debería mostrarse como activo (en ejecución).

Recursos de instalación adicionales

Para obtener más opciones de instalación y solucionar problemas, consulta la guía de instalación del agente de Bindplane.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

Ubica el archivo de configuración

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edita el archivo de configuración

  • Reemplaza todo el contenido de config.yaml con la siguiente configuración:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'F5_BIGIP_APM'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Parámetros de configuración

  • Reemplaza los marcadores de posición que se indican más abajo:

    • Configuración del receptor:

      • udplog: Usa udplog para el registro del sistema UDP o tcplog para el registro del sistema TCP.
      • 0.0.0.0: Dirección IP en la que se realizará la escucha (0.0.0.0 para escuchar en todas las interfaces)
      • 514: Número de puerto en el que se debe escuchar (puerto syslog estándar)
    • Configuración del exportador:

      • creds_file_path: Ruta de acceso completa al archivo de autenticación de la transferencia:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: ID de cliente de la sección Obtén el ID de cliente
      • endpoint: URL del extremo regional:
        • EE.UU.: malachiteingestion-pa.googleapis.com
        • Europa: europe-malachiteingestion-pa.googleapis.com
        • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Consulta Extremos regionales para obtener la lista completa.
      • log_type: Tipo de registro tal como aparece en Chronicle (F5_BIGIP_APM)

Guarda el archivo de configuración

  • Después de editarlo, guarda el archivo:
    • Linux: Presiona Ctrl+O, luego Enter y, después, Ctrl+X.
    • Windows: Haz clic en Archivo > Guardar

Reinicia el agente de Bindplane para aplicar los cambios

  • Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart observiq-otel-collector
    
    1. Verifica que el servicio esté en ejecución:

        sudo systemctl status observiq-otel-collector
      
    2. Revisa los registros en busca de errores:

        sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar el agente de Bindplane en Windows, elige una de las siguientes opciones:

    • Símbolo del sistema o PowerShell como administrador:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Consola de Services:

      1. Presiona Win+R, escribe services.msc y presiona Intro.
      2. Busca observIQ OpenTelemetry Collector.
      3. Haz clic con el botón derecho y selecciona Reiniciar.

      4. Verifica que el servicio esté en ejecución:

        sc query observiq-otel-collector
        
      5. Revisa los registros en busca de errores:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configura el reenvío de syslog de APM de F5 BIG-IP

  1. Accede a la interfaz web de F5 BIG-IP (TMUI/utilidad de configuración).
  2. Ve a System > Logs > Configuration > Remote Logging.
  3. En la sección Registro remoto, proporciona los siguientes detalles de configuración:
    • IP remota: Ingresa la dirección IP del host del agente de Bindplane.
    • Puerto remoto: Ingresa 514.
  4. Haz clic en Agregar.
  5. Haz clic en Actualizar para guardar la configuración.
  6. Para configurar el registro de alta velocidad (HSL) para los registros detallados de APM a través de la CLI, haz lo siguiente:

    1. Establece la conexión SSH al sistema F5 BIG-IP.
    2. Ejecuta los siguientes comandos:

      tmsh create ltm pool syslog_pool members add { BINDPLANE_IP:514 }
      tmsh create sys log-config destination remote-high-speed-log secops_hsl pool-name syslog_pool protocol udp
      tmsh create sys log-config destination remote-syslog secops_syslog remote-high-speed-log secops_hsl
      tmsh create sys log-config publisher secops_publisher destinations add { secops_syslog }
      tmsh save sys config
      
      • Reemplaza BINDPLANE_IP por la dirección IP del host del agente de Bindplane.
  7. Asigna el publicador al perfil de acceso de APM:

    1. Ve a Access > Profiles / Policies > Access Profiles.
    2. Selecciona el perfil de acceso de destino.
    3. En la pestaña Log Settings, selecciona el editor creado.
    4. Haz clic en Actualizar.
  8. Para verificar que se envíen los mensajes de syslog, consulta los registros del agente de Bindplane.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
aplicación principal.application El valor se toma del campo de la aplicación que extrae el filtro de grok.
bytes_in network.received_bytes El valor se toma del campo bytes_in que extrae el filtro de grok y se convierte en un número entero sin signo.
bytes_out network.sent_bytes El valor se toma del campo bytes_out que extrae el filtro de grok y se convierte en un número entero sin signo.
cmd_data principal.process.command_line El valor se toma del campo cmd_data que extrae el filtro de kv.
destination_ip target.ip El valor se toma del campo destination_ip que extrae el filtro de grok.
destination_port target.port El valor se toma del campo destination_port que extrae el filtro de grok y se convierte en un número entero.
carpeta principal.process.file.full_path El valor se toma del campo de carpeta que extrae el filtro de kv.
geoCountry principal.location.country_or_region El valor se toma del campo geoCountry que extrae el filtro de grok.
geoState principal.location.state El valor se toma del campo geoState que extrae el filtro de grok.
inner_msg security_result.description El valor se toma del campo inner_msg que extrae el filtro de grok cuando no hay otra descripción específica disponible.
ip_protocol network.ip_protocol El valor se toma del campo ip_protocol que extrae el filtro de grok.
principal_hostname principal.hostname El valor se toma del campo principal_hostname que extrae el filtro de grok.
principal_ip principal.ip El valor se toma del campo principal_ip que extrae el filtro de grok.
process_id principal.process.pid El valor se toma del campo process_id que extrae el filtro de grok.
rol user_role.name El valor se toma del campo de rol que extrae el filtro de grok. Si el campo de rol contiene "admin" (sin distinción entre mayúsculas y minúsculas), el valor se establece en "ADMINISTRATOR".
gravedad, security_result.severity_details Aquí se almacena el valor original del mensaje de syslog. El valor se deriva del campo de gravedad con lógica condicional: , CRITICAL -> CRITICAL , ERR -> ERROR , ALERT, EMERGENCY -> HIGH , INFO, NOTICE -> INFORMATIONAL , DEBUG -> LOW , WARN -> MEDIUM
source_ip principal.ip El valor se toma del campo source_ip que extrae el filtro de grok.
source_port principal.port El valor se toma del campo source_port que extrae el filtro de grok y se convierte en un número entero.
estado security_result.summary El valor se toma del campo de estado que extrae el filtro de KV.
timestamp metadata.event_timestamp, timestamp El valor se toma del campo de marca de tiempo que extrae el filtro de grok y se analiza en un objeto de marca de tiempo. El campo de marca de tiempo en el objeto del evento de nivel superior también obtiene este valor.
usuario principal.user.userid El valor se toma del campo del usuario que extrae el filtro de grok, después de quitar los prefijos "id" o "ID". El valor se deriva en función de la presencia de otros campos: , Si existe el usuario: USER_UNCATEGORIZED , Si existen source_ip y destination_ip: NETWORK_CONNECTION , Si existen principal_ip o principal_hostname: STATUS_UPDATE , De lo contrario: GENERIC_EVENT Se codifica como "BIGIP_APM". Está codificado como "F5". Si el campo de resultado es "failed", el valor se establece en "BLOCK".

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.