Coletar registros do Cisco eStreamer

Compatível com:

Este documento explica como ingerir registros do Cisco eStreamer no Google Security Operations usando o Bindplane. O analisador extrai campos das mensagens SYSLOG no formato chave-valor, usando grok para analisar a mensagem inicial e kv para processar os dados chave-valor. Em seguida, ele mapeia esses campos extraídos para o modelo de dados unificado (UDM), processando vários tipos de dados e enriquecendo o evento com metadados, como o tipo de evento, com base na presença de informações principais e de destino.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Um host Windows Server 2012 SP2 ou posterior ou Linux com systemd
  • Se você 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.
  • Acesso privilegiado ao Cisco Firepower Management Center (FMC)
  • Um sistema Linux para executar o cliente da CLI eNcore

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

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

Para mais opções de instalação, consulte o guia de instalação.

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

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /opt/observiq-otel-collector/ no Linux ou no diretório "C:\Arquivos de Programas\observIQ OpenTelemetry Collector" no Windows.
    • 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_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'CISCO_ESTREAMER'
        raw_log_field: body
        ingestion_labels:
    
    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 do cliente real.
    • 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 em 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
    

Configurar o encaminhamento de syslog no Cisco eStreamer

Configurar o eStreamer no Firepower Management Center

  1. Faça login no Firepower Management Center.
  2. Acesse Sistema > Integração > eStreamer.
  3. Clique em eStreamer para acessar a configuração de eventos do eStreamer.
  4. Marque as caixas de seleção ao lado dos tipos de eventos que você quer capturar:
    • Eventos de intrusão: para eventos detecção de intrusões
    • Dados de pacotes de eventos de intrusão: para capturas de pacotes associadas a eventos de intrusão.
    • Eventos de conexão: para dados de conexão de rede
    • Eventos de inteligência de segurança: para dados de inteligência de ameaças
    • Eventos de arquivo: para eventos de análise de arquivos
    • Eventos de malware: para eventos de detecção de malware
  5. Clique em Salvar.

Criar cliente eStreamer

  1. Na página eStreamer, clique em Criar cliente.
  2. Informe os seguintes detalhes de configuração:
    • Nome do host: insira o endereço IP do sistema Linux em que o cliente eNcore será executado.
    • Senha: insira uma senha para criptografar o arquivo de certificado.
  3. Clique em Salvar.
  4. Faça o download do arquivo de certificado PKCS12 gerado e transfira para o sistema cliente do eNcore.

Instalar e configurar o cliente da CLI eNcore

  1. No sistema Linux, faça o download do cliente da CLI eStreamer eNcore da Cisco.
  2. Extraia o pacote eNcore:

    tar -xzf eStreamer-eNcore-*.tar.gz
    cd eStreamer-eNcore-*
    
  3. Execute o script de configuração:

    ./encore.sh setup
    
  4. Quando solicitado, escolha o formato de saída para pares de chave-valor (compatível com sistemas SIEM).

  5. Digite o endereço IP do FMC e a senha do certificado PKCS12.

  6. Configure o arquivo estreamer.conf para gerar mensagens syslog no seu agente do Bindplane:

    • Abra o arquivo estreamer.conf em um editor de texto.
    • Localize a seção "outputters" e configure-a para enviar syslog ao agente do Bindplane:

      {
        "handler": {
          "outputters": [
            {
              "name": "syslog",
              "adapter": "kvpair",
              "enabled": true,
              "stream": {
                "uri": "udp://BINDPLANE_AGENT_IP:514"
              }
            }
          ]
        }
      }
      
  7. Substitua BINDPLANE_AGENT_IP pelo endereço IP do seu agente do Bindplane.

