Recolha registos do Cisco eStreamer

Compatível com:

Este documento explica como carregar registos do Cisco eStreamer para o Google Security Operations através do Bindplane. O analisador extrai campos das mensagens SYSLOG no formato de chave-valor, usando o grok para analisar a mensagem inicial e o kv para processar os dados de chave-valor. Em seguida, mapeia estes 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

Certifique-se de que cumpre os seguintes pré-requisitos:

  • Uma instância do Google SecOps
  • Um Windows Server 2012 SP2 ou posterior, ou um anfitrião Linux com systemd
  • Se estiver a executar o agente através de um proxy, certifique-se de que as portas da 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

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

Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.

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

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

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

  1. Aceda ao ficheiro de configuração:
    • Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /opt/observiq-otel-collector/ no Linux ou no diretório `C:\Program Files\observIQ OpenTelemetry Collector` no Windows.
    • 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_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
    

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 Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o encaminhamento de Syslog no Cisco eStreamer

Configure o eStreamer no Firepower Management Center

  1. Inicie sessão no Firepower Management Center.
  2. Aceda a Sistema > Integração > eStreamer.
  3. Clique em eStreamer para aceder à configuração de eventos do eStreamer.
  4. Selecione as caixas de verificação junto aos tipos de eventos que quer captar:
    • Eventos de intrusão: para eventos de deteção de intrusão
    • Dados de pacotes de eventos de intrusão: para capturas de pacotes associadas a eventos de intrusão
    • Eventos de ligação: para dados de ligação de rede
    • Eventos de inteligência de segurança: para dados de inteligência de ameaças
    • Eventos de ficheiros: para eventos de análise de ficheiros
    • Eventos de software malicioso: para eventos de deteção de software malicioso
  5. Clique em Guardar.

Crie um cliente do eStreamer

  1. Na página eStreamer, clique em Criar cliente.
  2. Indique os seguintes detalhes de configuração:
    • Nome do anfitrião: introduza o endereço IP do sistema Linux onde o cliente eNcore vai ser executado.
    • Palavra-passe: introduza uma palavra-passe para encriptar o ficheiro de certificado.
  3. Clique em Guardar.
  4. Transfira o ficheiro de certificado PKCS12 gerado e transfira-o para o sistema cliente eNcore.

Instale e configure o cliente da CLI eNcore

  1. No seu sistema Linux, transfira o 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 lhe for pedido, escolha o formato de saída para pares de chave-valor (compatível com sistemas SIEM).

  5. Introduza o endereço IP do FMC e a palavra-passe do certificado PKCS12.

  6. Configure o ficheiro estreamer.conf para enviar mensagens syslog para o seu agente do Bindplane:

    • Abra o ficheiro estreamer.conf num editor de texto.
    • Localize a secção de saída e configure-a para enviar o syslog para o seu 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.

Inicie o cliente eNcore

  1. Teste a ligação no modo de primeiro plano:

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

    ./encore.sh start
    

Tabela de mapeamento da UDM

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

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