Coletar registros EVE do Suricata
Este documento explica como ingerir registros EVE do Suricata no Google Security Operations usando o Bindplane.
O Suricata é um mecanismo de detecção de ameaças de rede de alto desempenho e código aberto que oferece recursos de detecção de intrusões (SDI), prevenção (IPS) e monitoramento de segurança de rede. A saída de registro do EVE (Extensible Event Format) fornece registros abrangentes formatados em JSON que abrangem alertas, fluxos, DNS, HTTP, TLS e dados de transações de arquivos. O analisador extrai campos de registros formatados em JSON do Suricata EVE. Ele analisa a mensagem JSON e mapeia esses valores para o Modelo Unificado de Dados (UDM, na sigla em inglês). Ele também define valores de metadados padrão para a origem e o tipo do evento.
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 - 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 privilegiado ao host do Suricata (root ou sudo)
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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 de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- 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 sistema operacional Windows ou Linux de acordo com as instruções a seguir.
Instalação do Windows
- Abra o prompt de comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietAguarde a conclusão da instalação.
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
- Abra um terminal com privilégios de root ou sudo.
Execute este comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shAguarde a conclusão da instalação.
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.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Editar o arquivo de configuração
Substitua todo o conteúdo de
config.yamlpela seguinte configuração: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: 'SURICATA_EVE' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Parâmetros de configuração
Substitua os seguintes marcadores de posição:
Configuração do receptor:
udplog: useudplogpara syslog UDP outcplogpara syslog TCP.0.0.0.0: endereço IP para escutar (0.0.0.0para escutar em todas as interfaces)514: número da porta a ser detectada (porta syslog padrão).
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
- Linux:
YOUR_CUSTOMER_ID: ID do cliente da seção "Receber ID do cliente"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.
- EUA:
log_type: tipo de registro exatamente como aparece no Chronicle (SURICATA_EVE)
Salve o arquivo de configuração.
- Depois de editar, salve o arquivo:
- Linux: pressione
Ctrl+O,EntereCtrl+X. - Windows: clique em Arquivo > Salvar.
- Linux: pressione
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-collectorVerifique se o serviço está em execução:
sudo systemctl status observiq-otel-collectorVerifique 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-collectorConsole de serviços:
- Pressione
Win+R, digiteservices.msce pressione Enter. - Localize o Coletor do OpenTelemetry da observIQ.
Clique com o botão direito do mouse e selecione Reiniciar.
Verifique se o serviço está em execução:
sc query observiq-otel-collectorVerifique se há erros nos registros:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Pressione
Configurar o encaminhamento de syslog do Suricata EVE
- Abra o arquivo de configuração do Suricata (normalmente
/etc/suricata/suricata.yaml). Localize a seção
outputse configure a saída do registro do EVE para o Syslog:outputs: - eve-log: enabled: yes filetype: syslog identity: "suricata" facility: local5 level: Info types: - alert: payload: yes payload-printable: yes packet: yes metadata: yes - http: extended: yes - dns: query: yes answer: yes - tls: extended: yes - files: force-magic: no - flow - netflow - anomaly: enabled: yes - stats: enabled: yesSe o daemon syslog não estiver configurado para encaminhar para o Bindplane, configure o rsyslog ou o syslog-ng:
Para rsyslog (edite
/etc/rsyslog.confou crie/etc/rsyslog.d/suricata.conf):local5.* @BINDPLANE_IP:514- Substitua
BINDPLANE_IPpelo endereço IP do host do agente do Bindplane. - Use
@para UDP ou@@para TCP.
- Substitua
Para syslog-ng (edite
/etc/syslog-ng/syslog-ng.conf):destination d_bindplane { udp("BINDPLANE_IP" port(514)); }; filter f_suricata { facility(local5); }; log { source(s_src); filter(f_suricata); destination(d_bindplane); };
Reinicie o daemon syslog:
sudo systemctl restart rsyslogReinicie o Suricata:
sudo systemctl restart suricataVerifique se as mensagens syslog estão sendo enviadas conferindo os registros do agente Bindplane.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| timestamp | metadata.event_timestamp | Carimbo de data/hora do evento |
| event_type | metadata.product_event_type | Tipo de evento EVE (por exemplo, alerta, fluxo, dns, http, tls) |
| src_ip | principal.ip | Endereço IP de origem |
| src_port | principal.port | Número da porta de origem |
| dest_ip | target.ip | Endereço IP de destino |
| dest_port | target.port | Número da porta de destino |
| proto | network.ip_protocol | Protocolo de rede (por exemplo, TCP, UDP, ICMP) |
| flow_id | network.session_id | Identificador exclusivo do fluxo |
| alert.signature | security_result.rule_name | Nome da assinatura do alerta |
| alert.signature_id | security_result.rule_id | Identificador de assinatura de alerta |
| alert.severity | security_result.severity | Nível de gravidade do alerta |
| alert.category | security_result.category_details | Categoria de classificação do alerta |
| alert.action | security_result.action | Ação realizada (por exemplo, permitida, bloqueada) |
| alert.rev | security_result.rule_version | Número da revisão da regra |
| http.hostname | target.hostname | Nome do host da solicitação HTTP |
| http.url | target.url | URL de solicitação HTTP |
| http.http_method | network.http.method | Método de solicitação HTTP |
| http.status | network.http.response_code | Código de status da resposta HTTP |
| http.http_user_agent | network.http.user_agent | String do user agent HTTP |
| http.http_refer | network.http.referral_url | URL do referenciador HTTP |
| http.length | additional.fields | Comprimento do conteúdo HTTP |
| dns.type | network.dns.type | Consulta ou resposta de DNS |
| dns.rrname | network.dns.questions.name | Nome da consulta DNS |
| dns.rrtype | network.dns.questions.type | Tipo de consulta DNS |
| dns.rdata | network.dns.answers.data | Dados de resposta do DNS |
| tls.subject | network.tls.client.subject | Assunto do certificado TLS |
| tls.issuerdn | network.tls.client.issuer | Emissor do certificado TLS |
| tls.sni | network.tls.client.server_name | Indicação de nome do servidor TLS |
| tls.version | network.tls.version | Versão TLS |
| tls.ja3.hash | network.tls.client.ja3 | Hash da impressão digital do cliente JA3 |
| tls.ja3s.hash | network.tls.server.ja3s | Hash da impressão digital do servidor JA3S |
| app_proto | network.application_protocol | Protocolo da camada de aplicativo detectado |
| flow.bytes_toserver | network.sent_bytes | Bytes enviados do cliente para o servidor |
| flow.bytes_toclient | network.received_bytes | Bytes enviados do servidor para o cliente |
| flow.pkts_toserver | additional.fields | Pacotes enviados do cliente para o servidor |
| flow.pkts_toclient | additional.fields | Pacotes enviados do servidor para o cliente |
| in_iface | additional.fields | Interface de rede de entrada |
| community_id | network.community_id | Hash do fluxo de ID da comunidade de rede. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.