Coletar registros do NAC do Forescout
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
- 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 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
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 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
- Acesse a página Forescount Base Plugins e baixe o arquivo do plug-in .fpi.
- Salve o arquivo na máquina em que o Console do CounterACT está instalado.
- Faça login no console do CounterACT.
- Selecione Opções > Plug-ins > Instalar.
- Procure e selecione o arquivo FPI do plug-in salvo.
- Clique em Install (Instalar).
- Aceite o contrato de licença para continuar.
- Quando a instalação terminar, clique em Fechar.
- Selecione o plug-in no painel Plug-in e clique em Iniciar.
- Selecione os CounterACT Appliances em que o plug-in será iniciado. Recomendamos executar o plug-in em todos os Appliances do ambiente.
- Clique em OK.
- Clique em Fechar.
Configurar o Syslog no plug-in Syslog do Forescout CounterACT
- No painel Plug-ins, clique em Syslog > Configurar.
- Selecione qualquer Appliance ou o Enterprise Manager na caixa de diálogo e clique em OK.
- Em Enviar eventos para, clique em Adicionar.
- 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.
- Acesse a guia Gatilho do Syslog.
- Não marque a caixa de seleção Enviar apenas mensagens geradas pela ação "Enviar mensagem para Syslog".
- Marque apenas a caixa de seleção Incluir carimbo de data/hora e identificador do dispositivo CounterACT em todas as mensagens.
- 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.
- Acesse a guia Configuração de ação padrão.
- 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.
- 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.