Collecter les journaux McAfee Firewall Enterprise

Compatible avec:

Ce document explique comment collecter les journaux McAfee Firewall Enterprise. Le code de l'analyseur extrait d'abord les champs à l'aide d'une série de modèles Grok, en traitant les formats SYSLOG et JSON. Ensuite, en fonction de la catégorie de journaux identifiée, il applique des modèles Grok et des extractions clé-valeur spécifiques pour mapper les données dans le schéma UDM de Google Security Operations.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec systemd.
  • Si vous exécutez l'application derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Assurez-vous de disposer d'un accès privilégié à McAfee ESM.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel BindPlane sera installé.

Obtenir le numéro client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Profil.
  3. Copiez et sauvegardez l'ID client dans la section Détails de l'organisation.

Installer l'agent BindPlane

Installation de Windows

  1. Ouvrez l'invite de commande ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

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

Installation de Linux

  1. Ouvrez un terminal avec des droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Autres ressources d'installation

Configurer l'agent BindPlane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration:

    • Recherchez le fichier config.yaml. En règle générale, il se trouve dans le répertoire /etc/bindplane-agent/ sous Linux ou dans le répertoire d'installation sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (nano, vi ou Bloc-notes, par exemple).
  2. Modifiez le fichier config.yaml comme suit :

    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. Remplacez le port et l'adresse IP dans votre infrastructure si nécessaire.

  4. Remplacez <customer_id> par le numéro client réel.

  5. Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification d'ingestion Google SecOps.

Redémarrez l'agent BindPlane pour appliquer les modifications

  • Sous Linux, pour redémarrer l'agent BindPlane, exécutez la commande suivante:

    sudo systemctl restart bindplane-agent
    
  • Sous Windows, pour redémarrer l'agent BindPlane, vous pouvez utiliser la console Services ou saisir la commande suivante:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer McAfee ESM pour transférer les journaux syslog

  1. Connectez-vous à la console McAfee ESM.
  2. Accédez à Propriétés système > Transfert d'événements.
  3. Cliquez sur Ajouter pour créer une règle de transfert syslog.
  4. Configurez les paramètres suivants :
    • Nom: saisissez un nom descriptif (par exemple, "Transfert Google SecOps").
    • Adresse IP de destination: saisissez l'adresse IP de votre serveur Syslog (ou de votre agent BindPlane).
    • Port de destination: utilisez 514 pour UDP (vous pouvez spécifier un autre port, en fonction de la configuration de votre serveur Syslog/Bindplane).
    • Protocole: sélectionnez UDP (les autres options sont TCP ou TLS, en fonction de la configuration de votre serveur Syslog/Bindplane).
    • Format: choisissez CEF (Common Event Format) ou ASCII (format recommandé pour les journaux McAfee).
    • Filtres: définissez les types d'événements que vous souhaitez transférer, par exemple les journaux du pare-feu, les événements d'authentification ou les détections de menaces.
  5. Cliquez sur Enregistrer.
  6. Redémarrez le service McAfee ESM pour que les modifications prennent effet.

Tableau de mappage UDM

