Coletar registros do Cisco Stealthwatch
Este documento explica como coletar registros do Cisco Secure Network Analytics (antigo Stealthwatch) para o Google Security Operations usando o Bindplane. O analisador processa dois formatos de registros do Cisco Stealthwatch: um com informações de pacote e IP do cliente/servidor e outro com ID do dispositivo e contagens de bytes. Ele extrai campos, os converte para os tipos de dados apropriados, os mapeia para a UDM e define campos de metadados como fornecedor, produto e tipo de evento com base no conteúdo e formato do registro.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado ao Cisco Stealthwatch.
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.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança 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
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 raiz 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 este guia de instalação.
Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o arquivo usando um editor de texto (por exemplo,
nano
,vi
ou Notepad).
- 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: '/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: CISCO_STEALTHWATCH raw_log_field: body 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 real do cliente.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de transferência do Google SecOps.
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 bindplane-agent
Para reiniciar o agente do Bindplane no Windows, use o console Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Syslog do Cisco Secure Network Analytics (antigo Stealthwatch)
- Faça login na IU da Web do Console de gerenciamento.
- Acesse Configuração > Gerenciamento de respostas.
Editar formato do Syslog:
- Nome: insira um nome para o formato syslog.
- Descrição: forneça uma descrição do formato.
- Instalação: definida como
Local 0
- Gravidade: defina como
Informational
. - No campo Mensagem, cole o seguinte formato:
Lancope|StealthWatch|time|{time}|target_hostname|{target_hostname}|alarm_severity_id|{alarm_severity_id}|alarm_type_id|{alarm_type_id}|alarm_type_description|{alarm_type_description}|port|{port}|target_ip|{target_ip}|target_mac_address|{target_mac_address}|target_label|{target_label}|alarm_type_name|{alarm_type_name}|source_hostname|{source_hostname}|source_ip|{source_ip}|source_mac_address|{source_mac_address}|source_username|{source_username}|device_ip|{device_ip}|device_name|{device_name}|details|{details}|protocol|{protocol}|alarm_id|{alarm_id}|alarm_category_name|{alarm_category_name}|start_active_time|{start_active_time}| end_active_time|{end_active_time}
Clique em OK.
Acesse Gerenciamento de resposta > Ações > Adicionar mensagem de Syslog.
Configure o encaminhador de syslog:
- Nome: insira o nome do forwarder do Bindplane do Google SecOps.
- Descrição: insira a descrição do forwarder do Bindplane do Google SecOps.
- Endereço IP: insira o endereço IP do agente do Bindplane.
- Porta: insira o número da porta do agente do Bindplane. Por exemplo,
514
. - Formato: selecione o formato criado na etapa 3.
Clique em OK.
Configurar nomes de regras para o Cisco Secure Network Analytics (antigo Stealthwatch)
- Acesse Configuração > Gerenciamento de respostas.
- Selecione Regras > Adicionar > Alarmes do sistema SMC.
- Clique em OK.
- Na caixa de diálogo Tipos de regras, selecione uma regra.
- Clique em OK.
- Na caixa de diálogo Rule, faça o seguinte:
- Nome: digite um nome para a regra.
- Esta regra é acionada se: selecione Qualquer, Gravidade e Informativo nas respectivas listas.
- Clique em OK.
- Selecione Ações > Adicionar.
- Selecione a ação que você criou anteriormente.
- Clique em Ok e em Ok.
- Repita as etapas anteriores para renomear as três opções a seguir na seção Regra:
- Mecanismo de coleta de registros com suporte: Syslog
- Mecanismo de coleta de registros preferencial: Syslog
- Diagrama lógico do fluxo de eventos: servidor syslog remoto do SMC
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
Alarm_ID |
additional.fields[?key=='Alarm_ID'].value.string_value |
O valor de Alarm_ID do registro bruto é colocado em uma estrutura additional.fields aninhada sob a chave Alarm_ID . |
ClientBytes |
network.sent_bytes |
ClientBytes do registro bruto é convertido em um número inteiro sem sinal e mapeado. |
ClientIP |
principal.ip |
O ClientIP do registro bruto é mapeado. |
ClientPort |
principal.port |
ClientPort do registro bruto é convertido em um número inteiro e mapeado. |
CPayload |
Não mapeado | Esse campo não é usado no UDM final. |
DestIPv4Address |
target.ip |
O DestIPv4Address do registro bruto é mapeado. |
DestPort |
target.port |
DestPort do registro bruto é convertido em um número inteiro e mapeado. |
details |
security_result.summary |
O valor de details do registro bruto, com as aspas duplas removidas, é mapeado. |
FC |
intermediary.ip |
O FC do registro bruto é mapeado. |
host.country |
principal.location.country_or_region |
O host.country do registro bruto é mapeado. |
host.hostGroupNames |
about.group.group_display_name |
Cada elemento na matriz host.hostGroupNames do registro bruto é precedido por host: e mapeado como um objeto about separado. |
host.ipAddress |
principal.ip |
O host.ipAddress do registro bruto é mapeado. |
hostBytes |
network.sent_bytes |
hostBytes do registro bruto é convertido em um número inteiro sem sinal e mapeado. |
InPackets |
additional.fields[?key=='InPackets'].value.string_value |
O valor de InPackets do registro bruto é colocado em uma estrutura additional.fields aninhada sob a chave InPackets . |
inputSNMPIface |
additional.fields[?key=='inputSNMPIface'].value.string_value |
O valor de inputSNMPIface do registro bruto é colocado em uma estrutura additional.fields aninhada sob a chave inputSNMPIface . |
LastTime |
Não mapeado | Esse campo é analisado para o carimbo de data/hora do evento em alguns casos, mas não é mapeado diretamente para o UDM. |
MessageSourceAddress |
principal.ip |
O MessageSourceAddress do registro bruto é mapeado. |
method |
network.http.method |
O method do registro bruto é mapeado. |
outputSNMPIface |
additional.fields[?key=='outputSNMPIface'].value.string_value |
O valor de outputSNMPIface do registro bruto é colocado em uma estrutura additional.fields aninhada sob a chave outputSNMPIface . |
PAAppID |
Não mapeado | Esse campo não é usado no UDM final. |
peer.country |
target.location.country_or_region |
O peer.country do registro bruto é mapeado. |
peer.hostGroupNames |
about.group.group_display_name |
Cada elemento na matriz peer.hostGroupNames do registro bruto é precedido por peer: e mapeado como um objeto about separado. |
peer.ipAddress |
target.ip |
O peer.ipAddress do registro bruto é mapeado. |
peerBytes |
network.received_bytes |
peerBytes do registro bruto é convertido em um número inteiro sem sinal e mapeado. |
peerPackets |
Não mapeado | Esse campo não é usado no UDM final. |
Protocol |
Não mapeado | Esse campo é analisado para determinar o network.ip_protocol , mas não é mapeado diretamente. |
ProtocolIdentifier |
Não mapeado | Esse campo é usado para derivar network.ip_protocol , mas não é mapeado diretamente. |
reportName |
metadata.product_event_type |
O reportName do registro bruto é mapeado. |
ServerBytes |
network.received_bytes |
ServerBytes do registro bruto é convertido em um número inteiro sem sinal e mapeado. |
ServerIP |
target.ip |
O ServerIP do registro bruto é mapeado. |
ServerPort |
target.port |
ServerPort do registro bruto é convertido em um número inteiro e mapeado. |
Service |
Não mapeado | Esse campo não é usado no UDM final. |
sid |
target.user.windows_sid |
O sid do registro bruto é mapeado. |
SourceModuleName |
target.resource.name |
O SourceModuleName do registro bruto é mapeado. |
SourceModuleType |
observer.application |
O SourceModuleType do registro bruto é mapeado. |
SourcePort |
principal.port |
SourcePort do registro bruto é convertido em um número inteiro e mapeado. |
sourceIPv4Address |
principal.ip |
O sourceIPv4Address do registro bruto é mapeado. |
SPayload |
Não mapeado | Esse campo não é usado no UDM final. |
src_ip |
principal.ip |
O src_ip do registro bruto é mapeado. |
StartTime |
Não mapeado | Esse campo é analisado para o carimbo de data/hora do evento em alguns casos, mas não é mapeado diretamente para o UDM. |
time |
Não mapeado | Esse campo é analisado para o carimbo de data/hora do evento em alguns casos, mas não é mapeado diretamente para o UDM. |
timestamp |
Não mapeado | Esse campo é analisado para o carimbo de data/hora do evento, mas não é mapeado diretamente para a UDM. |
UserName |
principal.user.user_display_name |
O UserName do registro bruto é mapeado. |
Version |
metadata.product_version |
Version do registro bruto é convertido em uma string e mapeado. |
N/A | metadata.event_timestamp |
O carimbo de data/hora do evento é derivado de vários campos (LastTime , time , timestamp , StartTime ) dependendo do formato do registro ou do campo create_time se nenhum outro carimbo de data/hora estiver disponível. |
N/A | metadata.log_type |
Sempre defina como CISCO_STEALTHWATCH . |
N/A | metadata.vendor_name |
Sempre defina como Cisco . |
N/A | metadata.event_type |
Determinado pela lógica do analisador com base no conteúdo do registro. Pode ser NETWORK_CONNECTION , USER_STATS , USER_UNCATEGORIZED , FILE_OPEN , FILE_DELETION ou FILE_UNCATEGORIZED . |
N/A | network.ip_protocol |
Determinado pela lógica do analisador com base nos campos Protocol ou ProtocolIdentifier . Pode ser TCP , UDP ou ICMP . |
action |
security_result.action_details |
O valor de action do registro bruto é mapeado. |
action |
security_result.action |
Derivado do campo action . Se action for SUCCESS , esse campo será definido como ALLOW . Caso contrário, ele será definido como BLOCK . |
category |
security_result.category_details |
O valor de category do registro bruto é mapeado. |
description |
security_result.description |
Se description e file_type estiverem presentes no registro bruto, eles serão concatenados e mapeados. |
desc |
metadata.description |
O valor de desc do registro bruto, com as aspas duplas removidas, é mapeado. |
failuer_reason |
security_result.summary |
Se failuer_reason e file_type estiverem presentes no registro bruto, eles serão concatenados e mapeados. |
file_path |
target.file.full_path |
O file_path do registro bruto é mapeado. |
file_type |
target.file.mime_type |
O file_type do registro bruto é mapeado. |
hostname |
principal.hostname |
O hostname do registro bruto é mapeado. |
ip |
principal.ip |
O ip do registro bruto é mapeado. |
ipf |
intermediary.ip |
O ipf do registro bruto é mapeado. |
ipt |
target.ip |
O ipt do registro bruto é mapeado. |
process_id |
target.process.pid |
O process_id do registro bruto é mapeado. |
protocol |
network.application_protocol |
O protocol do registro bruto é mapeado. |
security_res.severity |
security_result.severity |
Se severity for Minor , esse campo será definido como INFORMATIONAL . Se severity for Major , ele será definido como ERROR . |
session_id |
network.session_id |
O session_id do registro bruto é mapeado. |
severity |
Não mapeado | Esse campo é usado para derivar security_result.severity , mas não é mapeado diretamente. |
Source_HG |
principal.location.country_or_region |
O Source_HG do registro bruto é mapeado. |
Source_HostSnapshot |
principal.url |
O Source_HostSnapshot do registro bruto é mapeado. |
Target_HostSnapshot |
target.url |
O Target_HostSnapshot do registro bruto é mapeado. |
user_name |
principal.user.userid |
O user_name do registro bruto é mapeado. |
Alterações
2024-10-29
Melhoria:
- Adicionamos suporte para processar registros JSON.
2024-09-26
Melhoria:
- Foi adicionado suporte para analisar registros de formato CEF.
2024-06-11
Melhoria:
- O padrão Grok foi atualizado para analisar o valor
emc1502
e mapeá-lo paraprincipal.hostname
.
2023-06-19
Melhoria:
sourceIPv4Address
foi mapeado paraprincipal.ip
.SourceModuleType
foi mapeado paraobserver.application
.SourceModuleName
foi mapeado paratarget.resource.name
.MessageSourceAddress
foi mapeado paraprincipal.ip
.SourcePort
foi mapeado paraprincipal.port
.Version
foi mapeado parametadata.product_version
.DestPort
foi mapeado paratarget.port
.DestIPv4Address
foi mapeado paratarget.ip
.ProtocolIdentifier
foi mapeado paranetwork.ip_protocol
.- Mapeamos
inputSNMPIface
,outputSNMPIface
eInPackets
paraadditional.fields
.
2023-02-10
Correção de bugs:
- Foram adicionados novos padrões Grok para analisar registros de tipo de protocolo NFS e SMB.
2022-07-06
Melhoria:
- Foram adicionados mapeamentos para registros não analisados (auditoria, alarme).
- FC_Name mapeado para principal.user.userid.
- src mapeado para principal.ip.
- dst mapeado para target.ip.
- Source_HG foi mapeado para principal.location.country_or_region.
- categoria mapeada para security_result.category_details.
- detalhes mapeados para metadata.description.
- vendor_severity Minor mapeado para security_result.severity (INFORMATIONAL).
- vendor_severity Major mapeado para security_result.severity (ERROR).
- Adicionado Event_type USER_UNCATEGORIZED para registro não analisado.
- Adicionamos o campo Alarm_ID.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.