Collecter les journaux FireEye HX
Ce document explique comment collecter les journaux FireEye Endpoint Security (HX) dans Google Security Operations à l'aide de Bindplane. L'analyseur tente de traiter le message d'entrée au format JSON. Si le message n'est pas au format JSON, il utilise des modèles Grok pour extraire les champs, puis effectue un mappage UDM conditionnel en fonction du type d'événement extrait et d'autres critères.
Avant de commencer
- Assurez-vous de disposer d'une instance Google Security Operations.
- Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec
systemd
. - Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Assurez-vous de disposer d'un accès privilégié à FireEye Endpoint Security.
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 :
- 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: '/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 ingestion_labels: log_type: 'FIREEYE_HX' raw_log_field: body 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 le syslog FireEye HX Event Streamer à l'aide de l'UI
- Connectez-vous à la console de gestion FireEye HX.
- Accédez à Event Streamer.
- Sélectionnez Activer Event Streamer sur l'hôte.
- Enregistrez les modifications apportées au règlement.
- Accédez à Destinations > Paramètres du serveur > Ajouter une destination syslog.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez un nom unique pour identifier le collecteur de journaux Google SecOps.
- Adresse IP : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane.
- Enregistrez les modifications pour les appliquer.
Configurer le syslog FireEye HX Event Streamer à l'aide de la CLI
- Connectez-vous à l'appliance FireEye HX à l'aide de l'interface de ligne de commande (CLI).
Exécutez la commande suivante pour activer le mode configuration :
enable configure terminal
Exécutez la commande suivante pour ajouter une destination de serveur syslog distant :
logging BINDPLANE_IP_ADDRESS port PORT_NUMBER port
- Remplacez l'élément suivant :
BINDPLANE_IP_ADDRESS
: adresse IP du redirecteur Google SecOpsPORT_NUMBER
: numéro de port.
- Remplacez l'élément suivant :
Exécutez la commande suivante pour enregistrer les informations de configuration :
write mem
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
alert.agent._id | principal.asset.asset_id | ID de l'agent provenant du journal brut, précédé de AGENT ID: |
alert.agent.url | principal.labels.value | URL de l'agent à partir du journal brut. |
alert.condition._id | additional.fields.value.string_value | ID de la condition du journal brut, sans les caractères = . |
alert.condition.url | additional.fields.value.string_value | URL de la condition extraite du journal brut, avec = caractères supprimés. |
alert.decorators[].data.fireeye_report.indicator_verdict.malware_families.0 | security_result.threat_name | Famille de logiciels malveillants du rapport FireEye dans le champ "decorators" du journal brut. |
alert.decorators[].data.fireeye_report.risk_summary | security_result.description | Résumé des risques du rapport FireEye dans le champ "decorators" du journal brut. |
alert.decorators[].data.fireeye_verdict | security_result.severity_details | Verdict FireEye du champ des décorateurs du journal brut. |
alert.event_at | read_only_udm.metadata.event_timestamp | Code temporel de l'événement à partir du journal brut. |
alert.event_id | read_only_udm.metadata.product_log_id | ID de l'événement provenant du journal brut. |
alert.event_type | read_only_udm.metadata.product_event_type | Type d'événement du journal brut. |
alert.event_values.fileWriteEvent/fullPath | target.file.full_path | Chemin d'accès complet du fichier écrit à partir du journal brut. |
alert.event_values.fileWriteEvent/md5 | target.file.md5 | Hachage MD5 du fichier écrit à partir du journal brut. |
alert.event_values.fileWriteEvent/pid | principal.process.pid | ID du processus qui a écrit le fichier à partir du journal brut. |
alert.event_values.fileWriteEvent/processPath | principal.process.file.full_path | Chemin d'accès au processus qui a écrit le fichier à partir du journal brut. Combiné à alert.event_values.fileWriteEvent/process pour créer le chemin d'accès complet si l'OS est Windows. |
alert.event_values.fileWriteEvent/size | target.file.size | Taille du fichier écrit à partir du journal brut. |
alert.event_values.fileWriteEvent/username | principal.user.userid | Utilisateur qui a écrit le fichier à partir du journal brut. |
alert.event_values.ipv4NetworkEvent/localIP | principal.ip | Adresse IP locale extraite du journal brut. |
alert.event_values.ipv4NetworkEvent/localPort | principal.port | Port local du journal brut. |
alert.event_values.ipv4NetworkEvent/pid | principal.process.pid | ID du processus à partir du journal brut. |
alert.event_values.ipv4NetworkEvent/process | principal.process.file.full_path | Nom du processus à partir du journal brut. Combiné à alert.event_values.ipv4NetworkEvent/processPath pour créer le chemin d'accès complet si l'OS est Windows. |
alert.event_values.ipv4NetworkEvent/processPath | principal.process.file.full_path | Chemin d'accès au processus à partir du journal brut. Combiné à alert.event_values.ipv4NetworkEvent/process pour créer le chemin d'accès complet si l'OS est Windows. |
alert.event_values.ipv4NetworkEvent/protocol | network.ip_protocol | Protocole réseau du journal brut. |
alert.event_values.ipv4NetworkEvent/remoteIP | target.ip | Adresse IP distante du journal brut. |
alert.event_values.ipv4NetworkEvent/remotePort | target.port | Port distant du journal brut. |
alert.event_values.ipv4NetworkEvent/timestamp | read_only_udm.metadata.event_timestamp | Code temporel de l'événement à partir du journal brut. |
alert.event_values.ipv4NetworkEvent/username | principal.user.userid | Utilisateur du journal brut. |
alert.event_values.processEvent/md5 | target.process.file.md5 | Hachage MD5 du processus à partir du journal brut. |
alert.event_values.processEvent/parentPid | principal.process.pid | ID du processus parent à partir du journal brut. |
alert.event_values.processEvent/parentProcess | principal.process.file.full_path | Nom du processus parent à partir du journal brut. |
alert.event_values.processEvent/parentProcessPath | principal.process.file.full_path | Chemin du processus parent à partir du journal brut. |
alert.event_values.processEvent/pid | target.process.pid | ID du processus à partir du journal brut. |
alert.event_values.processEvent/process | target.process.file.full_path | Nom du processus à partir du journal brut. |
alert.event_values.processEvent/processCmdLine | target.process.command_line | Ligne de commande du processus à partir du journal brut. |
alert.event_values.processEvent/processPath | target.process.file.full_path | Chemin d'accès au processus à partir du journal brut. |
alert.event_values.processEvent/timestamp | read_only_udm.metadata.event_timestamp | Code temporel de l'événement à partir du journal brut. |
alert.event_values.processEvent/username | principal.user.userid | Utilisateur du journal brut. |
alert.event_values.urlMonitorEvent/hostname | target.hostname | Nom d'hôte du journal brut. |
alert.event_values.urlMonitorEvent/localPort | principal.port | Port local du journal brut. |
alert.event_values.urlMonitorEvent/pid | principal.process.pid | ID du processus à partir du journal brut. |
alert.event_values.urlMonitorEvent/process | principal.process.file.full_path | Nom du processus à partir du journal brut. Combiné à alert.event_values.urlMonitorEvent/processPath pour créer le chemin d'accès complet si l'OS est Windows. |
alert.event_values.urlMonitorEvent/processPath | principal.process.file.full_path | Chemin d'accès au processus à partir du journal brut. Combiné à alert.event_values.urlMonitorEvent/process pour créer le chemin d'accès complet si l'OS est Windows. |
alert.event_values.urlMonitorEvent/remoteIpAddress | target.ip | Adresse IP distante du journal brut. |
alert.event_values.urlMonitorEvent/remotePort | target.port | Port distant du journal brut. |
alert.event_values.urlMonitorEvent/requestUrl | target.url | URL demandée à partir du journal brut. |
alert.event_values.urlMonitorEvent/timestamp | read_only_udm.metadata.event_timestamp | Code temporel de l'événement à partir du journal brut. |
alert.event_values.urlMonitorEvent/urlMethod | network.http.method | Méthode HTTP du journal brut. |
alert.event_values.urlMonitorEvent/userAgent | network.http.user_agent | User-agent du journal brut. |
alert.event_values.urlMonitorEvent/username | principal.user.userid | Utilisateur du journal brut. |
alert.indicator._id | security_result.about.labels.value | ID de l'indicateur du journal brut. |
alert.indicator.name | read_only_udm.security_result.summary | Nom de l'indicateur dans le journal brut. |
alert.indicator.url | security_result.about.labels.value | URL de l'indicateur à partir du journal brut. |
alert.multiple_match | read_only_udm.metadata.description | Message de correspondance multiple du journal brut. |
alert.source | additional.fields.value.string_value | Source de l'alerte à partir du journal brut. |
authmethod | extensions.auth.mechanism | Méthode d'authentification à partir du journal brut. Définissez la valeur sur LOCAL si elle est égale à local ou LOCAL , sinon définissez-la sur MECHANISM_OTHER . |
authsubmethod | extensions.auth.auth_details | Sous-méthode d'authentification du journal brut, convertie en majuscules. |
Client | principal.ip | Adresse IP du client à partir du journal brut. |
conditions.data.tests[].token | security_result.detection_fields.key | Jeton issu des tests de conditions dans le journal brut. |
conditions.data.tests[].value | security_result.detection_fields.value | La valeur des tests de conditions dans le journal brut. |
description | read_only_udm.metadata.description | Description issue du journal brut. |
host.agent_version | read_only_udm.metadata.product_version | Version de l'agent à partir du journal brut. |
host.containment_state | read_only_udm.principal.containment_state | État de confinement à partir du journal brut. |
host.domain | read_only_udm.principal.administrative_domain | Domaine du journal brut. |
host.hostname | read_only_udm.principal.hostname | Nom d'hôte du journal brut. |
host.os.platform | read_only_udm.principal.platform | Plate-forme du système d'exploitation à partir du journal brut. |
host.os.product_name | read_only_udm.principal.platform_version | Nom du produit du système d'exploitation à partir du journal brut. |
host.primary_ip_address | read_only_udm.principal.ip | Adresse IP principale du journal brut. |
host.primary_mac | read_only_udm.principal.mac | Adresse MAC principale du journal brut, avec les caractères - remplacés par : . |
host_ | principal.hostname | Nom d'hôte du journal brut. |
host_details.data.agent_version | read_only_udm.metadata.product_version | Version de l'agent à partir du journal brut. |
host_details.data.containment_state | read_only_udm.security_result.severity_details | État de confinement à partir du journal brut. |
host_details.data.domain | read_only_udm.principal.administrative_domain | Domaine du journal brut. |
host_details.data.hostname | read_only_udm.principal.hostname | Nom d'hôte du journal brut. |
host_details.data.os.platform | read_only_udm.principal.platform | Plate-forme du système d'exploitation à partir du journal brut. |
host_details.data.os.product_name | read_only_udm.principal.platform_version | Nom du produit du système d'exploitation à partir du journal brut. |
host_details.data.primary_ip_address | read_only_udm.principal.ip | Adresse IP principale du journal brut. |
host_details.data.primary_mac | read_only_udm.principal.mac | Adresse MAC principale du journal brut, avec les caractères - remplacés par : . |
indicators.data.description | read_only_udm.metadata.description | Description de l'indicateur à partir du journal brut. |
ligne | target.application | Ligne du journal brut. |
localusername | target.user.user_display_name | Nom d'utilisateur local extrait du journal brut. |
principal_ip | principal.ip | Adresse IP principale du journal brut. |
de diffusion inverse | read_only_udm.principal.application | Nom du processus à partir du journal brut. |
process_id | read_only_udm.principal.process.pid | ID du processus à partir du journal brut. |
referrer | network.http.referral_url | URL de provenance du journal brut. |
remoteaddress | principal.ip | Adresse distante du journal brut. |
request | additional.fields.value.string_value | Requête du journal brut. |
rôle | target.user.role_name | Rôle issu du journal brut. |
serveur | target.resource.attribute.labels.value | Serveur à partir du journal brut. |
sessionID | network.session_id | ID de session du journal brut. |
de gravité, | security_result.severity | Définissez-le sur LOW , MEDIUM ou HIGH en fonction de la gravité du journal brut. |
target_host | read_only_udm.target.hostname | Nom d'hôte cible du journal brut. |
target_ip | target.ip | Adresse IP cible du journal brut. |
target_ip1 | target.ip | Adresse IPv6 cible du journal brut. |
timestamp | timestamp | Code temporel du journal brut. |
en amont | target.url | URL en amont du journal brut. |
nom d'utilisateur | target.user.userid | Nom d'utilisateur extrait du journal brut. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.