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,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yamlda 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_labelsSubstitua 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.jsonpara 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-agentPara 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.