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
systemd
verwenden. - 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
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so: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_labels
Ersetzen 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.json
auf 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-agent
Wenn 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