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
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yaml
da 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_labels
Substitua 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.json
para 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-agent
Para 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.