Coletar registros do NAC do Forescout

Compatível com:

Este documento explica como ingerir registros do controle de acesso à rede (NAC, na sigla em inglês) da Forescout no Google Security Operations usando o Bindplane. O analisador processa registros formatados em syslog e CEF da NAC do Forescout. Ele extrai campos usando padrões grok, mapeia-os para o Modelo Unificado de Dados (UDM) e categoriza eventos com base em palavras-chave e campos extraídos, processando login/logout, conexões de rede, eventos de e-mail e atualizações de status do sistema. Uma lógica específica é implementada para processar eventos "CounterACT" e "Virtual Firewall", incluindo mapeamento de gravidade e otimização do contexto do usuário.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • O ForeScout CounterAct v8.0 ou a versão mais recente precisa estar instalado.
  • O plug-in Syslog v3.5 do módulo de extensão principal do ForeScout CounterAct precisa estar instalado.
  • Acesso privilegiado ao dispositivo Forescout e ao plug-in CounterACT

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
            ingestion_labels:
                log_type: 'FORESCOUT_NAC'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID do cliente real.

  5. 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
    

Instalar o plug-in do Syslog do CounterACT

  1. Acesse a página Forescount Base Plugins e baixe o arquivo do plug-in .fpi.
  2. Salve o arquivo na máquina em que o Console do CounterACT está instalado.
  3. Faça login no console do CounterACT.
  4. Selecione Opções > Plug-ins > Instalar.
  5. Procure e selecione o arquivo FPI do plug-in salvo.
  6. Clique em Install (Instalar).
  7. Aceite o contrato de licença para continuar.
  8. Quando a instalação terminar, clique em Fechar.
  9. Selecione o plug-in no painel Plug-in e clique em Iniciar.
  10. Selecione os CounterACT Appliances em que o plug-in será iniciado. Recomendamos executar o plug-in em todos os Appliances do ambiente.
  11. Clique em OK.
  12. Clique em Fechar.

Configurar o Syslog no plug-in Syslog do Forescout CounterACT

  1. No painel Plug-ins, clique em Syslog > Configurar.
  2. Selecione qualquer Appliance ou o Enterprise Manager na caixa de diálogo e clique em OK.
  3. Em Enviar eventos para, clique em Adicionar.
  4. Informe os seguintes detalhes de configuração:
    • Endereço do servidor: insira o endereço IP do agente do Bindplane.
    • Porta do servidor: insira o número da porta do agente Bindplane (por exemplo, 514 para UDP).
    • Protocolo do servidor: selecione UDP.
    • Identidade: campo de texto livre para identificar a mensagem syslog.
    • Opcional: Facility: recurso de mensagem do Syslog transmitido como parte do campo "Priority" da mensagem. Se o valor da unidade não for mencionado, ele será definido como local5.
    • Gravidade: selecione Informações.
  5. Acesse a guia Gatilho do Syslog.
  6. Não marque a caixa de seleção Enviar apenas mensagens geradas pela ação "Enviar mensagem para Syslog".
  7. Marque apenas a caixa de seleção Incluir carimbo de data/hora e identificador do dispositivo CounterACT em todas as mensagens.
  8. Clique em Opções para definir quais tipos de eventos acionam mensagens do syslog:
    • Inclua registros de política de NAC.
    • Inclua eventos de correspondência e não correspondência da política de NAC.
    • Selecione outros eventos, se disponíveis.
  9. Acesse a guia Configuração de ação padrão.
  10. Informe os seguintes detalhes de configuração:
    • Endereço do servidor: insira o endereço IP do agente do Bindplane.
    • Porta do servidor: insira o número da porta do agente Bindplane (por exemplo, 514 para UDP).
    • Protocolo do servidor: selecione UDP.
    • Identidade da mensagem: campo de texto livre para identificar a mensagem do Syslog.
    • Opcional: Facility: facilidade de mensagem Syslog transmitida como parte do campo "Priority" da mensagem. Se o valor da unidade não for mencionado, ele será definido como local5.
    • Gravidade: selecione Informações.
  11. Clique em OK.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
