Recolha registos do McAfee Firewall Enterprise

Compatível com:

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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte 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 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

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. 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).
  2. 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
    
  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 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

  1. Inicie sessão na consola do McAfee ESM.
  2. Aceda a Propriedades do sistema > Encaminhamento de eventos.
  3. Clique em Adicionar para criar uma nova regra de encaminhamento de syslog.
  4. 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.
  5. Clique em Guardar.
  6. 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.