Collecter les journaux CEF Imperva

Compatible avec :

Ce document explique comment ingérer des journaux CEF Imperva dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait les journaux au format CEF des messages syslog et les convertit au format UDM. Il gère différents formats de journaux, extrait les paires clé/valeur de la charge utile, effectue des transformations et des enrichissements de données, et mappe les champs extraits aux champs UDM correspondants, y compris les informations sur le réseau, les détails sur les utilisateurs, la géolocalisation et les résultats de sécurité.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Un hôte Windows 2016 ou version ultérieure, ou Linux avec systemd
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès privilégié à la console de gestion ou à l'appliance Imperva

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 l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installer l'agent Bindplane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commandes 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 les 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 :

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

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_CEF'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
    • Remplacez <customer_id> par le numéro client réel.
    • Mettez à jour /path/to/ingestion-authentication-file.json en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer la passerelle Imperva WAF (SecureSphere) pour envoyer le format CEF via syslog

  1. Dans la console MX, créez un ensemble d'actions :

    • Accédez à Règles> Ensembles d'actions.
    • Cliquez sur Nouveau et nommez-le (par exemple, Google SecOps CEF).
  2. Ajoutez l'interface d'action CEF syslog :

    • Dans Interfaces d'action disponibles, ouvrez Journal système et ajoutez une ou plusieurs des options suivantes (si nécessaire) :
      • Consigner un événement de sécurité dans le journal système (syslog) à l'aide de la norme CEF
      • Consigner un événement de sécurité réseau dans le journal système (syslog) à l'aide de la norme CEF
      • Enregistrer un événement système dans le journal système (syslog) à l'aide de la norme CEF
      • Enregistrer un événement de sécurité personnalisé dans le journal système (syslog) à l'aide de la norme CEF
  3. Configurez les paramètres de l'interface Actions :

    • Hôte Syslog : saisissez l'adresse IP de votre agent Bindplane. Pour utiliser un port autre que celui par défaut, ajoutez :PORT (la valeur par défaut est 514 si vous n'en spécifiez pas). Exemple : 10.0.0.10:514.
    • Établissement / Niveau de journalisation : définissez-les en fonction des exigences de votre règlement.
    • Message : conservez les valeurs par défaut du fournisseur pour CEF, sauf si vous disposez d'un mappage personnalisé.
  4. Associez l'ensemble d'actions aux règles :

    • Pour les événements Sécurité / Sécurité réseau : ouvrez les règles concernées et définissez Action suivie sur votre ensemble d'actions.
    • Pour les événements système : créez ou vérifiez une règle Événements système et définissez Action suivie sur votre ensemble d'actions afin que ces événements soient également envoyés via CEF.
  5. Facultatif : Configurez des cibles spécifiques à la passerelle :

    • Si différents groupes de passerelles doivent envoyer des données à différents serveurs Syslog, configurez chaque groupe de passerelles> Enregistreur externe et activez Utiliser la configuration de la passerelle si elle existe dans la règle.

Table de mappage UDM

