Coletar registros do switch Dell

Versão do analisador:11.0

Compatível com:

Este documento explica como ingerir registros de switches Dell no Google Security Operations usando o agente Bindplane.

Esse analisador extrai registros de switches da Dell, normaliza carimbos de data/hora e usa padrões grok para estruturar a mensagem de registro em pares de chave-valor. Em seguida, ele mapeia esses campos extraídos para o modelo de dados unificado (UDM), processando vários formatos de registro e enriquecendo os dados com informações contextuais, como detalhes de recursos e gravidade da segurança.

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
  • Conectividade de rede entre o agente do Bindplane e o switch da Dell
  • Se 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.
  • Uma conexão ativa e credenciais administrativas para um switch Dell

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.
  4. Salve o arquivo com segurança no sistema em que o agente do 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

Instale o agente do Bindplane no sistema operacional Windows ou Linux de acordo com as instruções a seguir.

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
    
  3. Aguarde a conclusão da instalação.

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

  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
    
  3. Aguarde a conclusão da instalação.

  4. 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.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Editar o arquivo de configuração

  • Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/dell_switch:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: DELL_SWITCH
            raw_log_field: body
    
    service:
        pipelines:
            logs/dell_switch_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/dell_switch
    

Parâmetros de configuração

Substitua os seguintes marcadores de posição:

  • Configuração do receptor:

    • listen_address: endereço IP e porta a serem detectados:
      • 0.0.0.0 para detectar em todas as interfaces (recomendado)
      • A porta 514 é a porta padrão do syslog. Ela exige acesso root no Linux. Use 1514 para acesso não root.
  • 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
    • customer_id: ID do cliente copiado do console do Google SecOps
    • 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.

Salve o arquivo de configuração.

  • Depois de editar, salve o arquivo:
    • Linux: pressione Ctrl+O, Enter e Ctrl+X.
    • Windows: clique em Arquivo > Salvar.

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-collector
    
    1. Verifique se o serviço está em execução:

      sudo systemctl status observiq-otel-collector
      
    2. Verifique se há erros nos registros:

      sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar o agente do Bindplane no Windows, escolha uma das seguintes opções:

    • Prompt de comando ou PowerShell como administrador:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console de serviços:

      1. Pressione Win+R, digite services.msc e pressione Enter.
      2. Localize o Coletor do OpenTelemetry da observIQ.
      3. Clique com o botão direito do mouse e selecione Reiniciar.
      4. Verifique se o serviço está em execução:

        sc query observiq-otel-collector
        
      5. Verifique se há erros nos registros:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configurar a exportação do syslog de um switch Dell

  1. Conecte-se ao switch da Dell usando SSH ou a porta do console.
  2. Faça login com credenciais de administrador.
  3. Use o comando a seguir para especificar o endereço IP ou o nome do host do servidor syslog. Substitua <syslog-server-ip>, <udp|tcp> e <syslog-port-number> pelos detalhes reais:

    logging host <syslog-server-ip> transport <udp|tcp> port <syslog-port-number>
    
  4. Opcional: defina o nível mínimo de gravidade para que as mensagens sejam enviadas ao servidor syslog. Por exemplo, para registrar mensagens informativas e acima:

    logging level informational
    
  5. Salve a configuração em execução na configuração de inicialização para garantir que as mudanças persistam nas reinicializações:

    copy running-config startup-config
    
  6. Salve a configuração:

    write memory
    