Champ du journal Mappage UDM Logique
agir security_result.action_details La valeur est extraite du champ "act" de la charge utile JSON analysée.
cat security_result.category_details La valeur est extraite du champ "cat" de la charge utile JSON analysée.
data.AppID target.application La valeur est extraite du champ "AppID" de la charge utile JSON analysée.
data.Destination_Hostname target.hostname La valeur est extraite du champ "Destination_Hostname" de la charge utile JSON analysée.
data.Destination_UserID target.user.windows_sid La valeur est extraite du champ "Destination_UserID" de la charge utile JSON analysée.
data.DomainID target.administrative_domain La valeur est extraite du champ "DomainID" de la charge utile JSON analysée.
data.dst_ip target.ip La valeur est extraite du champ "dst_ip" de la charge utile JSON analysée.
data.dst_mac target.mac La valeur est extraite du champ "dst_mac" de la charge utile JSON analysée.
data.dst_port target.port La valeur est extraite du champ "dst_port" de la charge utile JSON analysée et convertie en entier.
data.HostID target.hostname La valeur est extraite du champ "HostID" de la charge utile JSON analysée.
data.norm_sig.name Ce champ détermine le type d'événement en fonction de sa valeur.
data.PID target.process.pid La valeur est extraite du champ "PID" de la charge utile JSON analysée.
data.Process_Name target.process.command_line La valeur est extraite du champ "Process_Name" de la charge utile JSON analysée.
data.severity security_result.severity La valeur est extraite du champ "severity" de la charge utile JSON analysée, convertie en entier et mappée sur un niveau de gravité UDM en fonction de sa valeur: LOW (1 à 32), MEDIUM (33 à 65) ou HIGH (66 à 100).
data.sig.name security_result.description La valeur est extraite du champ "sig.name" de la charge utile JSON analysée.
data.Source_Logon_ID about.labels.value La valeur est extraite du champ "Source_Logon_ID" de la charge utile JSON analysée.
data.Source_UserID principal.user.windows_sid La valeur est extraite du champ "Source_UserID" de la charge utile JSON analysée.
data.src_ip principal.ip La valeur est extraite du champ "src_ip" de la charge utile JSON analysée.
data.src_mac principal.mac La valeur est extraite du champ "src_mac" de la charge utile JSON analysée.
data.src_port principal.port La valeur est extraite du champ "src_port" de la charge utile JSON analysée et convertie en entier.
data.UserIDDst target.user.userid La valeur est extraite du champ "UserIDDst" de la charge utile JSON analysée.
data.UserIDSrc principal.user.userid La valeur est extraite du champ "UserIDSrc" de la charge utile JSON analysée.
deviceExternalId about.asset.asset_id La valeur est extraite du champ "deviceExternalId" de la charge utile JSON analysée et combinée au nom du produit pour créer un ID d'élément unique.
deviceTranslatedAddress about.nat_ip La valeur est extraite du champ "deviceTranslatedAddress" de la charge utile JSON analysée.
dst target.ip La valeur est extraite du champ "dst" de la charge utile JSON analysée.
dpt target.port La valeur est extraite du champ "dpt" de la charge utile JSON analysée et convertie en entier.
eventId additional.fields.value.string_value La valeur est extraite du champ "eventId" de la charge utile JSON analysée.
externalId metadata.product_log_id La valeur est extraite du champ "externalId" de la charge utile JSON analysée.
nom d'hôte principal.hostname La valeur est extraite du champ "hostname" par le format grok.
log_category metadata.log_type La valeur est extraite du champ "log_category" par le format grok.
log_type metadata.product_event_type La valeur est extraite du champ "log_type" par le format grok.
message Ce champ est analysé pour extraire différents champs en fonction de la catégorie de journal.
nitroURL Ce champ n'est pas mappé à l'objet IDM dans le UDM.
pid principal.process.pid La valeur est extraite du champ "pid" par le modèle Grok.
process_id about.process.pid La valeur est extraite du champ "process_id" extrait par le format grok.
proto network.ip_protocol La valeur est extraite du champ "proto" de la charge utile JSON analysée et mappée sur le protocole IP correspondant.
rhost principal.ip La valeur est extraite du champ "rhost" par le format grok et analysée en tant qu'adresse IP.
shost principal.hostname La valeur est extraite du champ "shost" de la charge utile JSON analysée.
sntdom principal.administrative_domain La valeur est extraite du champ "sntdom" de la charge utile JSON analysée.
spt principal.port La valeur est extraite du champ "spt" de la charge utile JSON analysée et convertie en entier.
src principal.ip La valeur est extraite du champ "src" de la charge utile JSON analysée.
temps timestamp La valeur est extraite du champ "time" par le format grok et analysée en tant que code temporel.
type metadata.product_event_type La valeur est extraite du champ "type" par le filtre kv.
uid principal.user.userid La valeur est extraite du champ "uid" par le filtre kv.
metadata.event_type metadata.event_type La valeur est définie en fonction du nom de l'événement et d'autres champs du journal. La logique de détermination du type d'événement est la suivante: - Si le nom de l'événement contient "TCP", le type d'événement est défini sur "NETWORK_CONNECTION". - Si le nom de l'événement contient "Mail", le type d'événement est défini sur "EMAIL_TRANSACTION". - Si le nom de l'événement contient "HTTP" ou "http", le type d'événement est défini sur "NETWORK_HTTP". - Si le nom de l'événement contient "User Accessed" (Accès de l'utilisateur) ou "denied by access-list" (Refusé par la liste d'accès), le type d'événement est défini sur "USER_RESOURCE_ACCESS". - Si le nom de l'événement contient "Source de données inactive", le type d'événement est défini sur "STATUS_UPDATE". - Si le nom de l'événement contient "Comm with snowflex", le type d'événement est défini sur "SERVICE_UNSPECIFIED". - Si le nom de l'événement contient "Un compte a été connecté", le type d'événement est défini sur "USER_LOGIN". - Si le nom de l'événement contient "État d'initialisation des objets de service", le type d'événement est défini sur "GENERIC_EVENT". - Si aucune des conditions ci-dessus n'est remplie, le type d'événement est défini sur "GENERIC_EVENT".
metadata.vendor_name metadata.vendor_name La valeur est définie sur "MCAFEE".
network.direction network.direction La valeur est définie sur "INBOUND" si le champ "deviceDirection" de la charge utile JSON analysée est égal à 0. Sinon, elle est définie sur "OUTBOUND".
security_result.severity security_result.severity La valeur est définie sur "LOW" si le champ "cef_event_severity" de la charge utile JSON analysée est égal à 1, sur "MEDIUM" si elle est égale à 2, sur "HIGH" si elle est égale à 3 et sur "CRITICAL" si elle est égale à 9.

Modifications

2024-03-21

  • Analyseur nouvellement créé.