Coletar registros do Cisco Stealthwatch
Este documento explica como coletar registros do Cisco Secure Network Analytics (antigo Stealthwatch) para as Operações de segurança do Google usando o Bindplane. O analisador processa dois formatos de registros do Cisco Stealthwatch: um com informações de IP e pacote de cliente/servidor e outro com ID do dispositivo e contagens de bytes. Ele extrai campos, os converte para os tipos de dados adequados, os mapeia para a UDM e define campos de metadados, como fornecedor, produto e tipo de evento, com base no conteúdo e no formato do registro.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Use o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se você 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.
- 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 do 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 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 este 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/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 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: '/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 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 no 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 Syslog do Cisco Secure Network Analytics (antigo Stealthwatch)
- Faça login na interface da Web do Management Console.
- Acesse Configuração > Gerenciamento de respostas.
Editar formato do Syslog:
- Nome: insira um nome para o formato syslog.
- Descrição: informe uma descrição para o formato.
- Unidade: 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 respostas > Ações > Adicionar mensagem do Syslog.
Configure o encaminhador de syslog:
- Nome: insira o nome do encaminhador do Google SecOps Bindplane.
- Descrição: insira a descrição do encaminhador do Google SecOps Bindplane.
- 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 regra, selecione uma regra.
- Clique em OK.
- Na caixa de diálogo Regra, faça o seguinte:
- Nome: digite um nome para a regra.
- Essa regra é acionada se: selecione Qualquer, Gravidade e Informativa nas respectivas listas.
- Clique em OK.
- Selecione Ações > Adicionar.
- Selecione a ação criada 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 compatível: Syslog
- Mecanismo de coleta de registros preferido: 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 na chave Alarm_ID . |
ClientBytes |
network.sent_bytes |
O ClientBytes do registro bruto é convertido em um número inteiro sem sinal e mapeado. |
ClientIP |
principal.ip |
ClientIP do registro bruto é mapeado. |
ClientPort |
principal.port |
O ClientPort do registro bruto é convertido em um número inteiro e mapeado. |
CPayload |
Não mapeado | Esse campo não é usado na UDM final. |
DestIPv4Address |
target.ip |
DestIPv4Address do registro bruto é mapeado. |
DestPort |
target.port |
O 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 |
FC do registro bruto é mapeado. |
host.country |
principal.location.country_or_region |
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 |
host.ipAddress do registro bruto é mapeado. |
hostBytes |
network.sent_bytes |
O 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 na chave InPackets . |
inputSNMPIface |
additional.fields[?key=='inputSNMPIface'].value.string_value |
O valor de inputSNMPIface do registro bruto é colocado em uma estrutura additional.fields aninhada na chave inputSNMPIface . |
LastTime |
Não mapeado | Em alguns casos, esse campo é analisado para o carimbo de data/hora do evento, mas não é mapeado diretamente para a UDM. |
MessageSourceAddress |
principal.ip |
MessageSourceAddress do registro bruto é mapeado. |
method |
network.http.method |
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 na chave outputSNMPIface . |
PAAppID |
Não mapeado | Esse campo não é usado na UDM final. |
peer.country |
target.location.country_or_region |
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 |
peer.ipAddress do registro bruto é mapeado. |
peerBytes |
network.received_bytes |
O peerBytes do registro bruto é convertido em um número inteiro sem sinal e mapeado. |
peerPackets |
Não mapeado | Esse campo não é usado na 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 |
reportName do registro bruto é mapeado. |
ServerBytes |
network.received_bytes |
O ServerBytes do registro bruto é convertido em um número inteiro sem sinal e mapeado. |
ServerIP |
target.ip |
ServerIP do registro bruto é mapeado. |
ServerPort |
target.port |
O ServerPort do registro bruto é convertido em um número inteiro e mapeado. |
Service |
Não mapeado | Esse campo não é usado na UDM final. |
sid |
target.user.windows_sid |
sid do registro bruto é mapeado. |
SourceModuleName |
target.resource.name |
SourceModuleName do registro bruto é mapeado. |
SourceModuleType |
observer.application |
SourceModuleType do registro bruto é mapeado. |
SourcePort |
principal.port |
O SourcePort do registro bruto é convertido em um número inteiro e mapeado. |
sourceIPv4Address |
principal.ip |
sourceIPv4Address do registro bruto é mapeado. |
SPayload |
Não mapeado | Esse campo não é usado na UDM final. |
src_ip |
principal.ip |
src_ip do registro bruto é mapeado. |
StartTime |
Não mapeado | Em alguns casos, esse campo é analisado para o carimbo de data/hora do evento, mas não é mapeado diretamente para a UDM. |
time |
Não mapeado | Em alguns casos, esse campo é analisado para o carimbo de data/hora do evento, mas não é mapeado diretamente para a 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 |
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, 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 |
file_path do registro bruto é mapeado. |
file_type |
target.file.mime_type |
file_type do registro bruto é mapeado. |
hostname |
principal.hostname |
hostname do registro bruto é mapeado. |
ip |
principal.ip |
ip do registro bruto é mapeado. |
ipf |
intermediary.ip |
ipf do registro bruto é mapeado. |
ipt |
target.ip |
ipt do registro bruto é mapeado. |
process_id |
target.process.pid |
process_id do registro bruto é mapeado. |
protocol |
network.application_protocol |
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 |
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 |
Source_HG do registro bruto é mapeado. |
Source_HostSnapshot |
principal.url |
Source_HostSnapshot do registro bruto é mapeado. |
Target_HostSnapshot |
target.url |
Target_HostSnapshot do registro bruto é mapeado. |
user_name |
principal.user.userid |
user_name do registro bruto é mapeado. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.