Collecter les journaux Nutanix Prism
Présentation
Cet analyseur traite les journaux Nutanix Prism, et gère les formats JSON et syslog. Il extrait des champs de différentes structures de journaux, les normalise dans UDM et enrichit les données avec un contexte supplémentaire, comme des informations sur l'utilisateur, des détails sur le réseau et la gravité de la sécurité. L'analyseur effectue également des actions spécifiques en fonction de la méthode HTTP et du niveau de journalisation, en catégorisant les événements en types d'événements UDM tels que USER_LOGIN, STATUS_UPDATE et GENERIC_EVENT.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous de disposer d'un accès privilégié à Nutanix Prism Central.
- Assurez-vous de disposer d'un hôte Windows 2012 SP2 ou version ultérieure ou Linux avec systemd.
- Si vous exécutez l'application derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
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.
Obtenir le numéro client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
- Copiez et sauvegardez l'ID client dans la section Détails de l'organisation.
Installer l'agent BindPlane
- Pour l'installation sous Windows, exécutez le script suivant:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
. - Pour l'installation sous Linux, exécutez le script suivant:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
. - Pour en savoir plus sur les options d'installation, consultez ce guide d'installation.
Configurer l'agent BindPlane pour ingérer Syslog et l'envoyer à Google SecOps
- Accédez à la machine sur laquelle BindPlane est installé.
Modifiez le fichier
config.yaml
comme suit :receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Namespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Redémarrez l'agent BindPlane pour appliquer les modifications à l'aide de la commande suivante :
sudo systemctl bindplane restart
Exporter Syslog depuis Nutanix Prism
- Connectez-vous à Prism Central avec un compte avec accès privilégié.
- Sélectionnez Prism Central Settings (Paramètres Prism Central) dans le menu.
- Accédez à Syslog Server (Serveur Syslog).
- Cliquez sur + Configure Syslog Server (Configurer le serveur Syslog).
- Spécifiez des valeurs pour les paramètres d'entrée dans la boîte de dialogue Serveurs Syslog :
- Nom du serveur: saisissez un nom pour le serveur (par exemple, Google SecOps BindPlane Server).
- Adresse IP: saisissez l'adresse IP de votre agent BindPlane.
- Port: saisissez le port sur lequel l'agent BindPlane écoute.
- Protocole de transport: sélectionnez TCP.
- Cliquez sur Configurer.
- Cliquez sur + Modifier à côté de l'option Sources de données.
- Spécifiez des valeurs pour les paramètres d'entrée dans la boîte de dialogue Sources de données et niveau de gravité respectif :
- Sélectionnez Audit de l'API, Audit et Flux.
- Définissez le niveau de gravité sur 6 - Informationnel pour chacun.
- Cliquez sur Enregistrer.
Tableau de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
@timestamp |
metadata.event_timestamp |
Le code temporel de l'événement est extrait du champ @timestamp . Les formats yyyy-MM-dd HH:mm:ss.SSS , yyyy-MM-ddTHH:mm:ssZ et ISO8601 sont acceptés. |
agent.id |
observer.asset_id |
Combiné à agent.type pour former l'ID de l'asset de l'observateur au format "agent.type:agent.id". |
agent.type |
observer.application |
Application utilisée pour l'observation. |
agent.version |
observer.platform_version |
Version de l'application observateur. |
alertUid |
security_result.detection_fields.value |
La valeur de l'UID de l'alerte est mappée sur le champ value dans detection_fields . key est défini sur "Alert Uid". |
api_version |
metadata.product_version |
Version de l'API. |
clientIp |
principal.ip , principal.asset.ip |
Adresse IP du client. |
client_type |
principal.labels.value |
Valeur du type de client. key est défini sur "client_type". |
defaultMsg |
metadata.description |
Message par défaut. |
entity_uuid |
metadata.product_log_id |
UUID de l'entité. |
http_method |
network.http.method |
Méthode HTTP. Converti en majuscules. |
host.architecture |
principal.asset.hardware.cpu_platform |
Architecture de l'hôte. |
host.id |
principal.asset_id |
Préfixé par "NUTANIX:" pour créer l'ID d'élément principal. |
host.ip |
principal.ip , principal.asset.ip |
Adresse IP de l'hôte. |
host.mac |
principal.mac |
Adresse MAC de l'hôte. |
host.os.kernel |
principal.platform_patch_level |
Version du noyau du système d'exploitation hôte. |
host.os.platform |
principal.platform |
Plate-forme du système d'exploitation hôte. Mappé sur LINUX , WINDOWS , MAC ou UNKNOWN_PLATFORM . |
host.os.version |
principal.platform_version |
Version du système d'exploitation hôte. |
input.type |
network.ip_protocol |
Protocole réseau. Mappé sur "UDP" ou "TCP". |
log.source.address |
principal.ip , principal.asset.ip , principal.port |
Analyse pour extraire l'adresse IP et le port source. |
logstash.collect.host |
observer.ip |
Adresse IP du collecteur Logstash. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Code temporel de la collecte du journal. |
logstash.ingest.host |
intermediary.hostname |
Nom d'hôte du serveur d'ingestion Logstash. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Code temporel de l'ingestion du journal. |
logstash.irm_environment |
principal.labels.value |
Valeur de l'environnement irm. La valeur de key est définie sur "irm_environment". |
logstash.irm_region |
principal.labels.value |
Valeur de la région irm. La valeur de key est définie sur "irm_region". |
logstash.irm_site |
principal.labels.value |
Valeur du site irm. key est défini sur "irm_site". |
logstash.process.host |
intermediary.hostname |
Nom d'hôte du serveur de traitement Logstash. |
operationType |
metadata.product_event_type |
Type d'opération. |
originatingClusterUuid |
additional.fields.value.string_value |
UUID du cluster d'origine. key est défini sur "Uuid du cluster d'origine". |
params.mac_address |
target.mac |
Adresse MAC des paramètres. |
params.requested_ip_address |
target.ip , target.asset.ip |
Adresse IP demandée à partir des paramètres. |
params.vm_name |
target.resource.name |
Nom de la VM à partir des paramètres. |
program |
metadata.product_event_type |
Nom du programme. |
rest_endpoint |
target.url |
Point de terminaison REST. |
sessionId |
additional.fields.value.string_value |
ID de session. key est défini sur "ID de session". |
syslog_host |
principal.hostname , principal.asset.hostname |
Hôte Syslog. |
timestamp |
metadata.event_timestamp |
Code temporel de l'événement. |
username |
principal.user.user_display_name ou principal.user.userid |
Nom d'utilisateur. Utilisé comme ID utilisateur si http_method est "POST". |
uuid |
metadata.product_log_id |
UUID. |
N/A | metadata.vendor_name |
Code codé en dur sur "Nutanix_Prism". |
N/A | metadata.product_name |
Code codé en dur sur "Nutanix_Prism". |
N/A | metadata.event_type |
Déterminé par la logique de l'analyseur en fonction des valeurs de has_principal , has_target , audit_log , network_set et http_method . Il peut s'agir de GENERIC_EVENT , USER_LOGIN , STATUS_UPDATE , USER_RESOURCE_ACCESS , RESOURCE_CREATION , USER_RESOURCE_UPDATE_CONTENT ou USER_RESOURCE_DELETION . |
N/A | metadata.log_type |
Code codé en dur sur "NUTANIX_PRISM". |
N/A | extensions.auth.type |
Définissez cette valeur sur "AUTHTYPE_UNSPECIFIED" si metadata.event_type est USER_LOGIN . |
N/A | security_result.severity |
Déterminé par la logique de l'analyseur basée sur log_level et syslog_pri . Il peut s'agir de CRITICAL , ERROR , HIGH , MEDIUM ou INFORMATIONAL . |
Modifications
2024-02-21
- Lorsque "inner_message" n'est pas vide et que "not_json" est défini sur "true", définissez "audit_log" sur "true" pour prendre en charge les journaux JSON abandonnés.
- Mise en correspondance des mappages "principal.ip" et "principal.asset.ip".
- Mise en correspondance des mappages "target.ip" et "target.asset.ip".
- Mise en correspondance des mappages "principal.hostname" et "principal.asset.hostname".
- Lorsque "network_set" est défini sur "false", "has_principal" sur "true", "has_target" sur "false" et "audit_log" sur "false", définissez "metadata.event_type" sur "STATUS_UPDATE".
- Lorsque "network_set" est défini sur "true", "has_principal" sur "true", "has_target" sur "false" et "audit_log" sur "false", définissez "metadata.event_type" sur "GENERIC_EVENT".
2024-01-12
- Prise en charge du nouveau format des journaux syslog.
- Ajout d'une vérification conditionnelle nulle avant de mapper "logstash.ingest.host" sur "intermediary.hostname".
- Ajout d'une vérification conditionnelle de valeur nulle avant le mappage de "logstash.process.host" sur "intermediary.hostname".
- Ajout d'une vérification conditionnelle nulle avant de mapper "logstash.collect.host" sur "observer.ip".
2023-12-23
- Ajout de la prise en charge d'un nouveau type de journaux d'audit.
- Ajout de nouveaux modèles Grok pour analyser les journaux SYSLOG+JSON.
- Mappage de "affectedEntityList" et "alertUid" sur "security_result.detection_fields".
- Mappage de "clientIp" et "params.requested_ip_address" sur "principal.ip".
- Mappage de "defaultMsg" sur "metadata.description".
- Mappage de "operationType" sur "metadata.product_event_type".
- Mappage de "originatingClusterUuid" et "sessionId" sur "additional.fields".
- Mappage de "params.mac_address" sur "principal.mac".
- Mappage de "uuid" sur "metadata.product_log_id".
- Mappage de "userName" sur "principal.user.user_display_name".
- Mappage de "params.vm_name" sur "target.resource.name".
2023-01-23
- "logstash.ingest.host" a été mappé sur "intermediary[0].hostname" au lieu de "observer.hostname".
- "logstash.collect.host" a été mappé sur "observer.ip".
- Ajout d'une vérification de valeur nulle pour "logstash.ingest.host".