Recolha registos de comutadores Arista

Compatível com:

Este analisador extrai campos dos registos do comutador Arista, processando formatos JSON e syslog. Usa padrões grok para analisar vários tipos de mensagens de registo, mapeando os campos extraídos para o UDM e enriquecendo os eventos com metadados, como o tipo de evento, a gravidade e as informações principais/de destino com base nos detalhes extraídos.

Antes de começar

  • Certifique-se de que tem uma instância do Google SecOps.
  • Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com systemd.
  • Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
  • Instalado e acessível no Arista EOS 4.23.x e superior.
  • Certifique-se de que tem acesso privilegiado no comutador Arista EOS.

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte 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 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

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. 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.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. 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: '/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 de cliente real.

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

Configurar o Syslog no comutador Arista

  1. Inicie sessão no comutador Arista.
  2. Aceda ao modo de configuração:

    Arista# config terminal
    
  3. Forneça ao comutador a seguinte configuração para enviar registos para o 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. Introduza a configuração adicional para os registos 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. Introduza a configuração adicional para os registos de início de sessão:

    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 da UDM

Campo de registo Mapeamento de UDM Lógica
appname target.application Mapeado diretamente a partir do campo appname.
description metadata.description Mapeado diretamente a partir do campo description, que é extraído do campo message através de padrões grok baseados no product_event_type.
dst_ip target.ip, target.asset.ip Mapeado diretamente a partir do campo dst_ip, que é extraído do campo message através de padrões grok.
dst_mac target.mac Mapeado diretamente a partir do campo dst_mac, que é extraído do campo message através de padrões grok.
dst_port target.port Mapeado diretamente a partir do campo dst_port, que é extraído do campo message através de padrões grok.
facility additional.fields[facility].string_value Mapeado diretamente a partir do campo facility.
hostname principal.hostname, principal.asset.hostname Mapeado diretamente a partir do campo hostname.
inner_msg metadata.description Mapeado diretamente a partir do campo inner_msg, que é extraído do campo message através de padrões grok.
ip_protocol network.ip_protocol Mapeado diretamente a partir do campo ip_protocol, que é extraído do campo message através de padrões grok. Se o valor for "tcp", é convertido em "TCP". Se o tipo de evento for "NO_IGMP_QUERIER", é definido como "IGMP".
pid principal.process.pid Mapeado diretamente a partir do campo pid, que é extraído do campo message através de padrões grok.
prin_ip principal.ip, principal.asset.ip Mapeado diretamente a partir do campo prin_ip, que é extraído do campo message através de padrões grok.
product_event_type metadata.product_event_type Mapeado diretamente a partir do campo product_event_type, que é extraído do campo message através de padrões grok.
proto network.application_protocol Se o campo proto for "sshd", o campo UDM é 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 está mapeado para security_result.severity_details.
session_id network.session_id Mapeado diretamente a partir do campo session_id, que é extraído do campo message através de padrões grok.
source_ip principal.ip, principal.asset.ip Mapeado diretamente a partir do campo source_ip, que é extraído do campo message através de padrões grok.
source_port principal.port Mapeado diretamente a partir do campo source_port, que é extraído do campo message através de padrões grok.
src_ip principal.ip, principal.asset.ip Mapeado diretamente a partir do campo src_ip, que é extraído do campo message através de padrões grok.
table_name target.resource.name Mapeado diretamente a partir do campo table_name, que é extraído do campo message através de padrões grok. Se este campo for preenchido, target.resource.resource_type é definido como "TABLE".
target_host target.hostname, target.asset.hostname Mapeado diretamente a partir do campo target_host, que é extraído do campo message através de padrões grok.
target_ip target.ip, target.asset.ip Mapeado diretamente a partir do campo target_ip, que é extraído do campo message através de padrões grok.
target_package target.process.command_line Mapeado diretamente a partir do campo target_package, que é extraído do campo message através de padrões grok.
target_port target.port Mapeado diretamente a partir do campo target_port, que é extraído do campo message através de padrões grok.
timestamp metadata.event_timestamp Mapeado diretamente a partir do campo timestamp após a análise num objeto de data/hora.
user principal.user.userid Mapeado diretamente a partir do campo user, que é extraído do campo message através de padrões grok.
user_name target.user.userid Mapeado diretamente a partir do campo user_name, que é extraído do campo message através de padrões grok.
vrf additional.fields[vrf].string_value Mapeado diretamente a partir do campo vrf, que é extraído do campo message através de padrões grok. Derivado de uma combinação dos campos has_principal, has_target, user, message, product_event_type e description através de uma lógica condicional complexa, conforme descrito no código do analisador. O valor predefinido é "GENERIC_EVENT". Codificado de forma rígida para "ARISTA_SWITCH". Codificado de forma rígida para "Arista Switch". Codificado de forma rígida para "Arista". Definido como "BLOCK" se o campo description contiver "connection rejected".
dpid additional.fields[DPID].string_value Mapeado diretamente a partir do campo dpid.
intf additional.fields[intf].string_value Mapeado diretamente a partir do campo intf.

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