Raccogliere i log di Epic Systems

Supportato in:

Questo documento spiega come importare i log di Epic Systems in Google Security Operations utilizzando l'agente Bindplane.

Epic Systems è una piattaforma di cartelle cliniche elettroniche (EHR) che genera messaggi syslog CEF per eventi di controllo, accesso/disconnessione degli utenti, accesso dei pazienti e operazioni sui file. Il parser estrae le coppie chiave-valore e le mappa al modello UDM (Unified Data Model).

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 Epic Systems

  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane

  • Accesso con privilegi a Epic Systems

Recuperare il file di autenticazione importazione di Google SecOps

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

Recuperare l'ID cliente Google SecOps

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

Installa l'agente Bindplane

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

Installazione di Windows

  1. Apri 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 aggiuntive per l'installazione

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 inviarli 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:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/epic:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: EPIC
            raw_log_field: body
    
    service:
        pipelines:
            logs/epic_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/epic
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del ricevitore:

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

    • creds_file_path: percorso completo del file di autenticazione 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 endpoint regionale:
      • Stati Uniti: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Per un elenco completo, vedi Endpoint regionali.

Salvare il file di configurazione

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

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

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

      sudo systemctl status observiq-otel-collector
      
    2. Controlla i log per individuare eventuali errori:

      sudo journalctl -u observiq-otel-collector -f
      
  • Per riavviare l'agente Bindplane in Windows, scegli una delle seguenti opzioni:

    • Prompt dei comandi o PowerShell come amministratore:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console Services:

      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.
      4. Verifica che il servizio sia in esecuzione:

        sc query observiq-otel-collector
        
      5. Controlla i log per individuare eventuali errori:

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

Configura il servizio SendSIEMSyslogAudit

  1. Accedi alla console Epic Systems.
  2. Vai a Start > Epic > Interconnect > <your instance> > Editor di configurazione.
  3. Seleziona il modulo Servizi aziendali.
  4. Nella scheda Categoria di servizio, seleziona SendSIEMSyslogAudit.
  5. Fai clic su Salva.

Configurare Epic Systems per esportare i syslog

  1. Vai a Definizioni di sistema Epic > Sicurezza > Opzioni di controllo > Impostazioni syslog SIEM.
  2. Fornisci i seguenti dettagli di configurazione:
    • Host: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci il numero di porta dell'agente Bindplane.
    • Formato SIEM: seleziona CEF (Common Event Format).
    • Carattere di fine riga Syslog: seleziona Nuova riga "\n".
  3. Dal menu Impostazioni syslog SIEM, seleziona Syslog SIEM.
  4. Fai clic su Attivata.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
