Coletar registros do McAfee Firewall Enterprise

Compatível com:

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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. 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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do BindPlane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. 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

Configurar o agente BindPlane para ingerir o Syslog e enviar ao Google SecOps

  1. 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).
  2. 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
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID de cliente real.

  5. 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

  1. Faça login no console do McAfee ESM.
  2. Acesse Propriedades do sistema > Encaminhamento de eventos.
  3. Clique em Adicionar para criar uma nova regra de encaminhamento de syslog.
  4. 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.
  5. Clique em Salvar.
  6. 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.