Recolha registos do McAfee Firewall Enterprise
Este documento descreve como pode recolher registos do McAfee Firewall Enterprise. O código do analisador extrai primeiro os campos através de uma série de padrões Grok, processando os formatos SYSLOG e JSON. Em seguida, consoante a categoria de registo identificada, 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
- Certifique-se de que tem uma instância do Google Security Operations.
- Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
. - Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
- Certifique-se de que tem acesso privilegiado ao McAfee ESM.
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 agente do 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
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 este 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 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 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
No Linux, para reiniciar o agente Bindplane, execute o seguinte comando:
sudo systemctl restart bindplane-agent
No Windows, para reiniciar o agente Bindplane, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o McAfee ESM para encaminhar o Syslog
- Inicie sessão na consola do McAfee ESM.
- Aceda a Propriedades do sistema > Encaminhamento de eventos.
- Clique em Adicionar para criar uma nova regra de encaminhamento de syslog.
- Configure as seguintes definições:
- Nome: introduza um nome descritivo (por exemplo, Encaminhamento do Google SecOps).
- Endereço IP de destino: introduza o IP do seu servidor Syslog (ou agente do Bindplane).
- Porta de destino: use 514 para UDP (pode especificar outra porta, consoante a configuração do servidor Syslog/Bindplane).
- Protocolo: selecione UDP (outras opções são TCP ou TLS, consoante a configuração do servidor Syslog/Bindplane).
- Formato: escolha CEF (Common Event Format) ou ASCII (formato recomendado para registos do McAfee).
- Filtros: defina os tipos de eventos que quer encaminhar, por exemplo, registos de firewall, eventos de autenticação ou deteções de ameaças.
- Clique em Guardar.
- Reinicie o serviço McAfee ESM para que as alterações entrem em vigor.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento do UDM | Lógica |
---|---|---|
agir | security_result.action_details | O valor é retirado do campo "act" na carga útil JSON analisada. |
gato | security_result.category_details | O valor é retirado do campo "cat" no payload JSON analisado. |
data.AppID | target.application | O valor é retirado do campo "AppID" no payload JSON analisado. |
data.Destination_Hostname | target.hostname | O valor é retirado do campo "Destination_Hostname" na carga útil JSON analisada. |
data.Destination_UserID | target.user.windows_sid | O valor é retirado do campo "Destination_UserID" na carga útil JSON analisada. |
data.DomainID | target.administrative_domain | O valor é retirado do campo "DomainID" na carga útil JSON analisada. |
data.dst_ip | target.ip | O valor é retirado do campo "dst_ip" na carga útil JSON analisada. |
data.dst_mac | target.mac | O valor é retirado do campo "dst_mac" na carga útil JSON analisada. |
data.dst_port | target.port | O valor é retirado do campo "dst_port" no payload JSON analisado e convertido num número inteiro. |
data.HostID | target.hostname | O valor é retirado do campo "HostID" no payload JSON analisado. |
data.norm_sig.name | Este campo determina o tipo de evento com base no respetivo valor. | |
data.PID | target.process.pid | O valor é retirado do campo "PID" na carga útil JSON analisada. |
data.Process_Name | target.process.command_line | O valor é retirado do campo "Process_Name" na carga útil JSON analisada. |
data.severity | security_result.severity | O valor é retirado do campo "gravidade" na carga útil JSON analisada, convertido num número inteiro e mapeado para um nível de gravidade da UDM com base no respetivo valor: BAIXO (1-32), MÉDIO (33-65), ALTO (66-100). |
data.sig.name | security_result.description | O valor é retirado do campo "sig.name" na carga útil JSON analisada. |
data.Source_Logon_ID | about.labels.value | O valor é retirado do campo "Source_Logon_ID" no payload JSON analisado. |
data.Source_UserID | principal.user.windows_sid | O valor é retirado do campo "Source_UserID" no payload JSON analisado. |
data.src_ip | principal.ip | O valor é retirado do campo "src_ip" no payload JSON analisado. |
data.src_mac | principal.mac | O valor é retirado do campo "src_mac" no payload JSON analisado. |
data.src_port | principal.port | O valor é retirado do campo "src_port" no payload JSON analisado e convertido num número inteiro. |
data.UserIDDst | target.user.userid | O valor é retirado do campo "UserIDDst" na carga útil JSON analisada. |
data.UserIDSrc | principal.user.userid | O valor é retirado do campo "UserIDSrc" na carga útil JSON analisada. |
deviceExternalId | about.asset.asset_id | O valor é retirado do campo "deviceExternalId" na carga útil JSON analisada e combinado com o nome do produto para criar um ID do recurso exclusivo. |
deviceTranslatedAddress | about.nat_ip | O valor é retirado do campo "deviceTranslatedAddress" no payload JSON analisado. |
dst | target.ip | O valor é retirado do campo "dst" na carga útil JSON analisada. |
dpt | target.port | O valor é retirado do campo "dpt" na carga útil JSON analisada e convertido num número inteiro. |
eventId | additional.fields.value.string_value | O valor é retirado do campo "eventId" no payload JSON analisado. |
externalId | metadata.product_log_id | O valor é retirado do campo "externalId" no payload JSON analisado. |
hostname | principal.hostname | O valor é retirado do campo "hostname" extraído pelo padrão grok. |
log_category | metadata.log_type | O valor é retirado do campo "log_category" extraído pelo padrão grok. |
log_type | metadata.product_event_type | O valor é retirado do campo "log_type" extraído pelo padrão grok. |
mensagem | Este campo é analisado para extrair vários campos, consoante a categoria do registo. | |
nitroURL | Este campo não está mapeado para o objeto IDM no UDM. | |
pid | principal.process.pid | O valor é retirado do campo "pid" extraído pelo padrão grok. |
process_id | about.process.pid | O valor é retirado do campo "process_id" extraído pelo padrão grok. |
proto | network.ip_protocol | O valor é retirado do campo "proto" no payload JSON analisado e mapeado para o protocolo IP correspondente. |
rhost | principal.ip | O valor é retirado do campo "rhost" extraído pelo padrão grok e analisado como um endereço IP. |
shost | principal.hostname | O valor é retirado do campo "shost" no payload JSON analisado. |
sntdom | principal.administrative_domain | O valor é retirado do campo "sntdom" no payload JSON analisado. |
spt | principal.port | O valor é retirado do campo "spt" na carga útil JSON analisada e convertido num número inteiro. |
src | principal.ip | O valor é retirado do campo "src" no payload JSON analisado. |
tempo | timestamp | O valor é retirado do campo "time" extraído pelo padrão grok e analisado como uma data/hora. |
escrever | metadata.product_event_type | O valor é retirado do campo "type" extraído pelo filtro kv. |
uid | principal.user.userid | O valor é retirado do campo "uid" extraído pelo filtro kv. |
metadata.event_type | metadata.event_type | O valor é definido com base no nome do evento e noutros campos no registo. A lógica para determinar o tipo de evento é a seguinte: - Se o nome do evento contiver "TCP", o tipo de evento é definido como "NETWORK_CONNECTION". – Se o nome do evento contiver "Mail", o tipo de evento é definido como "EMAIL_TRANSACTION". – Se o nome do evento contiver "HTTP" ou "http", o tipo de evento é definido como "NETWORK_HTTP". - Se o nome do evento contiver "User Accessed" ou "denied by access-list", o tipo de evento é definido como "USER_RESOURCE_ACCESS". – Se o nome do evento contiver "Data Source Idle", o tipo de evento é definido como "STATUS_UPDATE". – Se o nome do evento contiver "Comm with snowflex", o tipo de evento é definido como "SERVICE_UNSPECIFIED". - Se o nome do evento contiver "An account was successfully logged on" (Uma conta iniciou sessão com êxito), o tipo de evento é definido como "USER_LOGIN". - Se o nome do evento contiver "Initialization status for service objects", o tipo de evento é definido como "GENERIC_EVENT". – Se nenhuma das condições acima for cumprida, o tipo de evento é definido como "GENERIC_EVENT". |
metadata.vendor_name | metadata.vendor_name | O valor está definido como "MCAFEE". |
network.direction | network.direction | O valor é definido como "INBOUND" se o campo "deviceDirection" na carga útil JSON analisada for 0. Caso contrário, é definido como "OUTBOUND". |
security_result.severity | security_result.severity | O valor é definido como "LOW" se o campo "cef_event_severity" na carga útil JSON analisada 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 da Google SecOps.