Recolha registos de sistemas da Epic

Compatível com:

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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. 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

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. 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.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. 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
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID de cliente real.

  5. 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

  1. Inicie sessão na consola da Epic Systems.
  2. Aceda a Iniciar > Epic > Interconnect > <your instance> > Editor de configuração.
  3. Selecione o formulário Serviços empresariais.
  4. No separador Categoria de serviço, selecione SendSIEMSyslogAudit.
  5. Clique em Guardar.

Configure os sistemas Epic para exportar o syslog

  1. Aceda a Definições do sistema Epic > Segurança > Opções de auditoria > Definições de syslog do SIEM.
  2. 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".
  3. No menu Definições de syslog do SIEM, selecione Syslog do SIEM.
  4. 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.