Coletar registros de VPN da Cisco

Compatível com:

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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. 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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. 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

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. 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

  1. 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).
  2. 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

  1. Abra o Cisco ASDM.
  2. Acesse Configuração > Recursos > Propriedades > Registro > Configuração de registro.
  3. Marque a caixa de seleção Ativar geração de registros para ativar o syslog.
  4. Selecione Servidores Syslog em Logging e clique em Adicionar.
  5. 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.
  6. Selecione Filtros de geração de registros na seção Geração de registros.
  7. Selecione Servidores Syslog e clique em Editar.
  8. Selecione Informativo na lista como o Filtro por gravidade.
  9. Clique em OK.
  10. 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.