Registros de amostra compatíveis do Dell Switch

  • SYSLOG

    {
      "priority": 165,
      "version": 1,
      "timestamp": "2023-10-12T12:37:17.249566+00:00",
      "hostname": "switch-lon-01",
      "app_name": "dn_alm",
      "proc_id": "940",
      "message": "Node.1-Unit.1:PRI [event], Dell EMC (OS10) %ALM_AUTH_EVENT: Authentication event was raised MESSAGE=pam_unix(sshd:session): session opened for user service_account by (uid=0)"
    }
    
  • JSON

    {
      "appname": "SNOOP",
      "facility": 23,
      "hostname": "access-switch-a1",
      "message": "snooping.c(2177) 70820228 %% DBG Report from intf Gi6/0/11 ignored -- no router ports on vlan 193",
      "priority": 191,
      "proc_id": "snoopTask"
    }
    
  • Formato de eventos / KV

    Events: 
      Eventid        = {38812} 
      Occurrencetime = {3 Sept 2024 00:06:06} 
      Eventseverity  = {Minor} 
      Jobid          = {30506} 
      Computer       = {backup-server-01} 
      Program        = {DatabaseAgent} 
      Description    = {Block Change Tracking is found DISABLED on Oracle DB [PROD_DB]. Incremental backups may run slow.}
    
  • Auditar SYSLOG

    {
        "priority": 110,
        "version": 1,
        "timestamp": "2023-12-12T00:58:26.893679+00:00",
        "hostname": "core-switch-palf",
        "app_name": ".clish",
        "proc_id": "29156",
        "message": "Node.1-Unit.1:PRI [audit], User sec_admin on /dev/pts/0 from 10.0.0.50 used cmd: 'terminal length 0' - completed"
    }
    
  • Formato de interceptação SNMP / TRAPMGR

    {
      "priority": 189,
      "version": 1,
      "timestamp": "2023-12-28T23:37:27.394Z",
      "hostname": "dist-switch-01",
      "app_name": "TRAPMGR",
      "proc_id": "trapTask",
      "extensions": {
        "origin_ip": "192.168.1.1",
        "software": "N3000_Series",
        "swVersion": "6.3.2.3"
      },
      "message": "traputil.c(721) 1056839 %% Gi1/0/5 is transitioned from the Learning state to the Forwarding state"
    }
    

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
acct principal.user.userid Usado como o userid se o campo user não estiver presente.
addr principal.asset.ip, principal.ip Analisado como um endereço IP e usado para o IP principal e o IP do recurso, se for um IP válido e diferente do nome do host.
application principal.application Mapeado diretamente.
asset principal.asset.attribute.labels.value Mapeado diretamente para o valor do rótulo do recurso, com a chave codificada como "Nome do recurso". Se o campo de recurso estiver vazio e a mensagem contiver "Dell", o recurso será definido como "Dell".
auid principal.resource.attribute.labels.value Mapeado diretamente para um rótulo com a chave auid em principal.resource.attribute.labels.
datetime metadata.event_timestamp Analisado de vários formatos no campo de mensagem e convertido em um carimbo de data/hora.
dest_ip target.asset.ip, target.ip Mapeado para o IP de destino e o IP do recurso de destino.
enterpriseId principal.resource.attribute.labels.value Mapeado para um rótulo com a chave enterpriseId em principal.resource.attribute.labels.
exe sec_result.detection_fields.value Associado a um campo de detecção com a chave exe.
File target.file.full_path Mapeado diretamente.
grantors principal.resource.attribute.labels.value Mapeado para um rótulo com a chave grantors em principal.resource.attribute.labels.
host principal.hostname, principal.asset.hostname, metadata.event_type Usado como nome do host principal e do recurso. Se host estiver presente, metadata.event_type será definido como STATUS_UPDATE. Se o nome do host estiver presente, mas o host não, o nome do host será usado como host.
hostname principal.asset.ip, principal.ip, host Se for um IP válido, usado para IP principal e IP de recurso. Se host estiver vazio, ele será usado como host.
ID principal.resource.attribute.labels.value Mapeado para um rótulo com a chave ID em principal.resource.attribute.labels.
ip principal.asset.ip, principal.ip Mapeado para o IP principal e o IP do recurso.
is_synced sec_result.detection_fields.value Associado a um campo de detecção com a chave is_synced.
local target.asset.ip, target.ip, target.port Analisado para extrair o IP e a porta locais, mapeados para o IP de destino, o IP do recurso de destino e a porta de destino.
local_ip target.asset.ip, target.ip Extraído do campo local e mapeado para o IP de destino e o IP do recurso de destino.
local_port target.port Extraído do campo local e mapeado para a porta de destino.
mac principal.mac Se for um endereço MAC válido, mapeado para o endereço MAC principal.
msg metadata.description Usado como a descrição do evento, se presente. Também analisado para outros campos.
msg1 metadata.description Usado como descrição do evento se msg2 não estiver presente.
msg2 sec_result.description, metadata.event_type, extensions.auth.type Usado como descrição do resultado de segurança. Se ele contiver "opened for user", o tipo de evento será definido como USER_LOGIN e o tipo de autenticação como MACHINE. Se ele contiver "closed for user", o tipo de evento será definido como USER_LOGOUT e o tipo de autenticação como MACHINE.
op metadata.product_event_type Usado como tipo de evento de produto, se presente.
pid principal.process.pid Mapeado diretamente.
port principal.port Mapeado diretamente.
prod_event_type metadata.product_event_type Usado como tipo de evento de produto, se presente.
res sec_result.summary Mapeado diretamente.
sec_description sec_result.description, target.url, target.ip, target.asset.ip, sec_result.action_details Analisado para URL de destino, IP, detalhes da ação e usado como descrição do resultado de segurança.
Server_ID target.resource.product_object_id Mapeado diretamente.
server principal.asset.ip, principal.ip, principal.port Analisado para extrair o IP e a porta do servidor, mapeado para o IP principal, o IP do recurso principal e a porta principal.
server_ip principal.asset.ip, principal.ip Extraído do campo server e mapeado para o IP principal e o IP do recurso principal.
server_port principal.port Extraído do campo server e mapeado para a porta principal.
ses network.session_id Mapeado diretamente.
severity sec_result.severity, metadata.product_event_type Usado para determinar a gravidade do resultado de segurança e o tipo de evento do produto com base em valores específicos.
software principal.asset.software Mapeado diretamente.
softwareName software.name Mapeado diretamente.
Status sec_result.summary Usado como o resumo do resultado de segurança se res não estiver presente.
subj principal.resource.attribute.labels.value Mapeado para um rótulo com a chave subj em principal.resource.attribute.labels.
swVersion software.version Mapeado diretamente.
target_host target.hostname, target.asset.hostname Mapeado diretamente para o nome do host de destino e o nome do host do recurso de destino.
target_ip target.asset.ip, target.ip Mapeado diretamente para o IP de destino e o IP do recurso de destino.
target_url target.url Mapeado diretamente.
target_user_id target.user.userid Mapeado diretamente.
terminal principal.resource.attribute.labels.value Mapeado para um rótulo com a chave terminal em principal.resource.attribute.labels.
tzknown sec_result.detection_fields.value Associado a um campo de detecção com a chave tzknown.
uid principal.resource.attribute.labels.value Mapeado para um rótulo com a chave uid em principal.resource.attribute.labels.
user principal.user.userid, metadata.event_type Usado como ID do usuário principal. Se user estiver presente, metadata.event_type será definido como USER_UNCATEGORIZED.
username target.user.userid Mapeado diretamente para o ID do usuário de destino.
N/A metadata.vendor_name Fixado no código como "Dell".
N/A metadata.product_name Fixado no código como "Dell Switch".
N/A extensions.auth.type Definido como MACHINE para eventos específicos de login/logout.
N/A metadata.event_type Determinado por uma lógica complexa com base em vários campos e condições. O padrão é GENERIC_EVENT, a menos que seja definido de outra forma. Pode ser USER_LOGIN, USER_LOGOUT, USER_UNCATEGORIZED, NETWORK_CONNECTION, NETWORK_UNCATEGORIZED, STATUS_UPDATE ou GENERIC_EVENT.
reason_code event.idm.read_only_udm.security_result.detection_fields Mapeado do registro de mudanças
Eventid metadata.product_log_id Mapeado do registro de mudanças
Eventseverity security_result.severity Mapeado do registro de mudanças
Computer principal.hostname Mapeado do registro de mudanças
Program principal.application Mapeado do registro de mudanças
Description security_result.description Mapeado do registro de mudanças
tzknown", "is_synced" and "exe security_result.detection_fields Mapeado do registro de mudanças
res security_result.summary Mapeado do registro de mudanças
status security_result.summary Mapeado do registro de mudanças
uid", "enterpriseId", "auid", "terminal", "subj", "grantors", and "ID principal.resource.attribute.labels Mapeado do registro de mudanças
sec_description security_result.description Mapeado do registro de mudanças
action_details security_result.action_details Mapeado do registro de mudanças
softwareName principal.asset.software.name Mapeado do registro de mudanças
swVersion principal.asset.software.version Mapeado do registro de mudanças
port principal_port Mapeado do registro de mudanças

Registro de alterações

Ver o registro de alterações deste analisador

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