Recopilar registros de HAProxy

Disponible en:

En este documento se explica cómo ingerir registros de HAProxy en Google Security Operations mediante Bindplane. El analizador de Logstash extrae campos de los mensajes syslog de HAProxy mediante una serie de reglas de coincidencia de patrones Grok, diseñadas específicamente para gestionar varios formatos de registro de HAProxy. A continuación, asigna los campos extraídos al modelo de datos unificado (UDM), enriquece los datos con contexto adicional y estandariza la representación para realizar análisis posteriores.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Windows 2016 o versiones posteriores, o un host Linux con systemd
  • Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
  • Acceso privilegiado a HAProxy

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

Instalación de ventanas

  1. Abre el símbolo del sistema 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 superusuario 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

Para ver más opciones de instalación, consulta la guía de instalación.

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

  1. 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).
  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
            ingestion_labels:
                log_type: 'HAPROXY'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Sustituye <customer_id> por el ID de cliente real.

  5. 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 Syslog para HAProxy

  1. Inicia sesión en HAproxy mediante la CLI.
  2. Añade la directiva log en la sección global de Configuration para reenviar mensajes Syslog a través de UDP.

    • Sustituye <bindplane-ips> por la dirección IP del agente de Bindplane.
    global
      log <bindplane-ip>:514 local0
    
    defaults
      log global
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
accept_date_ms
actconn
backend_name
backend_queue
beconn
bytes_read network.received_bytes Se extrae del campo bytes_read del registro y se convierte en un número entero sin signo.
captured_request_headers
client_ip principal.ip Extraído del campo client_ip del registro.
client_port principal.port Se extrae del campo client_port del registro y se convierte en un número entero.
command_description metadata.description Se extrae del campo command_description del registro, si está disponible. De lo contrario, se deriva de otros campos, como action o status, en función del mensaje de registro.
datetime metadata.event_timestamp.seconds Se extrae del campo datetime del registro, si está disponible. De lo contrario, se deriva del campo timestamp de la entrada de registro.
description metadata.description Se extrae del campo description del registro, si está disponible. De lo contrario, se deriva de otros campos, como command_description o action, en función del mensaje de registro.
feconn
frontend_name
http_request target.url Extraído del campo http_request del registro.
http_status_code network.http.response_code Se extrae del campo http_status_code del registro y se convierte en un número entero.
http_verb network.http.method Extraído del campo http_verb del registro.
http_version metadata.product_version Se extrae del campo http_version del registro y se le da el formato HTTP/{version}.
iniciador target.application Extraído del campo initiator del registro.
module
msg security_result.summary Extraído del campo msg del registro.
pid target.process.pid Extraído del campo pid del registro.
process
process_name target.application Extraído del campo process_name del registro.
retries
server_name target.hostname Extraído del campo server_name del registro. Si está vacío, se usa el valor de syslog_server de forma predeterminada.
gravedad security_result.severity Asignado desde el campo severity del registro. WARNING se asigna a MEDIUM, ALERT se asigna a CRITICAL y NOTICE se asigna a INFORMATIONAL.
shell
srv_queue
srvconn
status
syslog_server target.hostname, intermediary.hostname Extraído del campo syslog_server del registro. Se usa tanto para el nombre de host de destino (si server_name está vacío) como para el nombre de host intermediario.
syslog_timestamp
syslog_timestamp_1
syslog_timestamp_2
syslog_timestamp_4
target_ip
time_backend_connect
time_backend_response
time_duration
time_queue
time_request
timestamp metadata.event_timestamp.seconds Se extrae del campo timestamp del registro y se analiza para obtener información sobre la fecha y la hora. Se usa como marca de tiempo del evento.
unknown_parameters1
unknown_parameters2
user_name target.user.userid Extraído del campo user_name del registro.
metadata.event_type El valor predeterminado es NETWORK_HTTP. Se ha cambiado a tipos de eventos específicos, como PROCESS_UNCATEGORIZED, STATUS_UPDATE o USER_UNCATEGORIZED, en función del mensaje de registro y los campos analizados.
metadata.vendor_name Su valor debe ser HAProxy Enterprise.
metadata.product_name Su valor debe ser HAProxy.
network.application_protocol Asigna el valor HTTP si el campo message contiene HTTP.
metadata.log_type Su valor debe ser HAPROXY.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.