Champ de journal Mappage UDM Logique
act security_result.action Dérivé. Si act est défini sur "allowed" (autorisé), "alert" (alerte), commence par "REQ_PASSED" ou commence par "REQ_CACHED", alors action est défini sur "ALLOW" (AUTORISER). Si act est défini sur "deny" ou "blocked", ou commence par "REQ_BLOCKED" ou "REQ_CHALLENGE", alors action est défini sur "BLOCK". Si act correspond à l'expression régulière (?i)REQ_BAD, action est défini sur "FAIL". Sinon, action est défini sur "UNKNOWN_ACTION". security_result.action est ensuite défini sur la valeur de action.
act security_result.action_details Dérivé. Une description détaillée est générée en fonction de la valeur de act. Exemples : "REQ_CACHED_FRESH : la réponse a été renvoyée à partir du cache du centre de données", "REQ_BLOCKED : la requête a été bloquée".
app network.application_protocol Mappé directement après avoir été converti en majuscules.
cs1 security_result.detection_fields.value Mappé de manière conditionnelle si cs1 n'est pas vide ou n'est pas défini sur "NA". security_result.detection_fields.key est défini sur la valeur de cs1Label.
cs1Label security_result.detection_fields.key Mappé de manière conditionnelle si cs1 n'est pas vide ou n'est pas défini sur "NA". security_result.detection_fields.value est défini sur la valeur de cs1.
cs2 security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide. security_result.detection_fields.key est défini sur la valeur de cs2Label.
cs2Label security_result.detection_fields.key Mappé de manière conditionnelle si cs2 n'est pas vide. security_result.detection_fields.value est défini sur la valeur de cs2.
cs3 security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide ou si sa valeur n'est pas "-". security_result.detection_fields.key est défini sur la valeur de cs3Label.
cs3Label security_result.detection_fields.key Mappé de manière conditionnelle si cs3 n'est pas vide ou n'est pas "-". security_result.detection_fields.value est défini sur la valeur de cs3.
cs4 security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide. security_result.detection_fields.key est défini sur la valeur de cs4Label.
cs4Label security_result.detection_fields.key Mappé de manière conditionnelle si cs4 n'est pas vide. security_result.detection_fields.value est défini sur la valeur de cs4.
cs5 security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide. security_result.detection_fields.key est défini sur la valeur de cs5Label.
cs5Label security_result.detection_fields.key Mappé de manière conditionnelle si cs5 n'est pas vide. security_result.detection_fields.value est défini sur la valeur de cs5.
cs6 security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide. security_result.detection_fields.key est défini sur la valeur de cs6Label.
cs6Label security_result.detection_fields.key Mappé de manière conditionnelle si cs6 n'est pas vide. security_result.detection_fields.value est défini sur la valeur de cs6.
cs7 principal.location.region_latitude Mappé de manière conditionnelle si cs7Label est "latitude".
cs8 principal.location.region_longitude Mappé de manière conditionnelle si cs8Label est "longitude".
cn1 security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide et si cn1Label n'est pas vide. security_result.detection_fields.key est défini sur la valeur de cn1Label.
cn1Label security_result.detection_fields.key Mappé de manière conditionnelle si cn1 et cn1Label ne sont pas vides. security_result.detection_fields.value est défini sur la valeur de cn1.
fileType security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide. security_result.detection_fields.key est défini sur "fileType".
filePermission security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide. security_result.detection_fields.key est défini sur "filePermission".
request target.url Mappé directement.
requestClientApplication network.http.user_agent Mappé de manière conditionnelle s'il n'est pas vide. Remplace la valeur mappée à partir du champ user_agent extrait des paires clé/valeur requestContext ou requestClientApplication dans la charge utile CEF.
requestMethod network.http.method Mappé directement.
siteid security_result.detection_fields.value Mappé de manière conditionnelle s'il n'est pas vide. security_result.detection_fields.key est défini sur "siteid".
sourceServiceName target.hostname Mappé directement. Remplace la valeur de dhost si elle est présente.
src principal.ip Mappé directement.
start metadata.event_timestamp.seconds Extrait à l'aide d'un modèle Grok et converti en code temporel. Utilisé comme solution de remplacement pour deviceReceiptTime s'il n'est pas présent. Si deviceReceiptTime et start sont vides, l'horodatage du journal est utilisé.
suid principal.user.userid Mappé de manière conditionnelle s'il n'est pas vide.
N/A metadata.event_type Codé en dur sur "NETWORK_HTTP".
N/A metadata.log_type Directement mappé à partir du champ log_type de premier niveau.
N/A metadata.product_event_type Mappé à partir de csv.event_id s'il n'est pas vide.
N/A metadata.product_name Codé en dur sur "Pare-feu d'application Web".
N/A metadata.vendor_name Codé en dur sur "Imperva".

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.