Coletar registros do HAProxy

Compatível com:

Este documento explica como ingerir registros do HAProxy no Google Security Operations usando o Bindplane. O analisador do Logstash extrai campos de mensagens syslog do HAProxy usando uma série de regras de correspondência de padrões Grok, projetadas especificamente para processar vários formatos de registro do HAProxy. Em seguida, ele mapeia os campos extraídos para o Modelo de Dados Unificado (UDM, na sigla em inglês), enriquecendo os dados com mais contexto e padronizando a representação para análise posterior.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Acesso privilegiado ao HAProxy

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

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

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. Execute este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Outros recursos de instalação

Para mais opções de instalação, consulte o guia de instalação.

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo config.yaml da seguinte forma:

    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. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID do cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

  • Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Syslog para HAProxy

  1. Faça login no HAproxy usando a CLI.
  2. Adicione a diretiva log na seção global à Configuration para encaminhar mensagens Syslog por UDP.

    • Substitua <bindplane-ips> pelo endereço IP real do agente do Bindplane.
    global
      log <bindplane-ip>:514 local0
    
    defaults
      log global
    

Tabela de mapeamento da UDM

Campo de registro Mapeamento da UDM Lógica
accept_date_ms
actconn
backend_name
backend_queue
beconn
bytes_read network.received_bytes Extraído do campo bytes_read no registro e convertido em um número inteiro sem sinal.
captured_request_headers
client_ip principal.ip Extraído do campo client_ip no registro.
client_port principal.port Extraído do campo client_port no registro e convertido em um número inteiro.
command_description metadata.description Extraído do campo command_description no registro, se disponível. Caso contrário, ele será derivado de outros campos, como action ou status, dependendo da mensagem de registro.
datetime metadata.event_timestamp.seconds Extraído do campo datetime no registro, se disponível. Caso contrário, ele será derivado do campo timestamp na entrada de registro.
description metadata.description Extraído do campo description no registro, se disponível. Caso contrário, ele será derivado de outros campos, como command_description ou action, dependendo da mensagem de registro.
feconn
frontend_name
http_request target.url Extraído do campo http_request no registro.
http_status_code network.http.response_code Extraído do campo http_status_code no registro e convertido em um número inteiro.
http_verb network.http.method Extraído do campo http_verb no registro.
http_version metadata.product_version Extraído do campo http_version no registro e formatado como HTTP/{version}.
iniciador target.application Extraído do campo initiator no registro.
module
msg security_result.summary Extraído do campo msg no registro.
pid target.process.pid Extraído do campo pid no registro.
difusão reversa que restaura
process_name target.application Extraído do campo process_name no registro.
retries
server_name target.hostname Extraído do campo server_name no registro. Se estiver vazio, o padrão será o valor de syslog_server.
gravidade, security_result.severity Mapeado do campo severity no registro. WARNING é mapeado para MEDIUM, ALERT é mapeado para CRITICAL e NOTICE é mapeado para INFORMATIONAL.
shell
srv_queue
srvconn
status
syslog_server target.hostname, intermediary.hostname Extraído do campo syslog_server no registro. Usado para o nome do host de destino (se server_name estiver vazio) e o nome do host intermediário.
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 Extraído do campo timestamp no registro e analisado para informações de data e hora. Usado como o carimbo de data/hora do evento.
unknown_parameters1
unknown_parameters2
user_name target.user.userid Extraído do campo user_name no registro.
metadata.event_type Definido como NETWORK_HTTP por padrão. Mudou para tipos de eventos específicos, como PROCESS_UNCATEGORIZED, STATUS_UPDATE ou USER_UNCATEGORIZED, com base na mensagem de registro e nos campos analisados.
metadata.vendor_name Defina como HAProxy Enterprise.
metadata.product_name Defina como HAProxy.
network.application_protocol Defina como HTTP se o campo message contiver HTTP.
metadata.log_type Defina como HAPROXY.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.