Coletar registros do switch Arista

Compatível com:

Esse analisador extrai campos de registros de switches da Arista, processando formatos JSON e syslog. Ele usa padrões grok para analisar vários tipos de mensagens de registro, mapeando campos extraídos para a UDM e enriquecendo eventos com metadados, como tipo de evento, gravidade e informações principais/de destino com base nos detalhes extraídos.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Use o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se você 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 instaladas e acessíveis.
  • Verifique se você tem acesso privilegiado no 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. 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 do 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 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
    

Outros recursos de instalação

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

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele fica 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 Bloco de Notas).
  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 do cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão 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 Serviços ou insira 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 opção com a seguinte configuração 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 outras configurações para registros de execução de comandos:

    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 outra configuração para os registros de logon:

    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 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 depois de 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 dos 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". Codificado como "ARISTA_SWITCH". Codificado como "Arista Switch". Codificado como "Arista". Definido como "BLOCK" se o campo description contiver "connection rejected".
dpid additional.fields[DPID].string_value Mapeado diretamente do campo dpid.
intf additional.fields[intf].string_value Mapeado diretamente do campo intf.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.