Coletar registros do McAfee Firewall Enterprise
Este documento descreve como coletar registros do McAfee Firewall Enterprise. O código do analisador primeiro 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 específicos do Grok e extrações de chave-valor para mapear os dados no esquema de UDM do Google Security Operations.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se 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.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.
Receber o ID de 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 raiz 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 BindPlane para ingerir o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está 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 Notepad).
- 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 de 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 o arquivo de autenticação de ingestão do Google SecOps.
Reinicie o agente BindPlane para aplicar as mudanças.
No Linux, para reiniciar o agente BindPlane, execute o seguinte comando:
sudo systemctl restart bindplane-agent
No Windows, para reiniciar o agente BindPlane, use o console Services ou digite 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 nova regra de encaminhamento de syslog.
- Defina as configurações a seguir:
- Nome: insira um nome descritivo (por exemplo, Google SecOps Forwarding).
- Endereço IP de destino: insira o IP do servidor Syslog (ou 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. As outras opções são TCP ou TLS, dependendo da configuração do servidor Syslog/Bindplane.
- Formato: escolha CEF (formato de evento comum) ou ASCII (formato recomendado para registros do McAfee).
- Filtros: defina os tipos de eventos que você quer encaminhar, por exemplo, registros de firewall, eventos de autenticação ou detecção 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 de UDM | Lógica |
---|---|---|
ato | security_result.action_details | O valor é extraído do campo "act" no payload JSON analisado. |
gato | security_result.category_details | O valor é retirado 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 é retirado do campo "dst_ip" no payload JSON analisado. |
data.dst_mac | target.mac | O valor é retirado do campo "dst_mac" no payload JSON analisado. |
data.dst_port | target.port | O valor é retirado do campo "dst_port" no payload JSON analisado e convertido em um número inteiro. |
data.HostID | target.hostname | O valor é retirado do campo "HostID" no payload JSON analisado. |
data.norm_sig.name | Esse campo determina o tipo de evento com base no valor. | |
data.PID | target.process.pid | O valor é retirado 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 do UDM com base no valor: BAIXO (1 a 32), MÉDIO (33 a 65) e ALTO (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 é retirado 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 é 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 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 é retirado 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 é retirado do campo "dst" no payload JSON analisado. |
dpt | target.port | O valor é retirado do campo "dpt" no payload JSON analisado e convertido em um 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 é extraído do campo "externalId" no payload JSON analisado. |
nome do host | principal.hostname | O valor é retirado do campo "hostname" extraído pelo padrão grok. |
log_category | metadata.log_type | O valor é extraído do campo "log_category" extraído pelo padrão grok. |
log_type | metadata.product_event_type | O valor é extraído do campo "log_type" extraído pelo padrão grok. |
mensagem | Esse campo é analisado para extrair vários campos, dependendo da categoria de registro. | |
nitroURL | Esse campo não é mapeado para o objeto IDM no UDM. | |
pid | principal.process.pid | O valor é extraído do campo "pid" 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 é extraído 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 é extraído do campo "sntdom" no payload JSON analisado. |
spt | principal.port | O valor é retirado do campo "spt" no payload JSON analisado e convertido em um 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 um carimbo de data/hora. |
tipo | metadata.product_event_type | O valor é extraído do campo "type" extraído pelo filtro kv. |
uid | principal.user.userid | O valor é extraído do campo "uid" extraído 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 "E-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 sucesso", o tipo de evento será definido como "USER_LOGIN". - Se o nome do evento contiver "Status de inicialização para objetos de serviço", 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 será definido como "INBOUND" se o campo "deviceDirection" no payload JSON analisado for 0. Caso contrário, será definido como "SAÍDA". |
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. |
Alterações
2024-03-21
- Parser recém-criado.