Collecter les journaux Nutanix Prism

Compatible avec:

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

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion.

Obtenir le numéro client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Profil.
  3. Copiez et sauvegardez l'ID client dans la section Détails de l'organisation.

Installer l'agent BindPlane

  1. 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.
  2. 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.
  3. 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

  1. Accédez à la machine sur laquelle BindPlane est installé.
  2. 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
    
  3. Redémarrez l'agent BindPlane pour appliquer les modifications à l'aide de la commande suivante : sudo systemctl bindplane restart

Exporter Syslog depuis Nutanix Prism

  1. Connectez-vous à Prism Central avec un compte avec accès privilégié.
  2. Sélectionnez Prism Central Settings (Paramètres Prism Central) dans le menu.
  3. Accédez à Syslog Server (Serveur Syslog).
  4. Cliquez sur + Configure Syslog Server (Configurer le serveur Syslog).
  5. 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.
  6. Cliquez sur + Modifier à côté de l'option Sources de données.
  7. 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".