Recolha registos de VPN da Cisco
Este documento explica como carregar registos de VPN do Cisco ASA para o Google Security Operations usando o Bindplane. O analisador extrai campos das mensagens syslog através de padrões grok, processando formatos syslog padrão e estruturas de mensagens alternativas. Em seguida, mapeia os campos extraídos para o modelo de dados unificado (UDM), categoriza os eventos com base nos IDs e nas informações extraídas e enriquece os dados com metadados, como o fornecedor, o produto e o tipo de evento. O analisador também processa IDs de eventos específicos, aplicando padrões grok e lógica adicionais para extrair detalhes relevantes e mapeá-los para campos UDM adequados.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Um anfitrião Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- Acesso privilegiado ao Cisco ASA
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte 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 o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
- Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml
. Normalmente, encontra-se no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
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 de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
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, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog para a VPN Cisco ASA
- Abra o Cisco ASDM.
- Aceda a Configuração > Funcionalidades > Propriedades > Registo > Configuração do registo.
- Selecione a caixa de verificação Ativar registo para ativar o syslog.
- Selecione Servidores Syslog em Registo e clique em Adicionar.
- Introduza os seguintes detalhes de configuração na janela Adicionar servidor Syslog:
- Interface: selecione a interface para a comunicação de saída.
- Endereço IP: introduza o endereço IP do agente Bindplane.
- Protocolo: selecione UDP.
- Porta: introduza o número da porta do agente do Bindplane.
- Clique em OK.
- Selecione Filtros de registo na secção Registo.
- Selecione Servidores Syslog e clique em Editar.
- Selecione Informativo na lista como o Filtro na gravidade.
- Clique em OK.
- Clique em Aplicar.
Tabela de mapeamento do UDM
Campo de registo | Mapeamento de 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 |
Derivada pelo analisador com base nas palavras-chave na mensagem de registo (por exemplo, "Recusar", "Rejeitar", "Permitir", "Aceitar"). Mapeia para PERMITIR ou BLOQUEAR. |
action |
security_result.action_details |
O valor da string não processada da ação realizada (por exemplo, "permitted", "denied", "disconnected"). |
app_name |
principal.application |
O nome da aplicação usada pelo principal (por exemplo, "CLI"). Extraído de message_details para o ID do evento 111008, 111009 e 111010. |
assigned_ipv4 |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no UDM. |
assigned_ipv6 |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no 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 cifra usada para a 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 da Cisco, extraído do campo eventtype . |
cisco_severity |
security_result.severity_details |
O nível de gravidade da Cisco não processado, extraído do campo eventtype . |
command |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no 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 rajada atual, extraído de message_info . |
desc |
metadata.description |
Descrição do evento, extraída da mensagem de registo. Usado quando não está disponível uma descrição mais específica. |
description |
metadata.description |
Uma descrição mais detalhada do evento, extraída da mensagem de registo quando disponível. |
destination_ip |
target.ip , target.asset.ip |
Endereço IP de destino, extraído de vários formatos de mensagens de registo. |
destination_ip_port |
target.port ou network.application_protocol |
Porta de destino, extraída de vários formatos de mensagens de registo. Se o valor extraído não for um número, é tratado como o protocolo de aplicação. |
dst_email |
target.user.email_addresses ou target.user.userid |
Endereço de email ou ID do utilizador de destino, extraído de message_info . Se o valor corresponder a um formato de email, é adicionado a email_addresses ; caso contrário, é usado como userid . |
dst_host |
target.hostname |
Nome de anfitrião 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 |
Porto de destino, extraído 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 a partir de vários campos de data/hora no registo não processado e analisadas através do 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 registo. |
group_name |
principal.group.group_display_name |
Nome do grupo extraído do campo group quando é um nome de anfitrião. |
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 do anfitrião do principal, extraído de vários formatos de mensagens de registo. |
hostname2 |
principal.hostname , principal.asset.hostname |
Nome do anfitrião do principal, extraído como alternativa quando hostname não está disponível. |
icmp_code |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no 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 seja analisado, este campo não está mapeado para o objeto IDM no 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 seja analisado, este campo não está mapeado para o objeto IDM no 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 alternativa quando os IPs de origem e destino são os mesmos. |
ip_2 |
target.ip , target.asset.ip |
Endereço IP de destino extraído como alternativa quando os IPs de origem e destino são os mesmos. |
ipprotocol |
network.ip_protocol |
Protocolo IP, extraído de vários formatos de mensagens de registo e convertido em maiúsculas. |
issuer |
network.tls.client.certificate.issuer |
Emissor do certificado de pares, 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 para extrair ações de autenticação. |
login |
security_result.summary |
Estado de início de sessão, 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 registo, que contém detalhes sobre o evento. Analisado através de vários padrões grok, consoante o 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 anfitrião ou endereço IP do observador, extraído da mensagem de registo. |
observer_ip |
observer.ip |
Endereço IP do observador, extraído do campo observer . |
peer_type |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no 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 os IDs de eventos 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 seja analisado, este campo não está mapeado para o objeto IDM no UDM. |
privilege_level_to |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no 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 registo. Se o protocolo for um protocolo IP padrão (ICMP, TCP, UDP, ESP), é mapeado para network.ip_protocol ; caso contrário, é 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 ficheiro obtido, 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ído ou derivado da mensagem de registo. |
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 registo. |
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 de anfitrião 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 registo. |
source_ip_port |
principal.port |
Porta de origem, extraída de vários formatos de mensagens de registo. |
src_email |
principal.user.email_addresses ou principal.user.userid |
Endereço de email ou ID do utilizador de origem, extraído do message_info . Se o valor corresponder a um formato de email, é adicionado a email_addresses ; caso contrário, é 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 a apresentar do utilizador de origem, extraído de message_details para os IDs de eventos 713049 e 713120. |
subject |
network.tls.client.certificate.subject |
Assunto do certificado de pares, 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 anfitrião 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 seja analisado, este campo não está mapeado para o objeto IDM no UDM. |
tcp_dst_ip |
target.ip , target.asset.ip |
Endereço IP de destino da carga útil TCP original de uma mensagem de erro ICMP. |
tcp_dst_port |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no UDM. |
tcp_src_ip |
principal.ip , principal.asset.ip |
Endereço IP de origem da carga útil TCP original de uma mensagem de erro ICMP. |
tcp_src_port |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no UDM. |
threshold |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no UDM. |
tls_version |
network.tls.version |
Versão de TLS, extraída de message_details para o ID do evento 725002. |
ts |
@timestamp |
Data/hora do evento, analisada através do filtro date . |
ts_day |
@timestamp (parte de) |
Dia do mês da data/hora, usado para construir o campo @timestamp . |
ts_month |
@timestamp (parte de) |
Mês da data/hora, usado para construir o campo @timestamp . |
ts_time |
@timestamp (parte de) |
Hora a partir da data/hora, usada para construir o campo @timestamp . |
ts_year |
@timestamp (parte de) |
Ano da data/hora, usado para construir o campo @timestamp . |
tunnel_type |
N/A | Embora seja analisado, este campo não está mapeado para o objeto IDM no UDM. |
user |
principal.user.userid , target.user.userid |
ID do utilizador, extraído de vários formatos de mensagens de registo. |
user_agent |
network.http.user_agent |
String do agente do utilizador, extraída de message_details para o ID do evento 722055. |
user_attr.key |
principal.user.attribute.labels.key |
Chave de um atributo do utilizador, extraída de message_details para os IDs de eventos 734003 e 734001. |
user_attr.value |
principal.user.attribute.labels.value |
Valor de um atributo do utilizador, extraído de message_details para os IDs de eventos 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 utilizador, extraído de message_details para os IDs de eventos 111008, 111009, 111010 e 113008. |
N/A | metadata.vendor_name |
Codificado como "CISCO". |
N/A | metadata.product_name |
Codificado como "ASA VPN" ou "VPN". |
N/A | metadata.event_type |
Determinado 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 ou NETWORK_FLOW. |
N/A | metadata.log_type |
Codificado de forma rígida para "CISCO_VPN". |
N/A | metadata.event_timestamp |
Copiado do campo @timestamp analisado. |
N/A | extensions.auth.type |
Definido como "VPN", "AUTHTYPE_UNSPECIFIED" ou "MACHINE", consoante o 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 verdadeiro para eventos de gravidade elevada (event_severity 0 ou 1). |
N/A | is_significant |
Definido como verdadeiro para eventos de gravidade elevada (event_severity 0 ou 1). |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.