Collecter les journaux Imperva FlexProtect
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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- 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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
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
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
Accédez au fichier de configuration :
- 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. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano,viou le Bloc-notes).
- Trouvez le fichier
Modifiez le fichier
config.yamlcomme 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.jsonavec 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-agentPour 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)
- Connectez-vous à la console de gestion Imperva SecureSphere.
- Accédez à Configuration > Ensembles d'actions.
- Cliquez sur Ajouter pour créer un ensemble d'actions.
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 (
514par 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).
- Nom : saisissez un nom descriptif (par exemple,
Enregistrez la configuration de l'action et appliquez-la aux règles de sécurité concernées.
Pour le composant Cloud WAF/Incapsula
- Connectez-vous à la console Imperva Cloud.
- Accédez à Journaux> Configuration des journaux.
- 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 (
514par 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.