Collecter les journaux Imperva FlexProtect

Compatible avec :

Ce document explique comment ingérer des journaux Imperva FlexProtect dans Google Security Operations à l'aide de l'agent Bindplane.

L'analyseur extrait les champs des journaux au format syslog Imperva FlexProtect au format CEF (Common Event Format) avec des extensions clé-valeur. Il utilise grok et/ou kv pour analyser le message CEF, puis mappe ces valeurs au modèle de données unifié (UDM). Il définit également des valeurs de métadonnées par défaut pour la source et le type d'événement. Imperva FlexProtect permet un déploiement flexible des solutions de sécurité Imperva (SecureSphere, Cloud WAF, Bot Protection) dans les environnements cloud hybride.

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 du pare-feu sont ouverts conformément aux exigences de l'agent BindPlane.
  • Accès privilégié à la console de gestion Imperva FlexProtect ou aux consoles de produits individuels

Obtenir des identifiants Google SecOps pour l'agent BindPlane

Pour authentifier l'agent Bindplane auprès de Google SecOps, choisissez l'une des méthodes suivantes :

  • Nouveaux déploiements : utilisez l'API Chronicle (option 1).
  • Déploiements existants : continuez à utiliser le fichier d'authentification pour l'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
  1. Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
  2. Accédez à IAM et administration > Comptes de service.
  3. Cliquez sur Créer un compte de service.
  4. Fournissez les informations de configuration suivantes :
    • Nom du compte de service : saisissez un nom pour le compte (par exemple, bindplane-ingest).
    • Description du compte de service : saisissez une description (par exemple, Bindplane agent log ingestion).
  5. Cliquez sur Créer et continuer.
  6. Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
  7. Cliquez sur Continue (Continuer), puis sur Done (OK).
  8. Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
  9. Cliquez sur Ajouter une clé > Créer une clé.
  10. Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
  11. Enregistrez le fichier de clé sous le nom ingestion-auth.json dans le répertoire du collecteur Bindplane (/opt/observiq-otel-collector/ingestion-auth.json sous Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json sous Windows), ou mettez à jour creds_file_path dans config.yaml pour qu'il corresponde au chemin d'accès où vous l'enregistrez.
  12. Accédez à IAM et administration > Paramètres, puis copiez le numéro du projet. Vous en aurez besoin pour la configuration de l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancien)

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion.
  4. Enregistrez le fichier de manière sécurisée sur le système sur lequel l'agent 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 dans la section Détails de 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 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 sous Linux

  1. Ouvrez un terminal avec des privilèges 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

Pour obtenir d'autres options d'installation, consultez le guide d'installation de l'agent Bindplane.

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

  1. Accédez au fichier de configuration :

    • Trouvez le fichier config.yaml. Il se trouve généralement dans le répertoire /opt/observiq-otel-collector/ sous Linux ou dans le répertoire d'installation sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou Notepad).
  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:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        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: chronicle.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_FLEXPROTECT'
        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 <LOCATION> par la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1). L'exportateur ajoute cette valeur en préfixe à chronicle.googleapis.com.
    • Remplacez <PROJECT_NUMBER> par le numéro de projet indiqué dans IAM et administration > Paramètres.
    • Remplacez <CUSTOMER_ID> par le numéro client réel.
    • Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès au fichier de clé du compte de service (option 1) enregistré à l'étape 1.

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par ce qui suit. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification de l'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacez malachiteingestion-pa.googleapis.com par votre point de terminaison régional (par exemple, europe-malachiteingestion-pa.googleapis.com).

    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_FLEXPROTECT'
        raw_log_field: body
        ingestion_labels:
    

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

  1. Pour redémarrer l'agent BindPlane sous Linux, exécutez la commande suivante :

    sudo systemctl restart observiq-otel-collector
    
  2. Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop observiq-otel-collector && net start observiq-otel-collector
    

Configurer le transfert Syslog sur Imperva FlexProtect

Pour le composant SecureSphere (sur site/cloud)

  1. Connectez-vous à la console de gestion Imperva SecureSphere.
  2. Accédez à Configuration > Ensembles d'actions.
  3. Cliquez sur Ajouter pour créer un ensemble d'actions.
  4. Cliquez sur Ajouter une action et fournissez les informations de configuration suivantes :

    • Nom : saisissez un nom descriptif (par exemple, Google SecOps Syslog).
    • Type d'action : sélectionnez Syslog.
    • Hôte : saisissez l'adresse IP de l'agent Bindplane.
    • Port : saisissez le numéro de port de l'agent Bindplane (514 par défaut).
    • Protocole : sélectionnez UDP ou TCP.
    • Niveau de journalisation Syslog : sélectionnez DEBUG.
    • Fonctionnalité Syslog : sélectionnez LOCAL0.
    • Format : sélectionnez CEF (Common Event Format).
  5. Enregistrez la configuration de l'action et appliquez-la aux règles de sécurité concernées.

Pour le composant Cloud WAF/Incapsula

  1. Connectez-vous à la console Imperva Cloud.
  2. Accédez à Journaux > Configuration des journaux.
  3. Configurez la destination syslog :
    • Hôte : saisissez l'adresse IP de l'agent BindPlane.
    • Port : saisissez le numéro de port de l'agent Bindplane (514 par défaut).
    • Protocole : sélectionnez UDP ou TCP.
    • Format : sélectionnez CEF.

