Epic Systems-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Epic Systems-Logs mit einem Bindplane-Agent für Google Security Operations erfassen. Der Parser wandelt Rohdaten aus Epic-EMR-/EHR-Systemprotokollen in ein einheitliches Datenmodell (Unified Data Model, UDM) um. Zuerst werden die Log-Nachrichten bereinigt und strukturiert, dann werden Schlüssel/Wert-Paare extrahiert und die extrahierten Felder werden den entsprechenden UDM-Feldern zugeordnet. Dabei werden verschiedene Log-Formate und Dateninkonsistenzen berücksichtigt, um eine umfassende und standardisierte Darstellung der Daten zu gewährleisten.
Hinweise
- Prüfen Sie, ob Sie eine Google Security Operations-Instanz haben.
- Achten Sie darauf, dass Sie Windows 2016 oder höher oder einen Linux-Host mit
systemdverwenden. - Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
- Prüfen Sie, ob Sie privilegierten Zugriff auf Epic Systems haben.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > „Profil“ auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Fenstereinbau
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
Führen Sie dazu diesen Befehl aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Zusätzliche Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Greifen Sie auf die Konfigurationsdatei zu:
- Suchen Sie die Datei
config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano,vioder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yamlso: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: '/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 ingestion_labels: log_type: EPIC raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsErsetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>durch die tatsächliche Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.jsonauf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:
sudo systemctl restart bindplane-agentWenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Dienst „SendSIEMSyslogAudit“ konfigurieren
- Melden Sie sich in der Epic Systems-Konsole an.
- Gehen Sie zu Start> Epic> Interconnect>
<your instance>> Konfigurationseditor. - Wählen Sie das Formular Business services (Geschäftsdienste) aus.
- Wählen Sie auf dem Tab Service category (Dienstkategorie) die Option SendSIEMSyslogAudit aus.
- Klicken Sie auf Speichern.
Epic Systems für den Export von Syslog konfigurieren
- Rufen Sie Epic-Systemdefinitionen> Sicherheit > Prüfoptionen > SIEM-Syslog-Einstellungen auf.
- Geben Sie die folgenden Konfigurationsdetails an:
- Host: Geben Sie die IP-Adresse des BindPlane-Agents ein.
- Port: Geben Sie die Portnummer des Bindplane-Agents ein.
- SIEM-Format: Wählen Sie CEF (Common Event Format) aus.
- Syslog-Endezeichen: Wählen Sie Neue Zeile „\n“ aus.
- Wählen Sie im Menü SIEM-Syslog-Einstellungen die Option SIEM-Syslog aus.
- Klicken Sie auf Aktiviert.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| APIID | read_only_udm.additional.fields.api.value.string_value | Der Wert wird aus dem Feld „APIID“ im Rohlog übernommen. |
| APPLICATIONID | read_only_udm.additional.fields.application_id.value.string_value | Der Wert wird aus dem Feld APPLICATIONID im Rohlog übernommen. |
| APP | read_only_udm.target.application | Der Wert wird aus dem Feld „APP“ im Rohlog übernommen. |
| AUDIT-SITZUNG | read_only_udm.network.session_id | Der Wert wird aus dem Feld „AUDIT SESSION“ im Rohlog übernommen. |
| AUTH_SOURCE | Dieses Feld ist nicht dem UDM zugeordnet. | |
| BCAPCS | read_only_udm.target.application | Der Wert wird aus dem BCAPCS-Feld im Rohlog übernommen. |
| BTGEXPLANATION | read_only_udm.security_result.description | Der Wert wird aus dem Feld „BTGEXPLANATION“ im Rohlog übernommen. |
| BTGNOACCESSREAS | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „BTGNOACCESSREAS“ im Rohlog übernommen. |
| BTGREASON | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „BTGREASON“ im Rohlog übernommen. |
| CLIENTNAME | read_only_udm.principal.hostname | Der Wert wird aus dem Feld „CLIENTNAME“ im Rohlog übernommen. |
| CSISESS_TOKEN | read_only_udm.network.session_id | Der Wert wird aus dem Feld „CSISESS_TOKEN“ im Rohlog übernommen. |
| CTXT | read_only_udm.metadata.description | Der Wert wird aus dem Feld „CTXT“ im Rohlog übernommen. |
| CVG | read_only_udm.additional.fields.cvg.value.string_value | Der Wert wird aus dem Feld „CVG“ im Rohlog übernommen. |
| DAT | Dieses Feld ist nicht dem UDM zugeordnet. | |
| DEP | read_only_udm.principal.user.department | Der Wert wird aus dem DEP-Feld im Rohlog übernommen. Wenn sowohl das Feld NEWDEPARTMENT als auch das Feld PREVDEPARTMENT im Rohlog vorhanden sind, ist der Wert PREVDEPARTMENT:-{PREVDEPARTMENT}, NEWDEPARTMENT:-{NEWDEPARTMENT}. Wenn nur NEWDEPARTMENT vorhanden ist, lautet der Wert PREVDEPARTMENT:-NONE, NEWDEPARTMENT:{NEWDEPARTMENT}. Wenn nur PREVDEPARTMENT vorhanden ist, lautet der Wert PREVDEPARTMENT:{PREVDEPARTMENT}, NEWDEPARTMENT:-NONE. |
| devTime | read_only_udm.metadata.event_timestamp | Der Wert wird aus dem Feld „devTime“ im Rohlog übernommen und in Sekunden seit der Epoche umgerechnet. |
| devTimeFormat | Dieses Feld ist nicht dem UDM zugeordnet. | |
| E3MID | read_only_udm.network.session_id | Der Wert wird aus dem Feld „E3MID“ im Rohlog übernommen. |
| VERSCHLÜSSELT | read_only_udm.additional.fields.encrypt.value.string_value | Der Wert wird aus dem Feld „ENCRYPTED“ im Rohlog übernommen. |
| ERRMSG | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „ERRMSG“ im Rohlog übernommen. |
| eventCnt | Dieses Feld ist nicht dem UDM zugeordnet. | |
| FILENAME | read_only_udm.target.file.full_path | Der Wert wird aus dem Feld FILENAME im Rohlog übernommen und alle Vorkommen von \\\\ werden durch \ ersetzt. |
| Flag | read_only_udm.security_result.description | Der Wert wird aus dem Flag-Feld im Rohlog übernommen und alle voran- und nachgestellten - werden entfernt. |
| HKUAPVER | read_only_udm.metadata.product_version | Der Wert wird aus dem Feld „HKUAPVER“ im Rohlog übernommen. |
| HKUDVCID | read_only_udm.principal.asset_id | Der Wert wird aus dem Feld „HKUDVCID“ im Rohlog übernommen und als Device ID:{HKUDVCID} formatiert. |
| HKUOSNAM | read_only_udm.principal.platform | Der Wert wird aus dem Feld „HKUOSNAM“ im Rohlog übernommen und je nach Wert WINDOWS, MAC, LINUX oder UNKNOWN_PLATFORM zugeordnet. |
| HKUOSVER | read_only_udm.principal.platform_version | Der Wert wird aus dem Feld „HKUOSVER“ im Rohlog übernommen. |
| INSTANCEURN | read_only_udm.intermediary.hostname | Der Wert wird aus dem Feld „INSTANCEURN“ im Rohlog übernommen. |
| IP-Adresse | read_only_udm.target.ip | Der Wert wird aus dem IP-Feld im Rohlog übernommen. Wenn der Wert / enthält, wird er in zwei IP-Adressen aufgeteilt. Wenn der Wert , enthält, wird er in mehrere IP-Adressen aufgeteilt. |
| LOGINERROR | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „LOGINERROR“ im Rohlog übernommen. |
| LOGIN_CONTEXT | read_only_udm.metadata.description | Der Wert wird aus dem Feld „LOGIN_CONTEXT“ im Rohlog übernommen. |
| LOGIN_DEVICE | read_only_udm.additional.fields.login_device.value.string_value | Der Wert wird aus dem Feld LOGIN_DEVICE im Rohlog übernommen. |
| LOGIN_LDAP_ID | read_only_udm.principal.user.userid | Der Wert wird aus dem Feld „LOGIN_LDAP_ID“ im Rohlog übernommen. |
| LOGIN_REASON | read_only_udm.security_result.summary | Der Wert wird aus dem Feld LOGIN_REASON im Rohlog übernommen. |
| LOGIN_REVAL | read_only_udm.additional.fields.login_reval.value.string_value | Der Wert wird aus dem Feld „LOGIN_REVAL“ im Rohlog übernommen. |
| MASKMODE | read_only_udm.additional.fields.masked_mode.value.string_value | Der Wert wird aus dem Feld „MASKMODE“ im Rohlog übernommen. |
| MYCACCT | read_only_udm.principal.user.userid | Der Wert wird aus dem Feld „MYCACCT“ im Rohlog übernommen. |
| NEWDEPARTMENT | read_only_udm.principal.user.department | Logik für das DEP-Feld ansehen |
| NEWUSER | Dieses Feld ist nicht dem UDM zugeordnet. | |
| NSC | read_only_udm.additional.fields.nsc.value.string_value | Der Wert wird aus dem NSC-Feld im Rohlog übernommen. |
| OSUSR | read_only_udm.target.user.userid | Der Wert wird aus dem Feld „OSUSR“ im Rohlog übernommen. |
| PATIENT | read_only_udm.target.user.userid | Der Wert wird aus dem Feld „PATIENT“ im Rohlog übernommen. |
| PREVDEPARTMENT | read_only_udm.principal.user.department | Logik für das DEP-Feld ansehen |
| PREVPROVIDER | Dieses Feld ist nicht dem UDM zugeordnet. | |
| PREVUSER | read_only_udm.principal.resource.attribute.labels.prev_user.value | Der Wert wird aus dem Feld „PREVUSER“ im Rohlog übernommen. |
| PWREASON | read_only_udm.metadata.description | Der Wert wird aus dem Feld „PWREASON“ im Rohlog übernommen. |
| POSITION | read_only_udm.principal.user.attribute.roles.name | Der Wert wird aus dem Feld „ROLE“ im Rohlog übernommen. |
| Ressource | read_only_udm.target.hostname | Der Wert wird aus dem Ressourcenfeld im Rohlog übernommen. |
| SERVICEID | read_only_udm.additional.fields.service_id.value.string_value | Der Wert wird aus dem Feld SERVICEID im Rohlog übernommen. |
| SERVICECATEGORY | read_only_udm.additional.fields.service_category.value.string_value | Der Wert wird aus dem Feld „SERVICECATEGORY“ im Rohlog übernommen. |
| SERVICEMSGID | Dieses Feld ist nicht dem UDM zugeordnet. | |
| SERVICENAME | read_only_udm.target.resource.name | Der Wert wird aus dem Feld „SERVICENAME“ im Rohlog übernommen. |
| SERVICETYPE | read_only_udm.target.resource.type | Der Wert wird aus dem Feld „SERVICETYPE“ im Rohlog übernommen. Wenn „event_id“ PHI_CLIENT_FILE ist, wird der Wert auf FILE gesetzt. |
| SERVICE_USER | read_only_udm.target.user.userid | Der Wert wird aus dem Feld „SERVICE_USER“ im Rohlog übernommen. |
| SERVICE_USERTYP | read_only_udm.additional.fields.service_user_type.value.string_value | Der Wert wird aus dem Feld „SERVICE_USERTYP“ im Rohlog übernommen. |
| sev | read_only_udm.security_result.severity | Der Wert wird aus dem Feld „sev“ im Rohlog übernommen und je nach Wert LOW, HIGH oder CRITICAL zugeordnet. |
| shost | read_only_udm.target.resource.attribute.labels.workstation_type.value | Der Wert wird aus dem Feld „shost“ im Rohlog übernommen. |
| Quelle | read_only_udm.additional.fields.login_source.value.string_value | Der Wert wird aus dem Feld „SOURCE“ im Rohlog übernommen. |
| ERFOLGREICH | read_only_udm.additional.fields.success_yes_no.value.string_value | Der Wert wird aus dem Feld „SUCCESS“ im Rohlog übernommen. |
| Zeitüberschreitung | read_only_udm.additional.fields.time_out.value.string_value | Der Wert wird aus dem Feld „TIMEOUT“ im Rohlog übernommen. |
| UID | read_only_udm.principal.user.userid | Der Wert wird aus dem Feld „UID“ im Rohlog übernommen. |
| USERJOB | Dieses Feld ist nicht dem UDM zugeordnet. | |
| usrName | read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name | Wenn die Felder „UID“ oder „LOGIN_LDAP_ID“ im Rohlog vorhanden sind, wird „usrName“ für „read_only_udm.principal.user.user_display_name“ und das andere Feld für „read_only_udm.principal.user.userid“ verwendet. Andernfalls wird „usrName“ für „read_only_udm.principal.user.userid“ verwendet. |
| WEBLGAPP | read_only_udm.target.application | Der Wert wird dem Feld „WEBLGAPP“ im Rohlog entnommen. |
| read_only_udm.extensions.auth.type | Der Wert wird auf SSO gesetzt, wenn LOGIN_LDAP_ID nicht leer ist. Andernfalls wird der Wert auf AUTHTYPE_UNSPECIFIED gesetzt. |
|
| read_only_udm.intermediary.ip | Der Wert wird auf die IP-Adresse der Protokollquelle festgelegt. | |
| read_only_udm.metadata.event_type | Der Wert wird auf RESOURCE_READ gesetzt, wenn „event_id“ einer der folgenden Werte ist: IC_SERVICE_AUDIT, AC_BREAK_THE_GLASS_FAILED_ACCESS, AC_BREAK_THE_GLASS_INAPPROPRIATE_ATTEMPT, AC_BREAK_THE_GLASS_ACCESS oder MCMEMEDISA. Außerdem muss „target_ip_set“ true sein oder „resource“ darf nicht leer sein. Der Wert wird auf USER_LOGIN festgelegt, wenn „event_id“ einer der folgenden Werte ist: 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 oder WPSEC_LOGIN_SUCCESS und mindestens einer der folgenden Werte nicht leer ist: „target_ip_set“, „resource“, „SERVICENAME“, „SERVICETYPE“ oder „shost“. Der Wert wird auf USER_CHANGE_PASSWORD gesetzt, wenn „event_id“ einer der folgenden Werte ist: E_ADMINPASSWORDCHANGE, E_FAILEDPASSWORDCHANGE, E_SELFPASSWORDCHANGE, WPSEC_USER_PASSWORD_CHANGE_FAIL oder WPSEC_USER_PASSWORD_CHANGE. Der Wert wird auf USER_UNCATEGORIZED festgelegt, wenn „event_id“ CONTEXTCHANGE ist. Der Wert wird auf USER_RESOURCE_ACCESS gesetzt, wenn „event_id“ einer der folgenden Werte ist: SECURE, UNSECURE, MASKED_DATA_DISPLAY oder MASKED_DATA_PRINTING. Der Wert wird auf USER_RESOURCE_UPDATE_CONTENT festgelegt, wenn „event_id“ PHI_CLIENT_FILE ist. Der Wert wird auf STATUS_UPDATE gesetzt, wenn CLIENTNAME nicht leer ist. Der Wert wird auf USER_UNCATEGORIZED festgelegt, wenn „prin_usr_id“ nicht leer ist. Andernfalls wird der Wert auf GENERIC_EVENT gesetzt. |
|
| read_only_udm.metadata.log_type | Der Wert ist auf EPIC festgelegt. |
|
| read_only_udm.metadata.product_name | Der Wert ist auf Epic Systems festgelegt. |
|
| read_only_udm.metadata.vendor_name | Der Wert ist auf EPIC festgelegt. |
|
| read_only_udm.network.ip_protocol | Der Wert wird aus dem Protofeld im Rohlog abgeleitet und dem entsprechenden IP-Protokollnamen zugeordnet. | |
| read_only_udm.principal.resource.attribute.labels.workstation_type.key | Der Wert ist auf Workstation ID/Type festgelegt. |
|
| read_only_udm.principal.resource.attribute.labels.prev_user.key | Der Wert ist auf Prev User festgelegt. |
|
| read_only_udm.security_result.action | Der Wert wird auf BLOCK gesetzt, wenn entweder die Felder ERRMSG oder LOGINERROR im Rohlog vorhanden sind. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten