Coletar registros do Cisco eStreamer
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- 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
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
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
- 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).
- Localize o arquivo
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
- Faça login no Firepower Management Center.
- Acesse Sistema > Integração > eStreamer.
- Clique em eStreamer para acessar a configuração de eventos do eStreamer.
- 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
- Clique em Salvar.
Criar cliente eStreamer
- Na página eStreamer, clique em Criar cliente.
- 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.
- Clique em Salvar.
- 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
- No sistema Linux, faça o download do cliente da CLI eStreamer eNcore da Cisco.
Extraia o pacote eNcore:
tar -xzf eStreamer-eNcore-*.tar.gz cd eStreamer-eNcore-*
Execute o script de configuração:
./encore.sh setup
Quando solicitado, escolha o formato de saída para pares de chave-valor (compatível com sistemas SIEM).
Digite o endereço IP do FMC e a senha do certificado PKCS12.
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" } } ] } }
- Abra o arquivo
Substitua
BINDPLANE_AGENT_IP
pelo endereço IP do seu agente do Bindplane.
Iniciar o cliente eNcore
Teste a conexão no modo em primeiro plano:
./encore.sh foreground
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.