act security_result.action_details Mapeado diretamente do campo act nos registros CEF.
app network.application_protocol Mapeado diretamente do campo app nos registros CEF.
Available_memory additional.fields Extraído de kv_data quando event_type é "Estatísticas do sistema". A chave é "Memória disponível" e o valor é a string extraída.
Available_swap additional.fields Extraído de kv_data quando event_type é "Estatísticas do sistema". A chave é "Available swap" e o valor é a string extraída.
application_status additional.fields Extraído de kv_data quando event_type é "Status da inscrição". A chave é "Status do aplicativo", e o valor é a string extraída.
Assigned_hosts additional.fields Extraído de kv_log_data quando event_type é "Status da inscrição". A chave é "Hosts atribuídos" e o valor é a string extraída.
Category security_result.description Parte do security_result.description quando et_lower é "registro de política do NAC". Concatenado com outros detalhes.
command principal.process.command_line Extraído do campo rnmsg nos registros CEF quando começa com "command:".
Connected_clients additional.fields Extraído de kv_log_data quando event_type é "Status da inscrição". A chave é "Connected clients" e o valor é a string extraída.
CPU_usage additional.fields Extraído de kv_data quando event_type é "Estatísticas do sistema". A chave é "Uso da CPU", e o valor é a string extraída.
cs1 additional.fields Mapeado diretamente do campo cs1 nos registros CEF. A chave é "Nome da política de compliance".
cs2 additional.fields Mapeado diretamente do campo cs2 nos registros CEF. A chave é "Nome da subregra da política de compliance".
cs3 additional.fields Mapeado diretamente do campo cs3 nos registros CEF. A chave é "Status de conformidade do host".
cs4 additional.fields Mapeado diretamente do campo cs4 nos registros CEF. A chave é "Compliancy Event Trigger".
data security_result.description Usado em várias partes do analisador para extrair informações e contribuir para os campos finais da UDM. Não mapeado diretamente para um único campo do UDM.
details security_result.description Usado para preencher security_result.description em vários casos, incluindo ao analisar eventos de "Registro" e mudanças na sessão do usuário. Pode ser analisado para informações específicas.
Destination target.ip, target.hostname Analisado de kv_data ou data. Se ele puder ser convertido em um endereço IP, será mapeado para target.ip. Caso contrário, ele será mapeado para target.hostname.
deviceExternalId about.asset.asset_id Mapeado diretamente do campo deviceExternalId nos registros do CEF, com o prefixo "Forescout.CommandCenter:".
dhost target.hostname Mapeado diretamente do campo dhost nos registros CEF.
dmac target.mac Mapeado diretamente do campo dmac nos registros CEF.
dntdom target.administrative_domain Mapeado diretamente do campo dntdom nos registros CEF.
dst target.ip Mapeado diretamente do campo dst nos registros CEF.
dpt target.port Mapeado diretamente do campo dpt nos registros CEF.
duser target.user.user_display_name Mapeado diretamente do campo duser nos registros CEF.
dvc about.ip Mapeado diretamente do campo dvc nos registros CEF.
dvchost about.hostname Mapeado diretamente do campo dvchost nos registros CEF.
EM_connection_status additional.fields Extraído de kv_log_data quando event_type é "Status da inscrição". A chave é "EM connection status" e o valor é a string extraída.
Engine_status additional.fields Extraído de kv_log_data quando event_type é "Status da inscrição". A chave é "Engine status" e o valor é a string extraída.
event_type metadata.description, security_result.summary Analisado da mensagem de registro. Usado para determinar o tipo de evento da UDM e outros campos. Se o evento for um "GENERIC_EVENT", ele também será usado para a descrição.
eventtype additional.fields Mapeado diretamente do campo eventtype nos registros CEF. A chave é "eventtype".
externalId metadata.product_log_id Mapeado diretamente do campo externalId nos registros CEF.
from\[...\] to\[...\] principal.ip, target.ip Extrai IPs de origem e destino do padrão "de[...] para[...]".
Host principal.ip, principal.hostname Analisado de kv_data quando et_lower é "bloquear evento". Se for possível converter para um IP, mapeado para principal.ip. Caso contrário, para principal.hostname.
Hostname principal.hostname, principal.asset.hostname Mapeado para principal.hostname e principal.asset.hostname quando presente em eventos detectados de mudança de propriedade.
Installed_Plugins additional.fields Extraído de kv_log_data quando event_type é "Status da inscrição". A chave é "Installed Plugins" e o valor é a string extraída.
iporhost intermediary.ip, intermediary.hostname Analisado de header_data. Se for possível converter para um IP, mapeado para intermediary.ip. Caso contrário, para intermediary.hostname.
Is Virtual Firewall blocking rule security_result.action, security_result.rule_name Se for "true", define security_result.action como "BLOCK" e security_result.rule_name como "Virtual Firewall blocking".
log_description security_result.summary Mapeado diretamente para security_result.summary quando presente.
log_type metadata.log_type Definido como um valor constante "FORESCOUT_NAC".
MAC principal.mac Analisado de kv_data em eventos de mudança de propriedade detectados e formatado como um endereço MAC.
mail_from network.email.from Mapeado diretamente do campo mail_from extraído de mail_details.
mail_subject network.email.subject Mapeado diretamente do campo mail_subject extraído de mail_details.
mail_to network.email.to Mapeado diretamente do campo mail_to extraído de mail_details.
Match security_result.rule_name Mapeado diretamente do campo Match quando et_lower é "nac policy log".
metadata.event_type metadata.event_type Determinado por várias condições no analisador, incluindo a presença de campos e palavras-chave específicos na mensagem de registro. O padrão é GENERIC_EVENT e é atualizado com base nos dados analisados. Por exemplo, USER_LOGIN, USER_LOGOUT, NETWORK_CONNECTION, SCAN_NETWORK, STATUS_UPDATE, EMAIL_TRANSACTION e USER_UNCATEGORIZED.
metadata.product_name metadata.product_name Defina como "FORESCOUT NAC" para a maioria dos eventos ou como o valor do campo product, se ele existir. Para eventos CEF, ele é definido como "CounterAct".
metadata.vendor_name metadata.vendor_name Defina como "FORESCOUT" para a maioria dos eventos. Para eventos CEF, ele é extraído do campo cs1Label, se existir, ou definido como "ForeScout Technologies".
msg metadata.description Mapeado diretamente do campo msg nos registros CEF.
pid intermediary.process.pid Mapeado diretamente do campo pid extraído de header_data.
policy_details security_result.description Parte do security_result.description quando et_lower é "registro de política do NAC". Concatenado com outros detalhes.
product metadata.product_name Mapeado diretamente para metadata.product_name quando presente.
proto network.ip_protocol Mapeado diretamente do campo proto nos registros CEF.
Reason security_result.description Mapeado diretamente do campo Reason quando et_lower é "block event".
resource principal.resource.name Mapeado diretamente do campo resource nos registros CEF.
rnmsg security_result.description, principal.process.command_line Se começar com "command:", a parte depois de "command:" será mapeada para principal.process.command_line. Caso contrário, ele será mapeado para security_result.description.
rt metadata.event_timestamp Mapeado diretamente do campo rt nos registros CEF e convertido em um carimbo de data/hora.
Rule security_result.rule_id Mapeado diretamente do campo Rule quando et_lower é "nac policy log".
security_result.severity security_result.severity Derivado do campo severity_level. 0 a 3 correspondem a BAIXA, 4 a 6 a MÉDIA, 7 a 8 a ALTA e 9 a 10 a CRÍTICA.
security_result.severity_details security_result.severity_details Mapeado diretamente do campo severity nos registros CEF.
Service target.port, network.ip_protocol Analisado para extrair porta e protocolo. A porta é mapeada para target.port e o protocolo para network.ip_protocol.
session_id network.session_id Mapeado diretamente do campo session_id.
severity security_result.severity_details Mapeado diretamente do campo severity nos registros CEF.
severity_level security_result.severity Usado para determinar o security_result.severity.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.