Recolha registos do HAProxy
Este documento explica como carregar registos do HAProxy para o Google Security Operations usando o Bindplane. O analisador Logstash extrai campos de mensagens syslog do HAProxy usando uma série de regras de correspondência de padrões Grok, especificamente concebidas para processar vários formatos de registos do HAProxy. Em seguida, mapeia os campos extraídos para o modelo de dados unificado (UDM), enriquecendo os dados com contexto adicional e padronizando a representação para análise posterior.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- Acesso privilegiado ao HAProxy
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
- Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml
. Normalmente, encontra-se no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
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
Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>
pelo ID de cliente real.Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
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, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog para o HAProxy
- Inicie sessão no HAproxy através da CLI.
Adicione a diretiva log na secção global à Configuration para encaminhar mensagens Syslog através de UDP.
- Substitua
<bindplane-ips>
pelo endereço IP real do agente do Bindplane.
global log <bindplane-ip>:514 local0 defaults log global
- Substitua
Tabela de mapeamento do UDM
Campo de registo | 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 registo e convertido num número inteiro não assinado. |
captured_request_headers | ||
client_ip | principal.ip | Extraído do campo client_ip no registo. |
client_port | principal.port | Extraído do campo client_port no registo e convertido num número inteiro. |
command_description | metadata.description | Extraído do campo command_description no registo, se disponível. Caso contrário, é derivado de outros campos, como action ou status , consoante a mensagem de registo. |
datetime | metadata.event_timestamp.seconds | Extraído do campo datetime no registo, se disponível. Caso contrário, é derivado do campo timestamp na entrada do registo. |
descrição | metadata.description | Extraído do campo description no registo, se disponível. Caso contrário, é derivado de outros campos, como command_description ou action , consoante a mensagem de registo. |
feconn | ||
frontend_name | ||
http_request | target.url | Extraído do campo http_request no registo. |
http_status_code | network.http.response_code | Extraído do campo http_status_code no registo e convertido num número inteiro. |
http_verb | network.http.method | Extraído do campo http_verb no registo. |
http_version | metadata.product_version | Extraído do campo http_version no registo e formatado como HTTP/{version} . |
iniciador | target.application | Extraído do campo initiator no registo. |
módulo | ||
msg | security_result.summary | Extraído do campo msg no registo. |
pid | target.process.pid | Extraído do campo pid no registo. |
processar | ||
process_name | target.application | Extraído do campo process_name no registo. |
tentativas | ||
server_name | target.hostname | Extraído do campo server_name no registo. Se estiver vazio, o valor predefinido é o valor de syslog_server . |
gravidade | security_result.severity | Mapeado a partir do campo severity no registo. WARNING é mapeado para MEDIUM , ALERT é mapeado para CRITICAL e NOTICE é mapeado para INFORMATIONAL . |
shell | ||
srv_queue | ||
srvconn | ||
estado | ||
syslog_server | target.hostname, intermediary.hostname | Extraído do campo syslog_server no registo. Usado para o nome do anfitrião de destino (se server_name estiver vazio) e o nome do anfitrião 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 registo e analisado para obter informações de data e hora. Usado como a data/hora do evento. |
unknown_parameters1 | ||
unknown_parameters2 | ||
user_name | target.user.userid | Extraído do campo user_name no registo. |
metadata.event_type | Predefinido como NETWORK_HTTP . Alterado para tipos de eventos específicos, como PROCESS_UNCATEGORIZED , STATUS_UPDATE ou USER_UNCATEGORIZED , com base na mensagem de registo e nos campos analisados. |
|
metadata.vendor_name | Definido como HAProxy Enterprise . |
|
metadata.product_name | Definido como HAProxy . |
|
network.application_protocol | Defina como HTTP se o campo message contiver HTTP . |
|
metadata.log_type | Definido como HAPROXY . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.