Collecter les journaux Imperva FlexProtect

Compatible avec :

Ce document explique comment ingérer les journaux Imperva FlexProtect dans Google Security Operations à l'aide de Bindplane. L'analyseur nettoie et prétraite d'abord les journaux entrants, puis tente d'extraire les données au format CEF (Common Event Format). En fonction de la présence de champs spécifiques tels que "src" et "sip", il attribue un type d'événement UDM et mappe les champs CEF pertinents au schéma UDM, puis enrichit la sortie avec des champs personnalisés supplémentaires. Imperva FlexProtect permet de déployer de manière flexible les solutions de sécurité Imperva (SecureSphere, Cloud WAF, Bot Protection) dans des environnements cloud hybride.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows 2016 ou version ultérieure, ou un hôte 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 Imperva FlexProtect ou aux consoles de produits individuels

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

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
    

Ressources d'installation supplémentaires

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

  1. Accédez au fichier de configuration :

    1. Trouvez 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.
    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_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 <customer_id> par le numéro client réel.
    • Mettez à jour /path/to/ingestion-authentication-file.json avec 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 le transfert Syslog sur Imperva FlexProtect

Pour le composant SecureSphere (sur site/dans le 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.
    • Installation 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 de 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 Mappé directement à 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 à "Nom de la règle"
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".
read_only_udm.target.port Mappé directement à partir du champ spt après conversion en entier.

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