Recolha registos de NAC do Forescout
Este documento explica como carregar registos do Forescout Network Access Control (NAC) para o Google Security Operations através do Bindplane. O analisador processa registos formatados syslog e CEF do Forescout NAC. Extrai campos através de padrões grok, mapeia-os para o modelo de dados unificado (UDM) e categoriza eventos com base em palavras-chave e campos extraídos, processando o início/fim de sessão, as ligações de rede, os eventos de correio e as atualizações do estado do sistema. É implementada uma lógica específica para processar eventos "CounterACT" e "Virtual Firewall", incluindo o mapeamento da gravidade e o enriquecimento do contexto do utilizador.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- 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
- Deve ter instalada a versão 8.0 ou a versão mais recente do ForeScout CounterAct
- O plugin Syslog v3.5 do módulo de extensão principal do ForeScout CounterAct deve estar instalado
- Acesso privilegiado ao dispositivo Forescout e ao plug-in CounterACT
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 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 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 Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Instale o plugin Syslog do CounterACT
- Aceda à página Forescount Base Plugins e transfira o ficheiro do plug-in .fpi.
- Guarde o ficheiro no computador onde a CounterACT Console está instalada.
- Inicie sessão na CounterACT Console.
- Selecione Opções > Plug-ins > Instalar.
- Procure e selecione o ficheiro FPI do plug-in guardado.
- Clique em Instalar.
- Aceite o contrato de licença para continuar.
- Quando a instalação estiver concluída, clique em Fechar.
- Selecione o plug-in no painel Plug-in e clique em Iniciar.
- Selecione os CounterACT Appliances nos quais iniciar o plug-in (é recomendado executar o plug-in em todos os Appliances no ambiente).
- Clique em OK.
- Clique em Fechar.
Configure o Syslog no plugin Syslog do Forescout CounterACT
- No painel Plug-ins, clique em Syslog > Configurar.
- Selecione qualquer dispositivo ou o Enterprise Manager na caixa de diálogo e clique em OK.
- Em Enviar eventos para, clique em Adicionar.
- Indique os seguintes detalhes de configuração:
- Endereço do servidor: introduza o endereço IP do agente do Bindplane.
- Porta do servidor: introduza 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: Instalação: instalação de mensagens Syslog transmitida como parte do campo de prioridade da mensagem. Se o valor da instalação não for mencionado, é definido como
local5
. - Gravidade: selecione Informações.
- Aceda ao separador Acionador Syslog.
- Não selecione a caixa de verificação Apenas enviar mensagens geradas pela ação "Enviar mensagem para Syslog".
- Selecione apenas a caixa de verificação Incluir data/hora e identificador do dispositivo CounterACT em todas as mensagens.
- Clique em Opções para definir que tipos de eventos acionam mensagens syslog:
- Incluir registos de políticas de NAC.
- Inclua eventos de correspondência/não correspondência da política de NAC.
- Se estiverem disponíveis, selecione outros eventos.
- Aceda ao separador Configuração da ação predefinida.
- Indique os seguintes detalhes de configuração:
- Endereço do servidor: introduza o endereço IP do agente do Bindplane.
- Porta do servidor: introduza 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 Syslog.
- Opcional: Facility: funcionalidade de mensagem Syslog que é transmitida como parte do campo Priority da mensagem. Se o valor da instalação não for mencionado, é definido como
local5
. - Gravidade: selecione Informações.
- Clique em OK.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
act |
security_result.action_details |
Mapeado diretamente a partir do campo act nos registos CEF. |
app |
network.application_protocol |
Mapeado diretamente a partir do campo app nos registos 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 é "Estado da candidatura". A chave é "Estado da candidatura" e o valor é a string extraída. |
Assigned_hosts |
additional.fields |
Extraído de kv_log_data quando event_type é "Estado da candidatura". A chave é "Anfitriões atribuídos" e o valor é a string extraída. |
Category |
security_result.description |
Parte do security_result.description quando et_lower é "nac policy log". Concatenado com outros detalhes. |
command |
principal.process.command_line |
Extraído do campo rnmsg nos registos CEF quando começa com "command:". |
Connected_clients |
additional.fields |
Extraído de kv_log_data quando event_type é "Estado da candidatura". 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 é "Utilização da CPU" e o valor é a string extraída. |
cs1 |
additional.fields |
Mapeado diretamente a partir do campo cs1 nos registos CEF. A chave é "Nome da política de conformidade". |
cs2 |
additional.fields |
Mapeado diretamente a partir do campo cs2 nos registos CEF. A chave é "Compliancy Policy Subrule Name". |
cs3 |
additional.fields |
Mapeado diretamente a partir do campo cs3 nos registos CEF. A chave é "Host Compliancy Status". |
cs4 |
additional.fields |
Mapeado diretamente a partir do campo cs4 nos registos 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 de dados do utilizador. |
details |
security_result.description |
Usado para preencher security_result.description em vários casos, incluindo quando analisa eventos "Log" e alterações na sessão do utilizador. Pode ser analisado mais detalhadamente para obter informações específicas. |
Destination |
target.ip , target.hostname |
Analisado a partir de kv_data ou data . Se puder ser convertido num endereço IP, é mapeado para target.ip . Caso contrário, é mapeado para target.hostname . |
deviceExternalId |
about.asset.asset_id |
Mapeado diretamente a partir do campo deviceExternalId nos registos CEF, com o prefixo "Forescout.CommandCenter:". |
dhost |
target.hostname |
Mapeado diretamente a partir do campo dhost nos registos CEF. |
dmac |
target.mac |
Mapeado diretamente a partir do campo dmac nos registos CEF. |
dntdom |
target.administrative_domain |
Mapeado diretamente a partir do campo dntdom nos registos CEF. |
dst |
target.ip |
Mapeado diretamente a partir do campo dst nos registos CEF. |
dpt |
target.port |
Mapeado diretamente a partir do campo dpt nos registos CEF. |
duser |
target.user.user_display_name |
Mapeado diretamente a partir do campo duser nos registos CEF. |
dvc |
about.ip |
Mapeado diretamente a partir do campo dvc nos registos CEF. |
dvchost |
about.hostname |
Mapeado diretamente a partir do campo dvchost nos registos CEF. |
EM_connection_status |
additional.fields |
Extraído de kv_log_data quando event_type é "Estado da candidatura". 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 é "Estado da candidatura". A chave é "Estado do motor" e o valor é a string extraída. |
event_type |
metadata.description , security_result.summary |
Analisado a partir da mensagem de registo. Usado para determinar o tipo de evento da UDM e outros campos. Se o evento for um "GENERIC_EVENT", também é usado para a descrição. |
eventtype |
additional.fields |
Mapeado diretamente a partir do campo eventtype nos registos CEF. A chave é "eventtype". |
externalId |
metadata.product_log_id |
Mapeado diretamente a partir do campo externalId nos registos CEF. |
from\[...\] to\[...\] |
principal.ip , target.ip |
Extrai os IPs de origem e destino do padrão "from[...] to[...]". |
Host |
principal.ip , principal.hostname |
Analisado a partir de kv_data quando et_lower é "block event". Se for conversível num 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 presentes em eventos de alteração da propriedade detetados. |
Installed_Plugins |
additional.fields |
Extraído de kv_log_data quando event_type é "Estado da candidatura". A chave é "Installed Plugins" e o valor é a string extraída. |
iporhost |
intermediary.ip , intermediary.hostname |
Analisado a partir de header_data . Se for conversível num 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 para o valor constante "FORESCOUT_NAC". |
MAC |
principal.mac |
Analisado a partir de kv_data em eventos de alteração de propriedades detetados e formatado como um endereço MAC. |
mail_from |
network.email.from |
Mapeado diretamente a partir do campo mail_from extraído de mail_details . |
mail_subject |
network.email.subject |
Mapeado diretamente a partir do campo mail_subject extraído de mail_details . |
mail_to |
network.email.to |
Mapeado diretamente a partir do campo mail_to extraído de mail_details . |
Match |
security_result.rule_name |
Mapeado diretamente a partir do campo Match quando et_lower é "registo da política de NAC". |
metadata.event_type |
metadata.event_type |
Determinada por várias condições no analisador, incluindo a presença de campos e palavras-chave específicos na mensagem de registo. A predefinição é GENERIC_EVENT e é atualizada com base nos dados analisados. Os exemplos incluem USER_LOGIN , USER_LOGOUT , NETWORK_CONNECTION , SCAN_NETWORK , STATUS_UPDATE , EMAIL_TRANSACTION e USER_UNCATEGORIZED . |
metadata.product_name |
metadata.product_name |
Definido como "FORESCOUT NAC" para a maioria dos eventos ou para o valor do campo product , se existir. Para eventos CEF, está definido como "CounterAct". |
metadata.vendor_name |
metadata.vendor_name |
Definido como "FORESCOUT" para a maioria dos eventos. Para eventos CEF, é retirado do campo cs1Label , se existir, ou definido como "ForeScout Technologies". |
msg |
metadata.description |
Mapeado diretamente a partir do campo msg nos registos CEF. |
pid |
intermediary.process.pid |
Mapeado diretamente a partir do campo pid extraído de header_data . |
policy_details |
security_result.description |
Parte do security_result.description quando et_lower é "nac policy log". Concatenado com outros detalhes. |
product |
metadata.product_name |
Mapeado diretamente para metadata.product_name quando presente. |
proto |
network.ip_protocol |
Mapeado diretamente a partir do campo proto nos registos CEF. |
Reason |
security_result.description |
Mapeado diretamente a partir do campo Reason quando et_lower é "block event". |
resource |
principal.resource.name |
Mapeado diretamente a partir do campo resource nos registos CEF. |
rnmsg |
security_result.description , principal.process.command_line |
Se começar por "command:", a parte após "command:" é mapeada para principal.process.command_line . Caso contrário, é mapeado para security_result.description . |
rt |
metadata.event_timestamp |
Mapeado diretamente a partir do campo rt nos registos CEF, convertido numa data/hora. |
Rule |
security_result.rule_id |
Mapeado diretamente a partir do campo Rule quando et_lower é "registo da política de NAC". |
security_result.severity |
security_result.severity |
Derivado do campo severity_level . 0 a 3 corresponde a BAIXO, 4 a 6 corresponde a MÉDIO, 7 a 8 corresponde a ELEVADO e 9 a 10 corresponde a CRÍTICO. |
security_result.severity_details |
security_result.severity_details |
Mapeado diretamente a partir do campo severity nos registos CEF. |
Service |
target.port , network.ip_protocol |
Analisado para extrair a porta e o protocolo. A porta está mapeada para target.port e o protocolo para network.ip_protocol . |
session_id |
network.session_id |
Mapeado diretamente a partir do campo session_id . |
severity |
security_result.severity_details |
Mapeado diretamente a partir do campo severity nos registos 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 da Google SecOps.