Coletar registros de VPN da Cisco
Este documento explica como ingerir registros de VPN do Cisco ASA no Google Security Operations usando o Bindplane. O analisador extrai campos das mensagens do syslog usando padrões grok, processando formatos padrão do syslog e estruturas alternativas de mensagens. Em seguida, ele mapeia os campos extraídos para o Modelo Unificado de Dados (UDM), categoriza eventos com base em IDs e informações extraídas e enriquece os dados com metadados, como fornecedor, produto e tipo de evento. O analisador também processa IDs de eventos específicos, aplicando padrões e lógica grok adicionais para extrair detalhes relevantes e mapeá-los para os campos apropriados do UDM.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps
- Um host Windows 2016 ou mais recente ou Linux com
systemd
- Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
- Acesso privilegiado ao Cisco ASA
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
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/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_file_path: '/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 log_type: 'CISCO_VPN' 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 em Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Syslog para VPN Cisco ASA
- Abra o Cisco ASDM.
- Acesse Configuração > Recursos > Propriedades > Registro > Configuração de registro.
- Marque a caixa de seleção Ativar geração de registros para ativar o syslog.
- Selecione Servidores Syslog em Logging e clique em Adicionar.
- Insira os seguintes detalhes de configuração na janela Adicionar servidor Syslog:
- Interface: selecione a interface para comunicação de saída.
- Endereço IP: insira o endereço IP do agente do Bindplane.
- Protocolo: selecione UDP.
- Porta: digite o número da porta do agente do Bindplane.
- Clique em OK.
- Selecione Filtros de geração de registros na seção Geração de registros.
- Selecione Servidores Syslog e clique em Editar.
- Selecione Informativo na lista como o Filtro por gravidade.
- Clique em OK.
- Clique em Aplicar.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
accesslist |
target.resource.name |
Extraído de message_info quando eventtype é "ASA-4-106103". Representa o nome da lista de acesso. |
action |
security_result.action |
Derivado pelo analisador com base em palavras-chave na mensagem de registro (por exemplo, "Negar", "Rejeitar", "Permitir", "Aceitar"). Mapeia para ALLOW ou BLOCK. |
action |
security_result.action_details |
O valor da string bruta da ação realizada (por exemplo, "permitted", "denied", "disconnected"). |
app_name |
principal.application |
O nome do aplicativo usado pelo principal (por exemplo, "CLI"). Extraído de message_details para os ID de evento 111008, 111009 e 111010. |
assigned_ipv4 |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
assigned_ipv6 |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
bytes_rcv |
network.received_bytes |
O número de bytes recebidos na sessão. Extraído de log_mssg para o ID do evento 113019. |
bytes_sent |
network.sent_bytes |
O número de bytes enviados na sessão. Extraído de log_mssg para o ID do evento 113019. |
cipher |
network.tls.cipher |
A criptografia usada na sessão SSL. Extraído de message_info para o tipo de evento 725012. |
cisco_message_number |
security_result.rule_name |
O número da mensagem do Cisco, extraído do campo eventtype . |
cisco_severity |
security_result.severity_details |
O nível de gravidade bruto da Cisco, extraído do campo eventtype . |
command |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
cumulative_total_count.key |
security_result.outcomes.key |
A chave "cumulative_total_count" é adicionada à matriz security_result.outcomes . |
cumulative_total_count.value |
security_result.outcomes.value |
O valor da contagem total cumulativa, extraído de message_info . |
current_average_rate.key |
security_result.outcomes.key |
A chave "current_average_rate" é adicionada à matriz security_result.outcomes . |
current_average_rate.value |
security_result.outcomes.value |
O valor da taxa média atual, extraído de message_info . |
current_burst_rate.key |
security_result.outcomes.key |
A chave "current_burst_rate" é adicionada à matriz security_result.outcomes . |
current_burst_rate.value |
security_result.outcomes.value |
O valor da taxa de burst atual, extraído de message_info . |
desc |
metadata.description |
Descrição do evento, extraída da mensagem de registro. Usado quando uma descrição mais específica não está disponível. |
description |
metadata.description |
Uma descrição mais detalhada do evento, extraída da mensagem de registro quando disponível. |
destination_ip |
target.ip , target.asset.ip |
Endereço IP de destino, extraído de vários formatos de mensagens de registro. |
destination_ip_port |
target.port ou network.application_protocol |
Porta de destino, extraída de vários formatos de mensagens de registro. Se o valor extraído não for um número, ele será tratado como o protocolo de aplicativo. |
dst_email |
target.user.email_addresses ou target.user.userid |
Endereço de e-mail ou ID do usuário de destino, extraído de message_info . Se o valor corresponder a um formato de e-mail, ele será adicionado a email_addresses . Caso contrário, será usado como userid . |
dst_host |
target.hostname |
Nome do host de destino, extraído de message_info . |
dst_ip |
target.ip , target.asset.ip |
Endereço IP de destino, extraído do padrão grok principal ou de outros padrões específicos. |
dst_port |
target.port |
Porta de destino, extraída do padrão grok principal ou de outros padrões específicos. |
duration |
network.session_duration |
Duração da sessão, extraída de message_details e convertida em segundos. |
event_date |
@timestamp |
A data e a hora do evento, construídas com base em vários campos de carimbo de data/hora no registro bruto e analisadas usando o filtro date . |
event_id |
metadata.product_event_type (parte de) |
Usado em combinação com event_severity para formar o campo metadata.product_event_type . |
event_name |
metadata.product_event_type (parte de) |
Usado em combinação com event_severity e event_type para formar o campo metadata.product_event_type quando disponível. |
event_severity |
metadata.product_event_type (parte de), security_result.severity , is_alert , is_significant |
Usado em combinação com event_id ou event_name e event_type para formar o campo metadata.product_event_type . Também usado para derivar os campos security_result.severity , is_alert e is_significant . |
event_type |
metadata.product_event_type (parte de) |
Usado em combinação com event_name e event_severity para formar o campo metadata.product_event_type quando disponível. |
eventtype |
metadata.product_event_type , security_result.rule_name , security_result.severity_details , security_result.severity |
A string do tipo de evento, usada para derivar os campos metadata.product_event_type , security_result.rule_name , security_result.severity_details e security_result.severity . |
fragment_id |
security_result.about.resource.id |
ID do fragmento de IP, extraído de message_details para o ID do evento 209005. |
group |
principal.group.group_display_name , principal.user.group_identifiers , target.user.group_identifiers |
Nome do grupo, extraído de vários formatos de mensagens de registro. |
group_name |
principal.group.group_display_name |
Nome do grupo extraído do campo group quando é um nome de host. |
has_principal_ip |
N/A | Variável interna usada para lógica, não mapeada para UDM. |
has_target_ip |
N/A | Variável interna usada para lógica, não mapeada para UDM. |
hostname |
principal.hostname , principal.asset.hostname |
Nome de host do principal, extraído de vários formatos de mensagens de registro. |
hostname2 |
principal.hostname , principal.asset.hostname |
Nome do host do principal, extraído como um substituto quando hostname não está disponível. |
icmp_code |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
icmp_dst_ip |
target.ip , target.asset.ip |
Endereço IP de destino de uma mensagem de erro ICMP. |
icmp_id |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
icmp_src_ip |
principal.ip , principal.asset.ip |
Endereço IP de origem de uma mensagem de erro ICMP. |
icmp_type |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
intermediary_ip |
principal.ip , principal.asset.ip |
Endereço IP intermediário, extraído de message_info para o ID do evento 111010. |
invalid_ip |
N/A | Variável interna usada para lógica, não mapeada para UDM. |
ip_1 |
principal.ip , principal.asset.ip |
Endereço IP de origem extraído como um substituto quando os IPs de origem e de destino são iguais. |
ip_2 |
target.ip , target.asset.ip |
Endereço IP de destino extraído como um substituto quando os IPs de origem e de destino são iguais. |
ipprotocol |
network.ip_protocol |
Protocolo IP, extraído de vários formatos de mensagens de registro e convertido para maiúsculas. |
issuer |
network.tls.client.certificate.issuer |
Emissor do certificado do peer, extraído de message_details para o ID do evento 717037. |
local_proxy_ip |
intermediary.ip |
Endereço IP do proxy local, extraído de message_details para o ID do evento 713041. |
log_mssg |
security_result.description , sr.action |
Usado para preencher o campo security_result.description e extrair ações de autenticação. |
login |
security_result.summary |
Status do login, extraído de message_info . |
max_configured_rate.key |
security_result.outcomes.key |
A chave "max_configured_rate" é adicionada à matriz security_result.outcomes . |
max_configured_rate.value |
security_result.outcomes.value |
O valor da taxa máxima configurada, extraído de message_info . |
message_details |
Vários campos | A parte principal da mensagem de registro, que contém detalhes sobre o evento. Analisado usando vários padrões grok, dependendo do ID do evento. |
message_info |
metadata.description |
Usado para preencher o campo metadata.description quando disponível. |
observer |
observer.hostname ou observer.ip |
Nome do host ou endereço IP do observador, extraído da mensagem de registro. |
observer_ip |
observer.ip |
Endereço IP do observador, extraído do campo observer . |
peer_type |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
policy |
target.resource.name |
Nome da política, extraído de message_details para o ID do evento 113003. |
policy_name |
target.resource.name |
Nome da política, extraído de message_details para IDs de evento 113009 e 113011. |
principal_ip |
principal.ip , principal.asset.ip |
Endereço IP principal, extraído de message_details para o ID do evento 113009. |
privilege_level_from |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
privilege_level_to |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
process |
principal.process.command_line |
Nome do processo, extraído de message_details para o ID do evento 711004. |
protocol |
network.ip_protocol ou network.application_protocol |
Protocolo usado no evento, extraído de vários formatos de mensagens de registro. Se o protocolo for um protocolo IP padrão (ICMP, TCP, UDP, ESP), ele será mapeado para network.ip_protocol . Caso contrário, será mapeado para network.application_protocol . |
reason |
security_result.description |
Motivo do evento, extraído de message_details para o ID do evento 113016. |
remote_proxy_ip |
intermediary.ip |
Endereço IP do proxy remoto, extraído de message_details para o ID do evento 713041. |
retrieved_file |
target.file.full_path |
Caminho para o arquivo recuperado, extraído de message_info . |
security_action |
security_result.action |
Ação de segurança derivada pelo analisador com base no contexto do evento. |
security_category |
security_result.category |
Categoria de segurança, derivada pelo analisador com base no contexto do evento. |
security_result.description |
security_result.description |
Descrição do resultado de segurança, extraída ou derivada da mensagem de registro. |
security_result.severity |
security_result.severity |
Gravidade do resultado de segurança, derivada do campo event_severity . |
security_result.summary |
security_result.summary |
Resumo do resultado de segurança, extraído ou derivado da mensagem de registro. |
sent_bytes |
network.sent_bytes |
Número de bytes enviados, extraídos de message_info . |
ses_id |
network.session_id |
ID da sessão, extraído de message_info . |
session_id |
network.session_id |
ID da sessão, extraído de message_info . |
sess_type |
principal.hostname , principal.asset.hostname |
Tipo de sessão, extraído de log_mssg e usado como nome do host quando hostname não está disponível. |
source_ip |
principal.ip , principal.asset.ip |
Endereço IP de origem, extraído de vários formatos de mensagens de registro. |
source_ip_port |
principal.port |
Porta de origem, extraída de vários formatos de mensagens de registro. |
src_email |
principal.user.email_addresses ou principal.user.userid |
Endereço de e-mail ou ID do usuário de origem, extraído de message_info . Se o valor corresponder a um formato de e-mail, ele será adicionado a email_addresses . Caso contrário, será usado como userid . |
src_ip |
principal.ip , principal.asset.ip |
Endereço IP de origem, extraído do padrão grok principal ou de outros padrões específicos. |
src_port |
principal.port |
Porta de origem, extraída do padrão grok principal ou de outros padrões específicos. |
src_user |
principal.user.user_display_name |
Nome de exibição do usuário de origem, extraído de message_details para IDs de evento 713049 e 713120. |
subject |
network.tls.client.certificate.subject |
Assunto do certificado do peer, extraído de message_details para o ID do evento 717037. |
summary |
security_result.summary |
Resumo do evento, extraído de message_details para o ID do evento 113016. |
target_host |
target.hostname |
Nome do host de destino, extraído de message_details para o ID do evento 113004. |
target_ip |
target.ip , target.asset.ip |
Endereço IP de destino, extraído de message_details para o ID do evento 113004. |
target_user |
target.user.userid |
User-ID de destino, extraído de message_details para o ID do evento 113003. |
task_duration |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
tcp_dst_ip |
target.ip , target.asset.ip |
Endereço IP de destino do payload TCP original de uma mensagem de erro ICMP. |
tcp_dst_port |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
tcp_src_ip |
principal.ip , principal.asset.ip |
Endereço IP de origem do payload TCP original de uma mensagem de erro ICMP. |
tcp_src_port |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
threshold |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
tls_version |
network.tls.version |
Versão do TLS, extraída de message_details para o ID do evento 725002. |
ts |
@timestamp |
Carimbo de data/hora do evento, analisado usando o filtro date . |
ts_day |
@timestamp (parte de) |
Dia do mês do carimbo de data/hora, usado para criar o campo @timestamp . |
ts_month |
@timestamp (parte de) |
Mês do carimbo de data/hora, usado para construir o campo @timestamp . |
ts_time |
@timestamp (parte de) |
Tempo do carimbo de data/hora, usado para construir o campo @timestamp . |
ts_year |
@timestamp (parte de) |
Ano do carimbo de data/hora, usado para criar o campo @timestamp . |
tunnel_type |
N/A | Embora analisado, esse campo não é mapeado para o objeto IDM na UDM. |
user |
principal.user.userid , target.user.userid |
ID do usuário, extraído de vários formatos de mensagens de registro. |
user_agent |
network.http.user_agent |
String de user agent, extraída de message_details para o ID do evento 722055. |
user_attr.key |
principal.user.attribute.labels.key |
Chave de um atributo do usuário, extraída de message_details para IDs de evento 734003 e 734001. |
user_attr.value |
principal.user.attribute.labels.value |
Valor de um atributo do usuário, extraído de message_details para os IDs de evento 734003 e 734001. |
userid |
principal.user.userid |
User-ID extraído de message_details para o ID do evento 106103. |
username |
principal.user.userid |
Nome de usuário, extraído de message_details para IDs de evento 111008, 111009, 111010 e 113008. |
N/A | metadata.vendor_name |
Codificado como "CISCO". |
N/A | metadata.product_name |
Codificado como "VPN ASA" ou "VPN". |
N/A | metadata.event_type |
Determinada pela lógica do analisador com base na presença de determinados campos e IDs de eventos. Pode ser GENERIC_EVENT, NETWORK_CONNECTION, STATUS_UPDATE, NETWORK_FTP, USER_LOGIN, USER_LOGOUT, NETWORK_UNCATEGORIZED, USER_UNCATEGORIZED, NETWORK_FLOW. |
N/A | metadata.log_type |
Codificado como "CISCO_VPN". |
N/A | metadata.event_timestamp |
Copiado do campo @timestamp analisado. |
N/A | extensions.auth.type |
Defina como "VPN", "AUTHTYPE_UNSPECIFIED" ou "MACHINE", dependendo do contexto do evento. |
N/A | security_result.about.resource.type |
Definido como "PACKET FRAGMENT" para o ID do evento 209005. |
N/A | is_alert |
Definido como "true" para eventos de alta gravidade (event_severity 0 ou 1). |
N/A | is_significant |
Definido como "true" para eventos de alta gravidade (event_severity 0 ou 1). |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.