Coletar registros do HAProxy

Compatível com:

Este documento explica como ingerir registros do HAProxy no Google Security Operations usando o agente Bindplane.

O HAProxy é um balanceador de carga de alta disponibilidade e um servidor proxy que gera mensagens do syslog para solicitações HTTP, eventos de conexão, verificações de integridade de back-end e atividade de processo. O analisador usa a correspondência de padrões Grok para extrair campos de vários formatos de registro do HAProxy e os mapeia para o modelo de dados unificado (UDM).

Antes de começar

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

  • Uma instância do Google SecOps
  • Windows Server 2016 ou mais recente ou host Linux com systemd
  • Conectividade de rede entre o agente do Bindplane e o servidor HAProxy
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente Bindplane.
  • Acesso administrativo à configuração do 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.
  4. Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.

Receber o ID de 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

Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.

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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

    O serviço vai aparecer como EM EXECUÇÃO.

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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sudo systemctl status observiq-otel-collector
    

    O serviço vai aparecer como ativo (em execução).

Outros recursos de instalação

Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.

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

Localizar o arquivo de configuração

  • Linux:

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

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

Editar o arquivo de configuração

  • Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/haproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: HAPROXY
            raw_log_field: body
    
    service:
        pipelines:
            logs/haproxy_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/haproxy
    

Parâmetros de configuração

Substitua os seguintes marcadores de posição:

  • Configuração do receptor:

    • listen_address: endereço IP e porta a serem detectados:
      • 0.0.0.0 para detectar em todas as interfaces (recomendado)
      • A porta 514 é a porta padrão do syslog (requer raiz no Linux; use 1514 para não raiz)
  • Configuração do exportador:

    • creds_file_path: caminho completo para o arquivo de autenticação de ingestão:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: ID do cliente copiado do console do Google SecOps
    • endpoint: URL do endpoint regional:
      • EUA: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Ásia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Consulte a lista completa em Endpoints regionais.

Salve o arquivo de configuração.

  • Depois de editar, salve o arquivo:
    • Linux: pressione Ctrl+O, Enter e Ctrl+X.
    • Windows: clique em Arquivo > Salvar.

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 observiq-otel-collector
    
    1. Verifique se o serviço está em execução:

      sudo systemctl status observiq-otel-collector
      
    2. Verifique se há erros nos registros:

      sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar o agente do Bindplane em Windows, escolha uma das seguintes opções:

    • Prompt de comando ou PowerShell como administrador:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console de serviços:

      1. Pressione Win+R, digite services.msc e pressione Enter.
      2. Localize o Coletor do OpenTelemetry da observIQ.
      3. Clique com o botão direito do mouse e selecione Reiniciar.
      4. Verifique se o serviço está em execução:

        sc query observiq-otel-collector
        
      5. Verifique se há erros nos registros:

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

Configurar o syslog para HAProxy

  1. Faça login no HAProxy usando a CLI.
  2. Adicione a diretiva log na seção global da Configuração para encaminhar mensagens syslog por UDP.

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

Tabela de mapeamento do UDM

Campo de registro Mapeamento do 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.
descrição 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}.
initiator 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.