Table de mappage UDM

Champ du journal Mappage UDM Logique
agir read_only_udm.security_result.action_details Mappé directement à partir du champ act.
application read_only_udm.network.application_protocol Mappé directement à partir du champ app.
ccode read_only_udm.principal.location.country_or_region Mappé directement à partir du champ ccode.
cicode read_only_udm.principal.location.city Mappé directement à partir du champ cicode.
cn1 read_only_udm.network.http.response_code Mappé directement à partir du champ cn1 après conversion en entier.
cs1 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs1.
cs2 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs2.
cs3 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs3.
cs4 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs4.
cs5 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs5.
cs6 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs6.
cs7 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs7.
cs8 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs8.
cs9 read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ cs9.
cpt read_only_udm.principal.port Directement mappé à partir du champ cpt après conversion en entier.
Client read_only_udm.principal.user.user_display_name Mappé directement à partir du champ Customer.
deviceExternalId read_only_udm.about.asset.asset_id La valeur est obtenue en concaténant "Incapsula.SIEMintegration:" avec le champ deviceExternalId.
deviceFacility read_only_udm.principal.location.city Mappé directement à partir du champ deviceFacility.
dproc read_only_udm.target.process.command_line Mappé directement à partir du champ dproc.
end read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ end.
fileId read_only_udm.network.session_id Mappé directement à partir du champ fileId.
filePermission read_only_udm.about.resource.attribute.permissions.name Mappé directement à partir du champ filePermission.
dans read_only_udm.network.received_bytes Mappé directement à partir du champ in.
qstr read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ qstr.
request read_only_udm.target.url Mappé directement à partir du champ request.
requestClientApplication read_only_udm.network.http.user_agent Mappé directement à partir du champ requestClientApplication.
requestMethod read_only_udm.network.http.method Mappé directement à partir du champ requestMethod.
siteid read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ siteid.
sip read_only_udm.target.ip Mappé directement à partir du champ sip.
sourceServiceName read_only_udm.principal.application Mappé directement à partir du champ sourceServiceName.
spt read_only_udm.target.port Mappé directement à partir du champ spt après conversion en entier.
src read_only_udm.principal.ip Mappé directement à partir du champ src.
start read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ start.
suid read_only_udm.principal.user.userid Mappé directement à partir du champ suid.
ver read_only_udm.network.tls.version Mappé directement à partir du champ ver.
read_only_udm.about.asset.asset_id La valeur est obtenue en concaténant "Incapsula.SIEMintegration:" avec le champ deviceExternalId.
read_only_udm.additional.fields.key La valeur est déterminée par la logique de l'analyseur en fonction du libellé du champ. Par exemple :
- cs1Label correspond à "Cap Support"
- cs2Label correspond à "Javascript Support"
- cs3Label correspond à "CO Support"
- cs4Label correspond à "VID"
- cs5Label correspond à "clappsig"
- cs6Label correspond à "clapp"
- cs7Label correspond à "latitude"
- cs8Label correspond à "longitude"
- cs9Label correspond à "Rule name"
read_only_udm.metadata.event_timestamp.nanos Mappé directement à partir du champ collection_time.nanos.
read_only_udm.metadata.event_timestamp.seconds Mappé directement à partir du champ collection_time.seconds.
read_only_udm.metadata.event_type La valeur est déterminée en fonction de la présence des champs src et sip :
- Si les deux sont présents, la valeur est définie sur "NETWORK_HTTP".
 : si seul src est présent, la valeur est définie sur "USER_UNCATEGORIZED".
 : sinon, la valeur est définie sur "GENERIC_EVENT".
read_only_udm.metadata.product_event_type La valeur est obtenue en concaténant "[", la valeur numérique du champ d'en-tête CEF à l'index 4, "] - " et la description textuelle du champ d'en-tête CEF à l'index 4.
read_only_udm.metadata.product_name La valeur est définie de manière statique sur "SIEMintegration".
read_only_udm.metadata.product_version La valeur est définie de manière statique sur "1".
read_only_udm.metadata.vendor_name La valeur est définie de manière statique sur "Incapsula".
read_only_udm.security_result.detection_fields.key La valeur est définie de manière statique sur "siteid", "event_start_time", "event_end_time" ou "qstr" en fonction du champ correspondant en cours de traitement.
read_only_udm.security_result.severity La valeur est définie de manière statique sur "LOW" (FAIBLE).
read_only_udm.target.port Mappé directement à partir du champ spt après conversion en entier.
qstr security_results.detection_fields Mappé à partir du journal des modifications
siteid security_results.detection_fields Mappé à partir du journal des modifications
device_facility principal.location.city Mappé à partir du journal des modifications
start security_result.detection_fields.event_start_time Mappé à partir du journal des modifications
cs8Label additional_cs8.key Mappé à partir du journal des modifications
cs8 additional_cs8.value.string_value Mappé à partir du journal des modifications
cs9Label additional_cs9.key Mappé à partir du journal des modifications
cs9 additional_cs9.value.string_value Mappé à partir du journal des modifications
end security_result.detection_fields.event_end_time Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications de ce parseur

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