Collecter les journaux CEF ArcSight
Ce document explique comment ingérer des journaux ArcSight CEF (Common Event Format) dans Google Security Operations à l'aide de Bindplane. L'analyseur transforme les données brutes au format UDM (Unified Data Model) structuré. Il extrait les champs de l'en-tête et des extensions CEF, les mappe aux champs UDM et applique une logique spécifique pour catégoriser les événements tels que les connexions utilisateur, les connexions réseau et les accès aux ressources en fonction des informations extraites.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Un hôte Windows 2016 ou version ultérieure, ou un hôte Linux avec
systemd
- Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
- ArcSight SmartConnector 8.4 (ou version ultérieure) installé sur un hôte ayant accès au réseau de l'agent Bindplane
- Accès privilégié au portail OpenText
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
Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.
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 le guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
- 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 (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
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: 'ARCSIGHT_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
avec le chemin d'accès à l'emplacement 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
Télécharger ArcSight SmartConnector
- Connectez-vous au portail d'assistance OpenText.
- Recherchez et téléchargez le dernier ArcSight SmartConnector pour Linux.
- Exemple de nom de fichier :
ArcSight-Connector-Linux64-8.4.0.8499.0.bin
.
Installer ArcSight SmartConnector
Importez le fichier
.bin
sur le serveur SmartConnector :scp ArcSight-Connector-Linux64-8.4.0.8499.0.bin user@your-smartconnector-host:/tmp
Connectez-vous au serveur SmartConnector à l'aide de SSH et exécutez la commande suivante :
cd /tmp chmod +x ArcSight-Connector-Linux64-8.4.0.8499.0.bin ./ArcSight-Connector-Linux64-8.4.0.8499.0.bin
Suivez le programme d'installation interactif :
- Sélectionnez le répertoire d'installation (par exemple,
/opt/arcsight/connectors/current
). - Acceptez la licence.
- Sélectionnez Installer le connecteur lorsque vous y êtes invité.
- Sélectionnez le répertoire d'installation (par exemple,
Configurer ArcSight SmartConnector pour envoyer le format CEF à Syslog
Dans l'hôte SmartConnector, lancez l'assistant de destination :
cd /opt/arcsight/connectors/current/bin ./arcsight connectors
Dans l'assistant, procédez comme suit :
- Sélectionnez Ajouter une destination.
- Sélectionnez CEF Syslog.
Fournissez les informations de configuration suivantes :
- Hôte/Adresse IP : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de votre agent Bindplane.
- Protocole : sélectionnez UDP.
Terminez la configuration et redémarrez le connecteur :
./arcsight agents
Vérifiez la connectivité (par exemple, recherchez
Successfully connected to syslog: X.X.X.X:514
).tail -f /opt/arcsight/connectors/current/logs/agent.log
Table de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
agir | security_result.action_details | Mappé directement à partir du champ act . |
agt | principal.ip | Mappé directement à partir du champ agt . |
agt | principal.asset.ip | Mappé directement à partir du champ agt . |
application | network.application_protocol | Mappé directement à partir du champ app . |
art | metadata.event_timestamp.seconds | Mappé directement à partir du champ art . |
cs2 | additional.fields.value.string_value | Directement mappé à partir du champ cs2 lorsque cs2Label est défini sur EventlogCategory . |
cs2Label | additional.fields.key | Mappé directement à partir du champ cs2Label lorsque sa valeur est EventlogCategory . |
cs3 | additional.fields.value.string_value | Directement mappé à partir du champ cs3 lorsque cs3Label est défini sur Process ID . |
cs3Label | additional.fields.key | Mappé directement à partir du champ cs3Label lorsque sa valeur est Process ID . |
cs5 | additional.fields.value.string_value | Directement mappé à partir du champ cs5 lorsque cs5Label est défini sur Authentication Package Name . |
cs5Label | additional.fields.key | Mappé directement à partir du champ cs5Label lorsque sa valeur est Authentication Package Name . |
cs6 | additional.fields.value.string_value | Directement mappé à partir du champ cs6 lorsque cs6Label est défini sur Logon GUID . |
cs6Label | additional.fields.key | Mappé directement à partir du champ cs6Label lorsque sa valeur est Logon GUID . |
dhost | about.hostname | Mappé directement à partir du champ dhost . |
dhost | target.hostname | Mappé directement à partir du champ dhost . |
dntdom | about.administrative_domain | Mappé directement à partir du champ dntdom . |
dntdom | target.administrative_domain | Mappé directement à partir du champ dntdom . |
dproc | about.process.command_line | Mappé directement à partir du champ dproc . |
dproc | target.process.command_line | Mappé directement à partir du champ dproc . |
dst | principal.ip | Mappé directement à partir du champ dst . |
dst | principal.asset.ip | Mappé directement à partir du champ dst . |
dst | target.ip | Mappé directement à partir du champ dst . |
duid | target.user.userid | Mappé directement à partir du champ duid . |
duser | target.user.user_display_name | Mappé directement à partir du champ duser . |
dvc | about.ip | Mappé directement à partir du champ dvc . |
dvchost | about.hostname | Mappé directement à partir du champ dvchost . |
eventId | additional.fields.value.string_value | Mappé directement à partir du champ eventId . |
externalId | metadata.product_log_id | Mappé directement à partir du champ externalId . |
fname | additional.fields.value.string_value | Mappé directement à partir du champ fname . |
Message | metadata.description | Mappé directement à partir du champ msg . |
proto | network.ip_protocol | Mappé directement à partir du champ proto . Traduit les noms de protocoles en leurs constantes respectives (par exemple, tcp à TCP ). |
rt | metadata.event_timestamp.seconds | Mappé directement à partir du champ rt . |
shost | about.hostname | Mappé directement à partir du champ shost . |
shost | principal.hostname | Mappé directement à partir du champ shost . |
src | principal.ip | Mappé directement à partir du champ src . |
src | principal.asset.ip | Mappé directement à partir du champ src . |
src | target.ip | Mappé directement à partir du champ src . |
sproc | principal.process.command_line | Mappé directement à partir du champ sproc . |
spt | principal.port | Mappé directement à partir du champ spt . |
spt | target.port | Mappé directement à partir du champ spt . |
additional.EventRecordID | additional.fields.value.string_value | Mappé directement à partir du champ ad.EventRecordID . |
additional.ThreadID | additional.fields.value.string_value | Mappé directement à partir du champ ad.ThreadID . |
additional.Opcode | additional.fields.value.string_value | Mappé directement à partir du champ ad.Opcode . |
additional.ProcessID | additional.fields.value.string_value | Mappé directement à partir du champ ad.ProcessID . |
additional.TargetDomainName | additional.fields.value.string_value | Mappé directement à partir du champ ad.TargetDomainName . |
additional.Version | additional.fields.value.string_value | Mappé directement à partir du champ ad.Version . |
deviceExternalId | about.asset.hardware.serial_number | Mappé directement à partir du champ deviceExternalId . |
deviceInboundInterface | additional.fields.value.string_value | Mappé directement à partir du champ deviceInboundInterface . |
deviceOutboundInterface | additional.fields.value.string_value | Mappé directement à partir du champ deviceOutboundInterface . |
PanOSConfigVersion | security_result.detection_fields.value | Mappé directement à partir du champ PanOSConfigVersion . |
PanOSContentVersion | security_result.detection_fields.value | Mappé directement à partir du champ PanOSContentVersion . |
PanOSDGHierarchyLevel1 | security_result.detection_fields.value | Mappé directement à partir du champ PanOSDGHierarchyLevel1 . |
PanOSDestinationLocation | target.location.country_or_region | Mappé directement à partir du champ PanOSDestinationLocation . |
PanOSRuleUUID | metadata.product_log_id | Mappé directement à partir du champ PanOSRuleUUID . |
PanOSThreatCategory | security_result.category_details | Mappé directement à partir du champ PanOSThreatCategory . |
PanOSThreatID | security_result.threat_id | Mappé directement à partir du champ PanOSThreatID . |
about.asset.asset_id | Généré en concaténant Palo Alto Networks. , le nom du fournisseur (LF ) et le champ deviceExternalId . |
|
extensions.auth.type | Définie sur AUTHTYPE_UNSPECIFIED si le champ event_name contient logged on . |
|
metadata.description | Si le champ description contient by suivi d'une adresse IP, l'adresse IP est extraite et mappée sur principal.ip et principal.asset.ip . |
|
metadata.event_type | Déterminé en fonction d'une série de vérifications conditionnelles sur différents champs, y compris event_name , principal_* , target_* et device_event_class_id . La logique détermine le type d'événement le plus approprié en fonction des informations disponibles. |
|
metadata.log_type | Variable définie sur ARCSIGHT_CEF . |
|
metadata.product_event_type | Généré en concaténant \[ , the device_event_class_id field, \] - et le champ name . |
|
metadata.product_name | Définie sur NGFW si le champ product_name est LF . |
|
principal.asset.ip | Si le champ description contient by suivi d'une adresse IP, l'adresse IP est extraite et mappée sur principal.ip et principal.asset.ip . |
|
principal.ip | Si le champ description contient by suivi d'une adresse IP, l'adresse IP est extraite et mappée sur principal.ip et principal.asset.ip . |
|
security_result.action | Définissez sur ALLOW si le champ act est alert , sinon définissez sur BLOCK . |
|
security_result.severity | Définissez sur HIGH si le champ sev est supérieur ou égal à 7, sinon définissez sur LOW . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.