Recolha registos de sistemas da Epic
Este documento explica como recolher registos do Epic Systems para o Google Security Operations através de um agente do Bindplane. O analisador transforma os registos do sistema EMR/EHR da Epic não processados num modelo de dados unificado (UDM). Primeiro, limpa e estrutura as mensagens de registo, extrai pares de chave/valor e, em seguida, mapeia os campos extraídos para os campos da UDM correspondentes, processando vários formatos de registo e inconsistências de dados para garantir uma representação de dados abrangente e padronizada.
Antes de começar
- Certifique-se de que tem uma instância do Google Security Operations.
- Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com
systemd. - Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
- Certifique-se de que tem acesso privilegiado aos sistemas Epic.
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml. Normalmente, encontra-se no diretório/etc/bindplane-agent/no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yamlda seguinte forma: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_labelsSubstitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>pelo ID de cliente real.Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara reiniciar o agente do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o serviço SendSIEMSyslogAudit
- Inicie sessão na consola da Epic Systems.
- Aceda a Iniciar > Epic > Interconnect >
<your instance>> Editor de configuração. - Selecione o formulário Serviços empresariais.
- No separador Categoria de serviço, selecione SendSIEMSyslogAudit.
- Clique em Guardar.
Configure os sistemas Epic para exportar o syslog
- Aceda a Definições do sistema Epic > Segurança > Opções de auditoria > Definições de syslog do SIEM.
- Indique os seguintes detalhes de configuração:
- Anfitrião: introduza o endereço IP do agente do Bindplane.
- Porta: introduza o número da porta do agente do Bindplane.
- Formato SIEM: selecione CEF (formato de evento comum).
- Caráter final do Syslog: selecione Nova linha "\n".
- No menu Definições de syslog do SIEM, selecione Syslog do SIEM.
- Clique em Ativado.
Tabela de mapeamento da UDM
| Campo de registo | Mapeamento do UDM | Lógica |
|---|---|---|
| APIID | read_only_udm.additional.fields.api.value.string_value | O valor é retirado do campo APIID no registo não processado |
| APPLICATIONID | read_only_udm.additional.fields.application_id.value.string_value | O valor é retirado do campo APPLICATIONID no registo não processado |
| APP | read_only_udm.target.application | O valor é retirado do campo APP no registo não processado |
| AUDIT SESSION | read_only_udm.network.session_id | O valor é retirado do campo AUDIT SESSION no registo não processado |
| AUTH_SOURCE | Este campo não está mapeado para o UDM | |
| BCAPCS | read_only_udm.target.application | O valor é retirado do campo BCAPCS no registo não processado |
| BTGEXPLANATION | read_only_udm.security_result.description | O valor é retirado do campo BTGEXPLANATION no registo não processado |
| BTGNOACCESSREAS | read_only_udm.security_result.summary | O valor é retirado do campo BTGNOACCESSREAS no registo não processado |
| BTGREASON | read_only_udm.security_result.summary | O valor é retirado do campo BTGREASON no registo não processado |
| CLIENTNAME | read_only_udm.principal.hostname | O valor é retirado do campo CLIENTNAME no registo não processado |
| CSISESS_TOKEN | read_only_udm.network.session_id | O valor é retirado do campo CSISESS_TOKEN no registo não processado |
| CTXT | read_only_udm.metadata.description | O valor é retirado do campo CTXT no registo não processado |
| CVG | read_only_udm.additional.fields.cvg.value.string_value | O valor é retirado do campo CVG no registo não processado |
| DAT | Este campo não está mapeado para o UDM | |
| DEP | read_only_udm.principal.user.department | O valor é retirado do campo DEP no registo não processado. Se os campos NEWDEPARTMENT e PREVDEPARTMENT existirem no registo não processado, o valor é PREVDEPARTMENT:-{PREVDEPARTMENT}, NEWDEPARTMENT:-{NEWDEPARTMENT}. Se existir apenas NEWDEPARTMENT, o valor é PREVDEPARTMENT:-NONE, NEWDEPARTMENT:{NEWDEPARTMENT}. Se existir apenas PREVDEPARTMENT, o valor é PREVDEPARTMENT:{PREVDEPARTMENT}, NEWDEPARTMENT:-NONE |
| devTime | read_only_udm.metadata.event_timestamp | O valor é retirado do campo devTime no registo não processado e convertido em segundos desde epoch |
| devTimeFormat | Este campo não está mapeado para o UDM | |
| E3MID | read_only_udm.network.session_id | O valor é retirado do campo E3MID no registo não processado |
| ENCRIPTADO | read_only_udm.additional.fields.encrypt.value.string_value | O valor é retirado do campo ENCRYPTED no registo não processado |
| ERRMSG | read_only_udm.security_result.summary | O valor é retirado do campo ERRMSG no registo não processado |
| eventCnt | Este campo não está mapeado para o UDM | |
| FILENAME | read_only_udm.target.file.full_path | O valor é retirado do campo FILENAME no registo não processado e todas as ocorrências de \\\\ são substituídas por \ |
| flag | read_only_udm.security_result.description | O valor é retirado do campo de flags no registo não processado e todos os - iniciais e finais são removidos |
| HKUAPVER | read_only_udm.metadata.product_version | O valor é retirado do campo HKUAPVER no registo não processado |
| HKUDVCID | read_only_udm.principal.asset_id | O valor é retirado do campo HKUDVCID no registo não processado e formatado como Device ID:{HKUDVCID} |
| HKUOSNAM | read_only_udm.principal.platform | O valor é retirado do campo HKUOSNAM no registo não processado e mapeado para WINDOWS, MAC, LINUX ou UNKNOWN_PLATFORM com base no valor |
| HKUOSVER | read_only_udm.principal.platform_version | O valor é retirado do campo HKUOSVER no registo não processado |
| INSTANCEURN | read_only_udm.intermediary.hostname | O valor é retirado do campo INSTANCEURN no registo não processado |
| PI | read_only_udm.target.ip | O valor é retirado do campo IP no registo não processado. Se o valor contiver /, é dividido em dois endereços IP. Se o valor contiver ,, é dividido em vários endereços IP. |
| LOGINERROR | read_only_udm.security_result.summary | O valor é retirado do campo LOGINERROR no registo não processado |
| LOGIN_CONTEXT | read_only_udm.metadata.description | O valor é retirado do campo LOGIN_CONTEXT no registo não processado |
| LOGIN_DEVICE | read_only_udm.additional.fields.login_device.value.string_value | O valor é retirado do campo LOGIN_DEVICE no registo não processado |
| LOGIN_LDAP_ID | read_only_udm.principal.user.userid | O valor é retirado do campo LOGIN_LDAP_ID no registo não processado |
| LOGIN_REASON | read_only_udm.security_result.summary | O valor é retirado do campo LOGIN_REASON no registo não processado |
| LOGIN_REVAL | read_only_udm.additional.fields.login_reval.value.string_value | O valor é retirado do campo LOGIN_REVAL no registo não processado |
| MASKMODE | read_only_udm.additional.fields.masked_mode.value.string_value | O valor é retirado do campo MASKMODE no registo não processado |
| MYCACCT | read_only_udm.principal.user.userid | O valor é retirado do campo MYCACCT no registo não processado |
| NEWDEPARTMENT | read_only_udm.principal.user.department | Consulte a lógica do campo DEP |
| NEWUSER | Este campo não está mapeado para o UDM | |
| NSC | read_only_udm.additional.fields.nsc.value.string_value | O valor é retirado do campo NSC no registo não processado |
| OSUSR | read_only_udm.target.user.userid | O valor é retirado do campo OSUSR no registo não processado |
| PATIENT | read_only_udm.target.user.userid | O valor é retirado do campo PATIENT no registo não processado |
| PREVDEPARTMENT | read_only_udm.principal.user.department | Consulte a lógica do campo DEP |
| PREVPROVIDER | Este campo não está mapeado para o UDM | |
| PREVUSER | read_only_udm.principal.resource.attribute.labels.prev_user.value | O valor é retirado do campo PREVUSER no registo não processado |
| PWREASON | read_only_udm.metadata.description | O valor é retirado do campo PWREASON no registo não processado |
| FUNÇÃO | read_only_udm.principal.user.attribute.roles.name | O valor é retirado do campo ROLE no registo não processado |
| recurso | read_only_udm.target.hostname | O valor é retirado do campo de recurso no registo não processado |
| SERVICEID | read_only_udm.additional.fields.service_id.value.string_value | O valor é retirado do campo SERVICEID no registo não processado |
| SERVICECATEGORY | read_only_udm.additional.fields.service_category.value.string_value | O valor é retirado do campo SERVICECATEGORY no registo não processado |
| SERVICEMSGID | Este campo não está mapeado para o UDM | |
| SERVICENAME | read_only_udm.target.resource.name | O valor é retirado do campo SERVICENAME no registo não processado |
| SERVICETYPE | read_only_udm.target.resource.type | O valor é retirado do campo SERVICETYPE no registo não processado. Se event_id for PHI_CLIENT_FILE, o valor é definido como FILE |
| SERVICE_USER | read_only_udm.target.user.userid | O valor é retirado do campo SERVICE_USER no registo não processado |
| SERVICE_USERTYP | read_only_udm.additional.fields.service_user_type.value.string_value | O valor é retirado do campo SERVICE_USERTYP no registo não processado |
| sev | read_only_udm.security_result.severity | O valor é retirado do campo sev no registo não processado e mapeado para LOW, HIGH ou CRITICAL com base no valor |
| shost | read_only_udm.target.resource.attribute.labels.workstation_type.value | O valor é retirado do campo shost no registo não processado |
| ORIGEM | read_only_udm.additional.fields.login_source.value.string_value | O valor é retirado do campo SOURCE no registo não processado |
| ÊXITO | read_only_udm.additional.fields.success_yes_no.value.string_value | O valor é retirado do campo SUCCESS no registo não processado |
| TIMEOUT | read_only_udm.additional.fields.time_out.value.string_value | O valor é retirado do campo TIMEOUT no registo não processado |
| UID | read_only_udm.principal.user.userid | O valor é retirado do campo UID no registo não processado |
| USERJOB | Este campo não está mapeado para o UDM | |
| usrName | read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name | Se existirem campos UID ou LOGIN_LDAP_ID no registo não processado, usrName é usado para read_only_udm.principal.user.user_display_name e o outro campo é usado para read_only_udm.principal.user.userid. Caso contrário, usrName é usado para read_only_udm.principal.user.userid |
| WEBLGAPP | read_only_udm.target.application | O valor é retirado do campo WEBLGAPP no registo não processado |
| read_only_udm.extensions.auth.type | O valor é definido como SSO se LOGIN_LDAP_ID não estiver vazio. Caso contrário, o valor é definido como AUTHTYPE_UNSPECIFIED. |
|
| read_only_udm.intermediary.ip | O valor está definido para o endereço IP da origem do registo. | |
| read_only_udm.metadata.event_type | O valor é definido como RESOURCE_READ se event_id for um dos seguintes: IC_SERVICE_AUDIT, AC_BREAK_THE_GLASS_FAILED_ACCESS, AC_BREAK_THE_GLASS_INAPPROPRIATE_ATTEMPT, AC_BREAK_THE_GLASS_ACCESS ou MCMEMEDISA, e target_ip_set for true ou resource não estiver vazio. O valor é definido como USER_LOGIN se event_id for um dos seguintes: 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 ou WPSEC_LOGIN_SUCCESS, e pelo menos um dos seguintes: target_ip_set, resource, SERVICENAME, SERVICETYPE ou shost não estiver vazio. O valor é definido como USER_CHANGE_PASSWORD se event_id for um dos seguintes: E_ADMINPASSWORDCHANGE, E_FAILEDPASSWORDCHANGE, E_SELFPASSWORDCHANGE, WPSEC_USER_PASSWORD_CHANGE_FAIL ou WPSEC_USER_PASSWORD_CHANGE. O valor é definido como USER_UNCATEGORIZED se event_id for CONTEXTCHANGE. O valor é definido como USER_RESOURCE_ACCESS se event_id for um dos seguintes: SECURE, UNSECURE, MASKED_DATA_DISPLAY ou MASKED_DATA_PRINTING. O valor é definido como USER_RESOURCE_UPDATE_CONTENT se event_id for PHI_CLIENT_FILE. O valor é definido como STATUS_UPDATE se CLIENTNAME não estiver vazio. O valor é definido como USER_UNCATEGORIZED se prin_usr_id não estiver vazio. Caso contrário, o valor é definido como GENERIC_EVENT. |
|
| read_only_udm.metadata.log_type | O valor está definido como EPIC. |
|
| read_only_udm.metadata.product_name | O valor está definido como Epic Systems. |
|
| read_only_udm.metadata.vendor_name | O valor está definido como EPIC. |
|
| read_only_udm.network.ip_protocol | O valor é derivado do campo proto no registo não processado e mapeado para o nome do protocolo IP correspondente. | |
| read_only_udm.principal.resource.attribute.labels.workstation_type.key | O valor está definido como Workstation ID/Type. |
|
| read_only_udm.principal.resource.attribute.labels.prev_user.key | O valor está definido como Prev User. |
|
| read_only_udm.security_result.action | O valor é definido como BLOCK se existirem os campos ERRMSG ou LOGINERROR no registo não processado. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.