Coletar registros do switch Arista
Esse analisador extrai campos dos registros de chaves Arista, processando formatos JSON e syslog. Ele usa padrões grok para analisar vários tipos de mensagem de registro, mapeando campos extraídos para a UDM e enriquecendo eventos com metadados, como tipo de evento, gravidade e informações principais/alvo com base nos detalhes extraídos.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Arista EOS 4.23.x e versões mais recentes instalados e acessíveis.
- Confira se você tem acesso privilegiado ao switch Arista EOS.
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.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança 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
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" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
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 este guia de instalação.
Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está 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 Notepad).
- Localize o arquivo
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: '/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: ARISTA_SWITCH 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 real do cliente.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de transferência 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 Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Como configurar o Syslog no switch Arista
- Faça login no switch Arista.
Acesse o modo configuração:
Arista# config terminal
Forneça a chave com a configuração a seguir para enviar registros ao agente do Bindplane.
Arista(config)# logging host <bindplane-server-ip> <port-number> protocol [tcp/udp] Arista(config)# logging trap information Arista(config)# copy running-config startup-config
* Replace `<bindplane-server-ip>` with Bindplane agent IP address and `<port-number>` with the port configured to listen.
Insira uma configuração adicional para os registros de execução de comando:
Arista (config)# aaa accounting commands all console start-stop logging Arista (config)# aaa accounting commands all default start-stop logging Arista (config)# aaa accounting exec console start-stop logging Arista (config)# aaa accounting exec default start-stop logging Arista (config)# copy running-config startup-config
Insira uma configuração extra para os registros de login:
Arista (config)# aaa authentication policy on-success log Arista (config)# aaa authentication policy on-failure log Arista (config)# copy running-config startup-config
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
appname |
target.application |
Mapeado diretamente do campo appname . |
description |
metadata.description |
Mapeado diretamente do campo description , que é extraído do campo message usando padrões grok com base no product_event_type . |
dst_ip |
target.ip , target.asset.ip |
Mapeado diretamente do campo dst_ip , que é extraído do campo message usando padrões grok. |
dst_mac |
target.mac |
Mapeado diretamente do campo dst_mac , que é extraído do campo message usando padrões grok. |
dst_port |
target.port |
Mapeado diretamente do campo dst_port , que é extraído do campo message usando padrões grok. |
facility |
additional.fields[facility].string_value |
Mapeado diretamente do campo facility . |
hostname |
principal.hostname , principal.asset.hostname |
Mapeado diretamente do campo hostname . |
inner_msg |
metadata.description |
Mapeado diretamente do campo inner_msg , que é extraído do campo message usando padrões grok. |
ip_protocol |
network.ip_protocol |
Mapeado diretamente do campo ip_protocol , que é extraído do campo message usando padrões grok. Se o valor for "tcp", ele será convertido em "TCP". Se o tipo de evento for "NO_IGMP_QUERIER", ele será definido como "IGMP". |
pid |
principal.process.pid |
Mapeado diretamente do campo pid , que é extraído do campo message usando padrões grok. |
prin_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo prin_ip , que é extraído do campo message usando padrões grok. |
product_event_type |
metadata.product_event_type |
Mapeado diretamente do campo product_event_type , que é extraído do campo message usando padrões grok. |
proto |
network.application_protocol |
Se o campo proto for "sshd", o campo do UDM será definido como "SSH". |
severity |
security_result.severity , security_result.severity_details |
O security_result.severity é derivado do campo severity com base nestes mapeamentos: "DEFAULT", "DEBUG", "INFO", "NOTICE" -> "INFORMATIONAL"; "WARNING", "ERROR", "ERR", "WARN" -> "MEDIUM"; "CRITICAL", "ALERT", "EMERGENCY" -> "HIGH". O valor bruto de severity é mapeado para security_result.severity_details . |
session_id |
network.session_id |
Mapeado diretamente do campo session_id , que é extraído do campo message usando padrões grok. |
source_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo source_ip , que é extraído do campo message usando padrões grok. |
source_port |
principal.port |
Mapeado diretamente do campo source_port , que é extraído do campo message usando padrões grok. |
src_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo src_ip , que é extraído do campo message usando padrões grok. |
table_name |
target.resource.name |
Mapeado diretamente do campo table_name , que é extraído do campo message usando padrões grok. Se esse campo for preenchido, target.resource.resource_type será definido como "TABLE". |
target_host |
target.hostname , target.asset.hostname |
Mapeado diretamente do campo target_host , que é extraído do campo message usando padrões grok. |
target_ip |
target.ip , target.asset.ip |
Mapeado diretamente do campo target_ip , que é extraído do campo message usando padrões grok. |
target_package |
target.process.command_line |
Mapeado diretamente do campo target_package , que é extraído do campo message usando padrões grok. |
target_port |
target.port |
Mapeado diretamente do campo target_port , que é extraído do campo message usando padrões grok. |
timestamp |
metadata.event_timestamp |
Mapeado diretamente do campo timestamp após ser analisado em um objeto de carimbo de data/hora. |
user |
principal.user.userid |
Mapeado diretamente do campo user , que é extraído do campo message usando padrões grok. |
user_name |
target.user.userid |
Mapeado diretamente do campo user_name , que é extraído do campo message usando padrões grok. |
vrf |
additional.fields[vrf].string_value |
Mapeado diretamente do campo vrf , que é extraído do campo message usando padrões grok. Derivado de uma combinação de campos has_principal , has_target , user , message , product_event_type e description usando uma lógica condicional complexa, conforme descrito no código do analisador. O valor padrão é "GENERIC_EVENT". Fixado em "ARISTA_SWITCH". Fixado em "Arista Switch". Fixado em "Arista". Defina como "BLOCK" se o campo description contiver "conexão rejeitada". |
dpid |
additional.fields[DPID].string_value |
Mapeado diretamente do campo dpid . |
intf |
additional.fields[intf].string_value |
Mapeado diretamente do campo intf . |
Alterações
2024-06-07
Melhoria:
- Foi adicionado um padrão Grok para analisar o novo padrão de registros no formato SYSLOG.
- "principal_mac" foi mapeado para "principal.mac".
- "principal_port" foi mapeado para "principal.port".
2024-03-17
Melhoria:
- Um padrão Grok foi adicionado para analisar registros no formato SYSLOG.
- Mapeamos "user" para "principal.user.userid".
- "Proto" foi mapeado para "network.application_protocol".
- "prin_ip" foi mapeado para "principal.ip".
2022-08-03
- Parser recém-criado.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.