Collecter les journaux Vectra Detect
Ce document explique comment ingérer des journaux Vectra Detect dans Google Security Operations à l'aide de Bindplane. L'analyseur transforme les journaux aux formats SYSLOG, JSON et CEF en un modèle de données unifié (UDM). Il normalise d'abord les données en supprimant les caractères et les champs inutiles, puis utilise des modèles grok pour extraire les informations de différents formats de journaux. Enfin, il mappe les champs extraits aux attributs UDM correspondants.
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 de pare-feu sont ouverts conformément aux exigences de l'agent BindPlane.
- Accès privilégié à l'interface utilisateur Vectra
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
Autres ressources d'installation
- 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. Il se trouve généralement 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: 'VECTRA_DETECT' 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.jsonen 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-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 Vectra Detect pour envoyer des journaux Syslog
- Connectez-vous à l'interface utilisateur de Vectra Detect.
- Accédez à Paramètres> Notifications.
- Accédez à la section Syslog.
- Cliquez sur Modifier pour ajouter ou modifier la configuration Syslog.
- Destination : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane.
- Protocole : sélectionnez UDP ou TCP en fonction de la configuration réelle de votre agent Bindplane.
- Format : sélectionnez JSON.
- Types de journaux : sélectionnez les journaux que vous souhaitez envoyer à Google SecOps.
- Cochez la case Inclure les informations détaillées.
- Sur la droite, vous pouvez voir trois boutons bascule pour une configuration supplémentaire :
- Inclure les détections triées : lorsque cette option est désactivée, les messages syslog ne sont pas envoyés lorsque des détections triées sont créées ou mises à jour.
- Inclure les détections dans la catégorie "Info" : lorsque cette option est désactivée, les messages syslog ne sont pas envoyés lorsque des détections de la catégorie "Info" sont créées ou mises à jour.
- Inclure les baisses de score de l'hôte/du compte : lorsque cette option est désactivée, les messages syslog ne sont pas envoyés lorsque les scores de menace et de certitude diminuent et/ou restent les mêmes.
- Cliquez sur Enregistrer.
- Cliquez sur Tester pour tester la configuration.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| action | read_only_udm.security_result.action | Valeur extraite du champ "action" si [result] est défini sur "true" ou "failure" dans les événements d'audit. |
| category | read_only_udm.security_result.category_details | Valeur extraite du champ "category" (catégorie). |
| certitude | read_only_udm.security_result.confidence | Si [certainty] est compris entre 0 et 35, définissez la valeur sur "LOW_CONFIDENCE". Si [certainty] est compris entre 35 et 70, définissez la valeur sur "MEDIUM_CONFIDENCE". Si [certainty] est compris entre 70 et 100, définissez la valeur sur "HIGH_CONFIDENCE". |
| dd_bytes_rcvd | read_only_udm.network.received_bytes | Valeur extraite du champ "dd_bytes_rcvd". |
| dd_bytes_sent | read_only_udm.network.sent_bytes | Valeur extraite du champ "dd_bytes_sent". |
| dd_dst_dns | read_only_udm.target.hostname | Valeur extraite du champ "dd_dst_dns". |
| dd_dst_dns | read_only_udm.target.asset.hostname | Valeur extraite du champ "dd_dst_dns". |
| dd_dst_ip | read_only_udm.target.asset.ip | Valeur extraite du champ "dd_dst_ip". |
| dd_dst_ip | read_only_udm.target.ip | Valeur extraite du champ "dd_dst_ip". |
| dd_dst_port | read_only_udm.target.port | Valeur extraite du champ "dd_dst_port". |
| detection_id | read_only_udm.metadata.product_log_id | Valeur extraite du champ "detection_id". |
| detection_profile.name | read_only_udm.security_result.detection_fields | La clé est "detection_profile name", et la valeur est extraite du champ "detection_profile.name". |
| detection_profile.scoringDetections | read_only_udm.security_result.detection_fields | La clé est "detectionprofile scoringDetections{index}", et la valeur est extraite de chaque élément du tableau "detection_profile.scoringDetections". |
| detection_profile.vname | read_only_udm.security_result.detection_fields | La clé est "detection_profile vname", et la valeur est extraite du champ "detection_profile.vname". |
| dest_ip | read_only_udm.target.asset.ip | Valeur extraite du champ "dest_ip" dans les événements de campagne. |
| dest_ip | read_only_udm.target.ip | Valeur extraite du champ "dest_ip" dans les événements de campagne. |
| dest_name | read_only_udm.target.asset.hostname | Valeur extraite du champ "dest_name" dans les événements de campagne. |
| dest_name | read_only_udm.target.hostname | Valeur extraite du champ "dest_name" dans les événements de campagne. |
| d_type | read_only_udm.additional.fields | La clé est "d_type" et la valeur est extraite du champ "d_type". |
| d_type_vname | read_only_udm.additional.fields | La clé est "d_type_vname", et la valeur est extraite du champ "d_type_vname". |
| dvchost | read_only_udm.observer.hostname | Valeur extraite du champ "dvchost". |
| dvchost | read_only_udm.principal.asset.hostname | Valeur extraite du champ "dvchost" si [host_name] est vide dans les événements HOST. |
| dvchost | read_only_udm.principal.hostname | Valeur extraite du champ "dvchost" si [host_name] est vide dans les événements HOST. |
| headend_addr | read_only_udm.observer.ip | Valeur extraite du champ "headend_addr". |
| headend_addr | read_only_udm.principal.asset.ip | Valeur extraite du champ "headend_addr" si [host_ip] est vide dans les événements de détection. |
| headend_addr | read_only_udm.principal.ip | Valeur extraite du champ "headend_addr" si [host_ip] est vide dans les événements de détection. |
| href | read_only_udm.target.url | Valeur extraite du champ "href". |
| host_id | read_only_udm.target.asset_id | La valeur est "VectraAI.DETECT:{host_id}" dans les événements HOST. |
| host_ip | read_only_udm.principal.asset.ip | Valeur extraite du champ "host_ip" dans les événements HOST et Detections. |
| host_ip | read_only_udm.principal.ip | Valeur extraite du champ "host_ip" dans les événements HOST et Detections. |
| host_name | read_only_udm.principal.asset.hostname | Valeur extraite du champ "host_name". |
| host_name | read_only_udm.principal.hostname | Valeur extraite du champ "host_name". |
| msg_data | read_only_udm.security_result.summary | Valeur extraite du champ "msg_data" dans les événements d'audit et d'état. |
| quadrant | read_only_udm.security_result.priority_details | Valeur extraite du champ "quadrant". |
| résultat | read_only_udm.security_result.action | Si [result] est "true", définissez la valeur sur "ALLOW". Si [result] est défini sur "failure", définissez "BLOCK" dans les événements d'audit. |
| résultat | read_only_udm.security_result.detection_fields | La clé est "result" et la valeur est extraite du champ "result" dans les événements d'audit et d'état. |
| rôle | read_only_udm.target.user.attribute.roles.name | Valeur extraite du champ "role" dans les événements d'audit. |
| de gravité, | read_only_udm.security_result.severity | Si [threat] est compris entre 0 et 20, définissez la valeur sur "INFORMATIONAL". Si [menace] est compris entre 20 et 40, définissez la valeur sur "LOW" (FAIBLE). Si [threat] est compris entre 40 et 60, définissez la valeur sur "MEDIUM". Si [threat] est compris entre 60 et 80, définissez la valeur sur "HIGH" (ÉLEVÉ). Si [threat] est compris entre 80 et 100, définissez la valeur sur "CRITICAL". |
| de gravité, | read_only_udm.security_result.severity_details | Valeur extraite du champ "severity" (gravité). |
| source_ip | read_only_udm.principal.asset.ip | Valeur extraite du champ "source_ip" dans les événements d'audit et d'état. |
| source_ip | read_only_udm.principal.ip | Valeur extraite du champ "source_ip" dans les événements d'audit et d'état. |
| src | read_only_udm.principal.asset.ip | Valeur extraite du champ "src" dans les événements CEF. |
| src | read_only_udm.principal.ip | Valeur extraite du champ "src" dans les événements CEF. |
| src_ip | read_only_udm.principal.asset.ip | Valeur extraite du champ "src_ip" dans les événements de campagne. |
| src_ip | read_only_udm.principal.ip | Valeur extraite du champ "src_ip" dans les événements de campagne. |
| src_name | read_only_udm.principal.asset.hostname | Valeur extraite du champ "src_name" si [host_name] et [dvchost] sont vides. |
| src_name | read_only_udm.principal.hostname | Valeur extraite du champ "src_name" si [host_name] et [dvchost] sont vides. |
| menace | read_only_udm.security_result.severity | Si [threat] est compris entre 0 et 20, définissez la valeur sur "INFORMATIONAL". Si [menace] est compris entre 20 et 40, définissez la valeur sur "LOW" (FAIBLE). Si [threat] est compris entre 40 et 60, définissez la valeur sur "MEDIUM". Si [threat] est compris entre 60 et 80, définissez la valeur sur "HIGH" (ÉLEVÉ). Si [threat] est compris entre 80 et 100, définissez la valeur sur "CRITICAL". |
| triaged | read_only_udm.additional.fields | La clé est "triaged" et la valeur est extraite du champ "triaged". |
| type | read_only_udm.metadata.product_event_type | Valeur extraite du champ "type" dans les événements de santé. |
| utilisateur | read_only_udm.target.user.userid | Valeur extraite du champ "user" dans les événements d'audit. |
| vectra_timestamp | read_only_udm.metadata.event_timestamp | Valeur extraite du champ "vectra_timestamp". |
| version | read_only_udm.metadata.product_version | Valeur extraite du champ "version". |
| read_only_udm.metadata.event_type | Définissez la valeur sur "USER_LOGIN" si [msg_data] contient "se connecter" et que [user] n'est pas vide dans les événements d'audit. | |
| read_only_udm.metadata.event_type | Définissez la valeur sur "SCAN_HOST" dans les événements HOST. | |
| read_only_udm.metadata.event_type | Définissez sur "NETWORK_HTTP" si [host_ip] n'est pas vide, [principal_present] est défini sur "true" et [target_present] est défini sur "true" dans les événements de détection. | |
| read_only_udm.metadata.event_type | Définissez sur "STATUS_UPDATE" si [principal_present] est défini sur "true" dans les événements de détection. | |
| read_only_udm.metadata.event_type | Définissez la valeur sur "NETWORK_CONNECTION" si [principal_present] et [target_present] sont définis sur "true" dans les événements de détection. | |
| read_only_udm.metadata.event_type | Définissez sur "NETWORK_CONNECTION" si [event_type] est "GENERIC_EVENT", [principal_present] est "true" et [target_present] est "true". | |
| read_only_udm.metadata.event_type | Définissez sur "STATUS_UPDATE" si [event_type] est "GENERIC_EVENT" et [principal_present] est défini sur "true". | |
| read_only_udm.metadata.log_type | Défini sur "VECTRA_DETECT". | |
| read_only_udm.metadata.vendor_name | Définissez-le sur "Vectra.AI". | |
| read_only_udm.metadata.product_name | Définissez la valeur sur "DETECT". | |
| read_only_udm.network.application_protocol | Définissez-le sur "HTTP" si [dd_dst_port] est défini sur 80. | |
| read_only_udm.network.application_protocol | Définissez la valeur sur "HTTPS" si [dd_dst_port] est défini sur 443. | |
| read_only_udm.network.application_protocol | Défini sur "UNKNOWN_APPLICATION_PROTOCOL" si [principal_present] et [target_present] sont définis sur "true" dans les événements de détection. | |
| read_only_udm.network.http.method | Défini sur "METHOD_OTHER". | |
| read_only_udm.extensions.auth.type | Définissez la valeur sur "AUTHTYPE_UNSPECIFIED" si [msg_data] contient "se connecter" dans les événements d'audit. | |
| is_alert | Définissez sur "true" si [triaged] est défini sur "true". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.