APIID read_only_udm.additional.fields.api.value.string_value Il valore viene estratto dal campo APIID nel log non elaborato
APPLICATIONID read_only_udm.additional.fields.application_id.value.string_value Il valore viene estratto dal campo APPLICATIONID nel log non elaborato
APP read_only_udm.target.application Il valore viene estratto dal campo APP nel log non elaborato
SESSIONE DI AUDIT read_only_udm.network.session_id Il valore viene estratto dal campo SESSIONE DI AUDIT nel log non elaborato
AUTH_SOURCE Questo campo non è mappato a UDM
BCAPCS read_only_udm.target.application Il valore viene estratto dal campo BCAPCS nel log non elaborato
BTGEXPLANATION read_only_udm.security_result.description Il valore viene estratto dal campo BTGEXPLANATION nel log non elaborato
BTGNOACCESSREAS read_only_udm.security_result.summary Il valore viene estratto dal campo BTGNOACCESSREAS nel log non elaborato
BTGREASON read_only_udm.security_result.summary Il valore viene estratto dal campo BTGREASON nel log non elaborato
CLIENTNAME read_only_udm.principal.hostname Il valore viene estratto dal campo CLIENTNAME nel log non elaborato
CSISESS_TOKEN read_only_udm.network.session_id Il valore viene estratto dal campo CSISESS_TOKEN nel log non elaborato
CTXT read_only_udm.metadata.description Il valore viene estratto dal campo CTXT nel log non elaborato
CVG read_only_udm.additional.fields.cvg.value.string_value Il valore viene estratto dal campo CVG nel log non elaborato
DAT Questo campo non è mappato a UDM
DEP read_only_udm.principal.user.department Il valore viene estratto dal campo DEP nel log non elaborato. Se nel log non elaborato esistono entrambi i campi NEWDEPARTMENT e PREVDEPARTMENT, il valore sarà PREVDEPARTMENT:-{PREVDEPARTMENT}, NEWDEPARTMENT:-{NEWDEPARTMENT}. Se esiste solo NEWDEPARTMENT, il valore sarà PREVDEPARTMENT:-NONE, NEWDEPARTMENT:{NEWDEPARTMENT}. Se esiste solo PREVDEPARTMENT, il valore sarà PREVDEPARTMENT:{PREVDEPARTMENT}, NEWDEPARTMENT:-NONE
devTime read_only_udm.metadata.event_timestamp Il valore viene estratto dal campo devTime nel log non elaborato e convertito in secondi trascorsi da epoca
devTimeFormat Questo campo non è mappato a UDM
E3MID read_only_udm.network.session_id Il valore viene estratto dal campo E3MID nel log non elaborato
CRITTOGRAFATO read_only_udm.additional.fields.encrypt.value.string_value Il valore viene estratto dal campo ENCRYPTED nel log non elaborato
ERRMSG read_only_udm.security_result.summary Il valore viene estratto dal campo ERRMSG nel log non elaborato
eventCnt Questo campo non è mappato a UDM
FILENAME read_only_udm.target.file.full_path Il valore viene estratto dal campo FILENAME nel log non elaborato e tutte le occorrenze di \\\\ vengono sostituite con \
flag read_only_udm.security_result.description Il valore viene estratto dal campo del flag nel log non elaborato e tutti i - iniziali e finali vengono rimossi
HKUAPVER read_only_udm.metadata.product_version Il valore viene estratto dal campo HKUAPVER nel log non elaborato
HKUDVCID read_only_udm.principal.asset_id Il valore viene estratto dal campo HKUDVCID nel log non elaborato e formattato come Device ID:{HKUDVCID}
HKUOSNAM read_only_udm.principal.platform Il valore viene estratto dal campo HKUOSNAM nel log non elaborato e mappato a WINDOWS, MAC, LINUX o UNKNOWN_PLATFORM in base al valore
HKUOSVER read_only_udm.principal.platform_version Il valore viene estratto dal campo HKUOSVER nel log non elaborato
INSTANCEURN read_only_udm.intermediary.hostname Il valore viene estratto dal campo INSTANCEURN nel log non elaborato
IP read_only_udm.target.ip Il valore viene estratto dal campo IP nel log non elaborato. Se il valore contiene /, viene suddiviso in due indirizzi IP. Se il valore contiene ,, viene suddiviso in più indirizzi IP.
LOGINERROR read_only_udm.security_result.summary Il valore viene estratto dal campo LOGINERROR nel log non elaborato
LOGIN_CONTEXT read_only_udm.metadata.description Il valore viene estratto dal campo LOGIN_CONTEXT nel log non elaborato
LOGIN_DEVICE read_only_udm.additional.fields.login_device.value.string_value Il valore viene estratto dal campo LOGIN_DEVICE nel log non elaborato
LOGIN_LDAP_ID read_only_udm.principal.user.userid Il valore viene estratto dal campo LOGIN_LDAP_ID nel log non elaborato
LOGIN_REASON read_only_udm.security_result.summary Il valore viene estratto dal campo LOGIN_REASON nel log non elaborato
LOGIN_REVAL read_only_udm.additional.fields.login_reval.value.string_value Il valore viene estratto dal campo LOGIN_REVAL nel log non elaborato
MASKMODE read_only_udm.additional.fields.masked_mode.value.string_value Il valore viene estratto dal campo MASKMODE nel log non elaborato
MYCACCT read_only_udm.principal.user.userid Il valore viene estratto dal campo MYCACCT nel log non elaborato
NEWDEPARTMENT read_only_udm.principal.user.department Visualizza la logica per il campo DEP
NEWUSER Questo campo non è mappato a UDM
NSC read_only_udm.additional.fields.nsc.value.string_value Il valore viene estratto dal campo NSC nel log non elaborato
OSUSR read_only_udm.target.user.userid Il valore viene estratto dal campo OSUSR nel log non elaborato
PATIENT read_only_udm.target.user.userid Il valore viene estratto dal campo PATIENT nel log non elaborato
PREVDEPARTMENT read_only_udm.principal.user.department Visualizza la logica per il campo DEP
PREVPROVIDER Questo campo non è mappato a UDM
PREVUSER read_only_udm.principal.resource.attribute.labels.prev_user.value Il valore viene estratto dal campo PREVUSER nel log non elaborato
PWREASON read_only_udm.metadata.description Il valore viene estratto dal campo PWREASON nel log non elaborato
RUOLO read_only_udm.principal.user.attribute.roles.name Il valore viene estratto dal campo ROLE nel log non elaborato
risorsa read_only_udm.target.hostname Il valore viene estratto dal campo della risorsa nel log non elaborato
SERVICEID read_only_udm.additional.fields.service_id.value.string_value Il valore viene estratto dal campo SERVICEID nel log non elaborato
SERVICECATEGORY read_only_udm.additional.fields.service_category.value.string_value Il valore viene estratto dal campo SERVICECATEGORY nel log non elaborato
SERVICEMSGID Questo campo non è mappato a UDM
SERVICENAME read_only_udm.target.resource.name Il valore viene estratto dal campo SERVICENAME nel log non elaborato
SERVICETYPE read_only_udm.target.resource.type Il valore viene estratto dal campo SERVICETYPE nel log non elaborato. Se event_id è PHI_CLIENT_FILE, il valore è impostato su FILE
SERVICE_USER read_only_udm.target.user.userid Il valore viene estratto dal campo SERVICE_USER nel log non elaborato
SERVICE_USERTYP read_only_udm.additional.fields.service_user_type.value.string_value Il valore viene estratto dal campo SERVICE_USERTYP nel log non elaborato
sev read_only_udm.security_result.severity Il valore viene estratto dal campo sev nel log non elaborato e mappato su LOW, HIGH o CRITICAL in base al valore
shost read_only_udm.target.resource.attribute.labels.workstation_type.value Il valore viene estratto dal campo shost nel log non elaborato
ORIGINE read_only_udm.additional.fields.login_source.value.string_value Il valore viene estratto dal campo SOURCE nel log non elaborato
SUCCESS read_only_udm.additional.fields.success_yes_no.value.string_value Il valore viene estratto dal campo SUCCESS nel log non elaborato
TIMEOUT read_only_udm.additional.fields.time_out.value.string_value Il valore viene estratto dal campo TIMEOUT nel log non elaborato
UID read_only_udm.principal.user.userid Il valore viene estratto dal campo UID nel log non elaborato
USERJOB Questo campo non è mappato a UDM
usrName read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name Se nel log non elaborato esistono i campi UID o LOGIN_LDAP_ID, usrName viene utilizzato per read_only_udm.principal.user.user_display_name e l'altro campo viene utilizzato per read_only_udm.principal.user.userid. In caso contrario, usrName viene utilizzato per read_only_udm.principal.user.userid
WEBLGAPP read_only_udm.target.application Il valore viene estratto dal campo WEBLGAPP nel log non elaborato
read_only_udm.extensions.auth.type Il valore è impostato su SSO se LOGIN_LDAP_ID non è vuoto. In caso contrario, il valore viene impostato su AUTHTYPE_UNSPECIFIED.
read_only_udm.intermediary.ip Il valore è impostato sull'indirizzo IP dell'origine log.
read_only_udm.metadata.event_type Il valore è impostato su RESOURCE_READ se event_id è uno tra IC_SERVICE_AUDIT, AC_BREAK_THE_GLASS_FAILED_ACCESS, AC_BREAK_THE_GLASS_INAPPROPRIATE_ATTEMPT, AC_BREAK_THE_GLASS_ACCESS o MCMEMEDISA e target_ip_set è true o resource non è vuoto. Il valore è impostato su USER_LOGIN se event_id è uno dei seguenti: FAILEDLOGIN, LOGIN, ROVER_FAILED_LOGIN, SWITCHUSER, AUTHENTICATION, EW_LOGIN, ROVER_LOGIN, CTO_FAILED_LOGIN, CTO_LOGIN, HKU_FAILED_LOGIN, HKU_LOGIN, WPSEC_SEC_AUTH_OPT_OUT, WPSEC_SEC_AUTH_OPT_IN, BCA_LOGIN_FAILURE, BCA_LOGIN_SUCCESS, BCA_USER_LOCKED, WPSEC_LOGIN_FAIL o WPSEC_LOGIN_SUCCESS e almeno uno tra target_ip_set, resource, SERVICENAME, SERVICETYPE o shost non è vuoto. Il valore è impostato su USER_CHANGE_PASSWORD se event_id è uno tra E_ADMINPASSWORDCHANGE, E_FAILEDPASSWORDCHANGE, E_SELFPASSWORDCHANGE, WPSEC_USER_PASSWORD_CHANGE_FAIL o WPSEC_USER_PASSWORD_CHANGE. Il valore è impostato su USER_UNCATEGORIZED se event_id è CONTEXTCHANGE. Il valore è impostato su USER_RESOURCE_ACCESS se event_id è uno tra SECURE, UNSECURE, MASKED_DATA_DISPLAY o MASKED_DATA_PRINTING. Il valore è impostato su USER_RESOURCE_UPDATE_CONTENT se event_id è PHI_CLIENT_FILE. Il valore è impostato su STATUS_UPDATE se CLIENTNAME non è vuoto. Il valore è impostato su USER_UNCATEGORIZED se prin_usr_id non è vuoto. In caso contrario, il valore viene impostato su GENERIC_EVENT.
read_only_udm.metadata.log_type Il valore è impostato su EPIC.
read_only_udm.metadata.product_name Il valore è impostato su Epic Systems.
read_only_udm.metadata.vendor_name Il valore è impostato su EPIC.
read_only_udm.network.ip_protocol Il valore viene derivato dal campo proto nel log non elaborato e mappato al nome del protocollo IP corrispondente.
read_only_udm.principal.resource.attribute.labels.workstation_type.key Il valore è impostato su Workstation ID/Type.
read_only_udm.principal.resource.attribute.labels.prev_user.key Il valore è impostato su Prev User.
read_only_udm.security_result.action Il valore è impostato su BLOCK se nel log non elaborato sono presenti i campi ERRMSG o LOGINERROR.

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