Coletar registros do McAfee Firewall Enterprise
Este documento descreve como coletar registros do McAfee Firewall Enterprise. Primeiro, o código do analisador extrai campos usando uma série de padrões Grok, processando os formatos SYSLOG e JSON. Em seguida, dependendo da categoria de registro identificada, ele aplica padrões Grok específicos e extrações de chave-valor para mapear os dados no esquema UDM do Google Security Operations.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Use o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado ao McAfee ESM.
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 com segurança no sistema em que o agente do 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
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 este guia de instalação.
Configurar o agente do Bindplane para ingerir 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 with your specific IP and port listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Path to the ingestion authentication file creds: '/path/to/your/ingestion-auth.json' # Your Chronicle customer ID customer_id: 'your_customer_id' endpoint: malachiteingestion-pa.googleapis.com ingestion_labels: log_type: SYSLOG namespace: mcafee_esm 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
No Linux, para reiniciar o agente do Bindplane, execute o seguinte comando:
sudo systemctl restart bindplane-agent
No Windows, para reiniciar o Bindplane Agent, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o McAfee ESM para encaminhar o Syslog
- Faça login no console do McAfee ESM.
- Acesse Propriedades do sistema > Encaminhamento de eventos.
- Clique em Adicionar para criar uma regra de encaminhamento de syslog.
- Defina as configurações a seguir:
- Nome: insira um nome descritivo, por exemplo, "Encaminhamento do Google SecOps".
- Endereço IP de destino: insira o IP do seu servidor Syslog (ou do agente do Bindplane).
- Porta de destino: use 514 para UDP. É possível especificar outra porta, dependendo da configuração do servidor Syslog/Bindplane.
- Protocolo: selecione UDP. Outras opções são TCP ou TLS, dependendo da configuração do servidor Syslog/Bindplane.
- Formato: escolha CEF (Common Event Format) ou ASCII (formato recomendado para registros da McAfee).
- Filtros: defina os tipos de eventos que você quer encaminhar, por exemplo, registros de firewall, eventos de autenticação ou detecções de ameaças.
- Clique em Salvar.
- Reinicie o serviço McAfee ESM para que as mudanças entrem em vigor.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento da UDM | Lógica |
---|---|---|
age | security_result.action_details | O valor é extraído do campo "act" no payload JSON analisado. |
gato | security_result.category_details | O valor é extraído do campo "cat" no payload JSON analisado. |
data.AppID | target.application | O valor é extraído do campo "AppID" no payload JSON analisado. |
data.Destination_Hostname | target.hostname | O valor é extraído do campo "Destination_Hostname" no payload JSON analisado. |
data.Destination_UserID | target.user.windows_sid | O valor é extraído do campo "Destination_UserID" no payload JSON analisado. |
data.DomainID | target.administrative_domain | O valor é extraído do campo "DomainID" no payload JSON analisado. |
data.dst_ip | target.ip | O valor é extraído do campo "dst_ip" no payload JSON analisado. |
data.dst_mac | target.mac | O valor é extraído do campo "dst_mac" no payload JSON analisado. |
data.dst_port | target.port | O valor é extraído do campo "dst_port" no payload JSON analisado e convertido em um número inteiro. |
data.HostID | target.hostname | O valor é extraído do campo "HostID" no payload JSON analisado. |
data.norm_sig.name | Esse campo determina o tipo de evento com base no valor dele. | |
data.PID | target.process.pid | O valor é extraído do campo "PID" no payload JSON analisado. |
data.Process_Name | target.process.command_line | O valor é extraído do campo "Process_Name" no payload JSON analisado. |
data.severity | security_result.severity | O valor é extraído do campo "severity" no payload JSON analisado, convertido em um número inteiro e mapeado para um nível de gravidade da UDM com base no valor: LOW (1 a 32), MEDIUM (33 a 65) e HIGH (66 a 100). |
data.sig.name | security_result.description | O valor é extraído do campo "sig.name" no payload JSON analisado. |
data.Source_Logon_ID | about.labels.value | O valor é extraído do campo "Source_Logon_ID" no payload JSON analisado. |
data.Source_UserID | principal.user.windows_sid | O valor é extraído do campo "Source_UserID" no payload JSON analisado. |
data.src_ip | principal.ip | O valor é extraído do campo "src_ip" no payload JSON analisado. |
data.src_mac | principal.mac | O valor é extraído do campo "src_mac" no payload JSON analisado. |
data.src_port | principal.port | O valor é extraído do campo "src_port" no payload JSON analisado e convertido em um número inteiro. |
data.UserIDDst | target.user.userid | O valor é extraído do campo "UserIDDst" no payload JSON analisado. |
data.UserIDSrc | principal.user.userid | O valor é extraído do campo "UserIDSrc" no payload JSON analisado. |
deviceExternalId | about.asset.asset_id | O valor é extraído do campo "deviceExternalId" no payload JSON analisado e combinado com o nome do produto para criar um ID de recurso exclusivo. |
deviceTranslatedAddress | about.nat_ip | O valor é extraído do campo "deviceTranslatedAddress" no payload JSON analisado. |
dst | target.ip | O valor é extraído do campo "dst" no payload JSON analisado. |
dpt | target.port | O valor é extraído do campo "dpt" no payload JSON analisado e convertido em um número inteiro. |
eventId | additional.fields.value.string_value | O valor é extraído do campo "eventId" no payload JSON analisado. |
externalId | metadata.product_log_id | O valor é extraído do campo "externalId" no payload JSON analisado. |
nome do host | principal.hostname | O valor é extraído do campo "hostname" pelo padrão grok. |
log_category | metadata.log_type | O valor é extraído do campo "log_category" pelo padrão grok. |
log_type | metadata.product_event_type | O valor é extraído do campo "log_type" pelo padrão grok. |
mensagem | Esse campo é analisado para extrair vários campos, dependendo da categoria do registro. | |
nitroURL | Esse campo não é mapeado para o objeto IDM na UDM. | |
pid | principal.process.pid | O valor é extraído do campo "pid" pelo padrão grok. |
process_id | about.process.pid | O valor é extraído do campo "process_id" pelo padrão grok. |
proto | network.ip_protocol | O valor é extraído do campo "proto" no payload JSON analisado e mapeado para o protocolo IP correspondente. |
rhost | principal.ip | O valor é extraído do campo "rhost" pelo padrão grok e analisado como um endereço IP. |
shost | principal.hostname | O valor é extraído do campo "shost" no payload JSON analisado. |
sntdom | principal.administrative_domain | O valor é extraído do campo "sntdom" no payload JSON analisado. |
spt | principal.port | O valor é extraído do campo "spt" no payload JSON analisado e convertido em um número inteiro. |
src | principal.ip | O valor é extraído do campo "src" no payload JSON analisado. |
tempo | timestamp | O valor é extraído do campo "time" pelo padrão grok e analisado como um carimbo de data/hora. |
tipo | metadata.product_event_type | O valor é extraído do campo "type" pelo filtro kv. |
uid | principal.user.userid | O valor é extraído do campo "uid" pelo filtro kv. |
metadata.event_type | metadata.event_type | O valor é definido com base no nome do evento e em outros campos no registro. A lógica para determinar o tipo de evento é a seguinte: se o nome do evento contiver "TCP", o tipo de evento será definido como "NETWORK_CONNECTION". - Se o nome do evento contiver "Mail", o tipo de evento será definido como "EMAIL_TRANSACTION". - Se o nome do evento contiver "HTTP" ou "http", o tipo de evento será definido como "NETWORK_HTTP". - Se o nome do evento contiver "User Accessed" ou "denied by access-list", o tipo de evento será definido como "USER_RESOURCE_ACCESS". - Se o nome do evento contiver "Data Source Idle", o tipo de evento será definido como "STATUS_UPDATE". - Se o nome do evento contiver "Comm with snowflex", o tipo de evento será definido como "SERVICE_UNSPECIFIED". - Se o nome do evento contiver "Uma conta foi conectada com êxito", o tipo de evento será definido como "USER_LOGIN". - Se o nome do evento contiver "Initialization status for service objects", o tipo de evento será definido como "GENERIC_EVENT". - Se nenhuma das condições acima for atendida, o tipo de evento será definido como "GENERIC_EVENT". |
metadata.vendor_name | metadata.vendor_name | O valor é definido como "MCAFEE". |
network.direction | network.direction | O valor é definido como "INBOUND" se o campo "deviceDirection" no payload JSON analisado for 0. Caso contrário, será definido como "OUTBOUND". |
security_result.severity | security_result.severity | O valor é definido como "LOW" se o campo "cef_event_severity" no payload JSON analisado for 1, "MEDIUM" se for 2, "HIGH" se for 3 e "CRITICAL" se for 9. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.