Coletar registros do switch Arista

Compatível com:

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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. 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

  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 raiz 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

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

  1. Acesse o arquivo de configuração:

    1. 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.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Notepad).
  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: '/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
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

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

  5. 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

  1. Faça login no switch Arista.
  2. Acesse o modo configuração:

    Arista# config terminal
    
  3. 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.
    
  4. 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
    
  5. 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.