Raccogli i log di PTC Windchill

Supportato in:

Questo documento spiega come importare i log di PTC Windchill in Google Security Operations utilizzando Bindplane.

PTC Windchill è una piattaforma di gestione del ciclo di vita del prodotto (PLM) utilizzata per gestire i dati, i processi e la collaborazione dei prodotti tra i team di progettazione e produzione. La piattaforma genera log di accesso, audit e modifica della configurazione dai deployment dei server on-premise.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive oppure host Linux con systemd
  • Connettività di rete tra l'agente Bindplane e il server PTC Windchill
  • Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso con privilegi al server PTC Windchill con autorizzazioni di amministratore

Scarica il file di autenticazione dell'importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.

Scarica l'ID cliente di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di finestre

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sc query observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.

Installazione di Linux

  1. Apri un terminale con privilegi di root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sudo systemctl status observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).

Risorse di installazione aggiuntive

Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per importare syslog e inviarlo a Google SecOps

Individua il file di configurazione

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/windchill:
        compression: gzip
        creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: WINDCHILL
        raw_log_field: body
    
    service:
      pipelines:
        logs/windchill_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/windchill
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del ricevitore:

    • listen_address: indirizzo IP e porta su cui ascoltare:
      • 0.0.0.0 per ascoltare su tutte le interfacce (consigliato)
      • La porta 514 è la porta syslog standard (richiede la root su Linux; utilizza 1514 per la non root)
  • Configurazione dell'esportatore:

    • creds_file_path: percorso completo del file di autenticazione dell'importazione:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: ID cliente copiato dalla console Google SecOps
    • endpoint: URL dell'endpoint regionale:
      • Stati Uniti: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Per l'elenco completo, consulta Endpoint regionali

Salva il file di configurazione

  • Dopo la modifica, salva il file:
    • Linux: premi Ctrl+O, poi Enter, poi Ctrl+X
    • Windows: fai clic su File > Salva

Riavvia l'agente Bindplane per applicare le modifiche

Per riavviare l'agente Bindplane in Linux:

  1. Esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
  2. Verifica che il servizio sia in esecuzione:

    sudo systemctl status observiq-otel-collector
    
  3. Controlla i log per verificare la presenza di errori:

    sudo journalctl -u observiq-otel-collector -f
    

Per riavviare l'agente Bindplane in Windows:

  1. Scegli una delle seguenti opzioni:

    • Prompt dei comandi o PowerShell come amministratore:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Console dei servizi:
      1. Premi Win+R, digita services.msc e premi Invio.
      2. Individua observIQ OpenTelemetry Collector.
      3. Fai clic con il tasto destro del mouse e seleziona Riavvia.
  2. Verifica che il servizio sia in esecuzione:

    sc query observiq-otel-collector
    
  3. Controlla i log per verificare la presenza di errori:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Configura l'inoltro di syslog di PTC Windchill

  1. Accedi al server PTC Windchill come amministratore.
  2. Configura rsyslog o un agente syslog per inoltrare i log delle applicazioni Windchill. Modifica la configurazione di rsyslog:

    sudo nano /etc/rsyslog.d/windchill.conf
    
  3. Aggiungi le seguenti righe per inoltrare i file di log di Windchill all'agente Bindplane:

    # Forward PTC Windchill logs to Bindplane agent
    module(load="imfile")
    input(type="imfile" File="/path/to/windchill/logs/*.log" Tag="windchill" Severity="info" Facility="local0")
    if $syslogtag == 'windchill' then @@<bindplane-ip>:514
    
    • Sostituisci /path/to/windchill/logs/ con il percorso effettivo della directory dei log di Windchill.
    • Sostituisci <bindplane-ip> con l'indirizzo IP dell'host dell'agente Bindplane.
  4. Riavvia il servizio rsyslog:

    sudo systemctl restart rsyslog
    
  5. Verifica che i log vengano inviati controllando i log dell'agente Bindplane.

Tabella di mapping UDM

Campo log Mapping UDM Logica
eventlabel metadata.description Valore copiato direttamente
eventtime metadata.event_timestamp Convertito utilizzando il filtro della data con i formati SYSLOGTIMESTAMP, ISO8601
metadata.event_type Impostato su "USER_LOGIN" se has_principal == "true" e has_principal_user == "true" e has_target == "true"; "USER_RESOURCE_ACCESS" se has_target_resource == "true"; "USER_UNCATEGORIZED" se has_principal == "true" e has_principal_user == "true"; "STATUS_UPDATE" se has_principal == "true"; altrimenti "GENERIC_EVENT"
dbschema metadata.ingestion_labels Unito all'oggetto db_schema (chiave="DBSCHEMA", valore=dbschema)
dbname metadata.product_deployment_id Valore copiato direttamente
eventlabel, description metadata.product_event_type Valore della descrizione se non è vuoto, altrimenti da eventlabel
context metadata.product_log_id Valore copiato direttamente
version metadata.product_version Valore copiato direttamente
ohost observer.hostname Valore copiato direttamente se ohost non è un IP
ohost observer.ip Valore copiato direttamente se ohost è un IP
domainpath principal.administrative_domain Valore copiato direttamente
ipaddress principal.asset.hostname Valore copiato direttamente se ipaddress non è un IP
ipaddress principal.asset.ip Valore copiato direttamente se ipaddress è un IP
ipaddress, phost principal.hostname Valore di ipaddress se non è un IP, altrimenti da phost se non è un IP
ipaddress, phost principal.ip Valore di ipaddress se IP, altrimenti da phost se IP
folderpath principal.process.file.full_path Valore copiato direttamente
user_product_object_id principal.user.product_object_id Valore copiato direttamente
user_display_name principal.user.user_display_name Valore copiato direttamente
username, user_userid principal.user.userid Valore di username se non è vuoto, altrimenti da user_userid
domain_name target.domain.name Valore copiato direttamente
target_path target.file.full_path Valore copiato direttamente
namespace target.namespace Valore copiato direttamente
lifecyclestate, targetname, targetnumber, targettype target.resource.attribute.labels Unito a lifecyclestate_label (chiave="lifecyclestate", valore=lifecyclestate), targetname_label (chiave="targetname", valore=targetname), targetnumber_label (chiave="targetnumber", valore=targetnumber), targettype_label (chiave="targettype", valore=targettype)
target_number target.resource.id Valore copiato direttamente
target_name target.resource.name Valore copiato direttamente
target_identity target.resource.product_object_id Valore copiato direttamente
target_subtype target.resource.resource_subtype Valore copiato direttamente
metadata.product_name Impostato su "Windchill"
metadata.vendor_name Impostato su "PTC"

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.