Iniciar o cliente eNcore

  1. Teste a conexão no modo em primeiro plano:

    ./encore.sh foreground
    
  2. Depois de verificar, inicie o eNcore como um serviço em segundo plano:

    ./encore.sh start
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
act security_result.action_details O valor de act do registro bruto é atribuído a esse campo.
act security_result.action Se o valor de act for "Allow" (sem distinção entre maiúsculas e minúsculas), o valor "ALLOW" será atribuído a esse campo.
app network.http.user_agent O valor de app (renomeado como requestClientApplication no analisador) do registro bruto é atribuído a esse campo.
blockLength security_result.detection_fields[].key A string "blocklength" é atribuída a esse campo.
blockLength security_result.detection_fields[].value O valor de blockLength do registro bruto, convertido em uma string, é atribuído a esse campo.
blockType security_result.detection_fields[].key A string "blockType" é atribuída a esse campo.
blockType security_result.detection_fields[].value O valor de blockType do registro bruto, convertido em uma string, é atribuído a esse campo.
bytesIn network.received_bytes O valor de bytesIn do registro bruto é atribuído a esse campo e convertido em um número inteiro sem sinal.
bytesOut network.sent_bytes O valor de bytesOut do registro bruto é atribuído a esse campo e convertido em um número inteiro sem sinal.
cat security_result.category_details O valor de cat do registro bruto é atribuído a esse campo.
cs1 security_result.detection_fields[].value O valor de cs1 do registro bruto é atribuído a esse campo.
cs1Label security_result.detection_fields[].key O valor de cs1Label do registro bruto é atribuído a esse campo.
cs2 security_result.detection_fields[].value O valor de cs2 do registro bruto é atribuído a esse campo.
cs2Label security_result.detection_fields[].key O valor de cs2Label do registro bruto é atribuído a esse campo.
cs3 security_result.detection_fields[].value O valor de cs3 do registro bruto é atribuído a esse campo.
cs3Label security_result.detection_fields[].key O valor de cs3Label do registro bruto é atribuído a esse campo.
cs4 security_result.detection_fields[].value O valor de cs4 do registro bruto é atribuído a esse campo.
cs4Label security_result.detection_fields[].key O valor de cs4Label do registro bruto é atribuído a esse campo.
cs5 security_result.detection_fields[].value O valor de cs5 do registro bruto é atribuído a esse campo.
cs5Label security_result.detection_fields[].key O valor de cs5Label do registro bruto é atribuído a esse campo.
cs6 security_result.detection_fields[].value O valor de cs6 do registro bruto é atribuído a esse campo.
cs6 security_result.rule_id O valor de cs6 do registro bruto é atribuído a esse campo.
cs6Label security_result.detection_fields[].key O valor de cs6Label do registro bruto é atribuído a esse campo.
data security_result.detection_fields[].value O valor de data do objeto JSON suser no registro bruto é atribuído a esse campo se o campo suser for um JSON.
deviceInboundInterface additional.fields[].key A string "deviceInboundInterface" é atribuída a esse campo.
deviceInboundInterface additional.fields[].value.string_value O valor de deviceInboundInterface do registro bruto é atribuído a esse campo.
deviceOutboundInterface additional.fields[].key A string "deviceOutboundInterface" é atribuída a esse campo.
deviceOutboundInterface additional.fields[].value.string_value O valor de deviceOutboundInterface do registro bruto é atribuído a esse campo.
dpt target.port O valor de dpt do registro bruto é atribuído a esse campo e convertido em um número inteiro.
dst target.asset.ip O valor de dst do registro bruto é atribuído a esse campo.
dst target.ip O valor de dst do registro bruto é atribuído a esse campo.
dvcpid security_result.about.process.pid O valor de dvcpid do registro bruto é atribuído a esse campo.
dvchost target.asset.hostname O valor de dvchost do registro bruto é atribuído a esse campo.
dvchost target.hostname O valor de dvchost do registro bruto é atribuído a esse campo.
hostname principal.asset.hostname O valor de hostname do registro bruto é atribuído a esse campo.
hostname principal.hostname O valor de hostname do registro bruto é atribuído a esse campo. Determinado pela lógica do analisador com base na presença de informações principal e target. Se ambos estiverem presentes, o valor será "NETWORK_CONNECTION". Se apenas principal estiver presente, o valor será "STATUS_UPDATE". Se apenas target estiver presente, o valor será "USER_UNCATEGORIZED". Caso contrário, o valor será "GENERIC_EVENT".
product_event_type metadata.product_event_type O valor de product_event_type do registro bruto é atribuído a esse campo.
product_name metadata.product_name O valor de product_name do registro bruto é atribuído a esse campo.
proto network.ip_protocol O valor de proto do registro bruto é convertido em um número inteiro e mapeado para o nome do protocolo IP correspondente (por exemplo, 6 se torna TCP, 17 se torna UDP) usando uma pesquisa incluída em "parse_ip_protocol.include".
severity security_result.severity_details O valor de severity do registro bruto é atribuído a esse campo.
spt principal.port O valor de spt do registro bruto é atribuído a esse campo e convertido em um número inteiro.
src principal.asset.ip O valor de src do registro bruto é atribuído a esse campo.
src principal.ip O valor de src do registro bruto é atribuído a esse campo.
suser security_result.detection_fields[].value O valor de suser do registro bruto é atribuído a esse campo se não for um objeto JSON. Se for um JSON, o campo data do objeto suser será usado.
suser security_result.detection_fields[].key A string "suser" é atribuída a esse campo.
ts metadata.event_timestamp O valor de ts do registro bruto é analisado como um carimbo de data/hora e atribuído a esse campo. Vários formatos de carimbo de data/hora são tentados até que uma análise seja concluída.
vendor_name metadata.vendor_name O valor de vendor_name do registro bruto é atribuído a esse campo.
version metadata.product_version O valor de version do registro bruto é atribuído a esse campo.

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