Coletar registros do ManageEngine ADAudit Plus

Compatível com:

Neste documento, explicamos como ingerir registros do ManageEngine ADAudit Plus no Google Security Operations usando um agente do Bindplane. O analisador processa os registros do ADAudit Plus, convertendo-os para o formato UDM. Ele usa padrões grok para extrair campos de mensagens formatadas em SYSLOG (CEF) e chave-valor, mapeando-os para campos UDM com base em tipos de eventos derivados de perfis de alerta e perfil para checagem, além de enriquecer os dados com contexto adicional. O analisador também lida com cenários específicos, como falhas de login, mudanças de usuário e modificações de arquivos, ajustando o mapeamento de UDM de acordo.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Use o Windows 2016 ou posterior ou um host Linux com systemd.
  • Se estiver executando atrás de um proxy, verifique se as portas do firewall estão abertas.
  • Verifique se você tem acesso privilegiado ao ManageEngine ADAudit.

Receber credenciais do Google SecOps para o agente do BindPlane

Para autenticar o agente do Bindplane no Google SecOps, escolha um dos seguintes métodos:

  • Novas implantações: use a API Chronicle (opção 1).
  • Implantações legadas: continue usando o arquivo de autenticação de ingestão (opção 2) até que a API Ingestion seja descontinuada em 20 de julho de 2027.
  1. Faça login no consoleGoogle Cloud e selecione o projeto Google Cloud vinculado à sua instância do Google SecOps.
  2. Acesse IAM e administrador > Contas de serviço.
  3. Clique em Criar conta de serviço.
  4. Informe os seguintes detalhes de configuração:
    • Nome da conta de serviço: insira um nome para a conta (por exemplo, bindplane-ingest).
    • Descrição da conta de serviço: insira uma descrição (por exemplo, Bindplane agent log ingestion).
  5. Clique em Criar e continuar.
  6. Na seção Conceder a essa conta de serviço acesso ao projeto, clique em Selecionar um papel e escolha Editor do Chronicle.
  7. Clique em Continuar e depois em Concluído.
  8. Clique na conta de serviço que você criou e acesse a guia Chaves.
  9. Clique em Adicionar chave > Criar nova chave.
  10. Selecione JSON e clique em Criar. O download do arquivo de chave é feito no seu computador.
  11. Salve o arquivo de chave como ingestion-auth.json no diretório do coletor do BindPlane (/opt/observiq-otel-collector/ingestion-auth.json no Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json no Windows) ou atualize creds_file_path em config.yaml para corresponder ao caminho em que você o salvou.
  12. Acesse IAM e administrador > Configurações e copie o Número do projeto. Você vai precisar dele para configurar o exportador.

Opção 2: fazer o download do arquivo de autenticação de ingestão (legado)

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Faça o download do arquivo de autenticação de ingestão.
  4. Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID de cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Windows

  1. Abra o prompt de comando ou o PowerShell como administrador.
  2. Execute este 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 root ou sudo.
  2. Execute este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Outros recursos de instalação

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele fica no diretório /opt/observiq-otel-collector/ no Linux ou no diretório de instalação no Windows.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo 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:
            protocol: https
            # Region of your instance, for example us, europe, asia-southeast1
            location: <LOCATION>
            # Project number of the Google Cloud project linked to the instance
            project: '<PROJECT_NUMBER>'
            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: chronicle.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: ADAUDIT_PLUS
                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 <LOCATION> pela região da sua instância do Google SecOps (por exemplo, us, europe ou asia-southeast1). O exportador prefixa chronicle.googleapis.com com esse valor.

  5. Substitua <PROJECT_NUMBER> pelo número do projeto em IAM e administrador > Configurações.

  6. Substitua <customer_id> pelo ID do cliente real.

  7. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de chave da conta de serviço (opção 1) foi salvo na seção Receber credenciais do Google SecOps para o agente do Bindplane.

Exportador da API de ingestão legada

  • Se você usar o arquivo de autenticação de ingestão da Opção 2, substitua o bloco exporters pelo seguinte. Defina creds como o caminho para o arquivo de autenticação de ingestão e, se a instância estiver fora dos EUA, substitua malachiteingestion-pa.googleapis.com pelo endpoint regional (por exemplo, europe-malachiteingestion-pa.googleapis.com).

    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: ADAUDIT_PLUS
                raw_log_field: body
    

Reinicie o agente do Bindplane para aplicar as mudanças.

  • 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, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Como configurar o Syslog do ManageEngine ADAudit Plus

  1. Faça login na UI da Web do ManageEngine ADAudit Plus.
  2. Acesse Admin > Configuration > SIEM Integration.
  3. Selecione Ativar para enviar os registros do ADAudit Plus.
  4. Selecione o formato ArcSight (CEF).
  5. Informe os seguintes detalhes de configuração:
    • Endereço IP: endereço IP do agente do BindPlane.
    • Porta: número da porta do Bindplane, por exemplo, 514 para UDP.
    • Tipo de destino: selecione UDP (também é possível selecionar TCP, dependendo da configuração do agente do BindPlane).
  6. Clique em Salvar.

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
ACCOUNT_DOMAIN principal.administrative_domain O valor de ACCOUNT_DOMAIN do registro bruto é atribuído a esse campo do UDM.
ACCOUNT_NAME principal.user.userid O valor de ACCOUNT_NAME do registro bruto é atribuído a esse campo do UDM.
ALERT_PROFILE security_result.summary O valor de ALERT_PROFILE do registro bruto é atribuído a esse campo do UDM.
APPLICATION_NAME target.resource.name O valor de APPLICATION_NAME do registro bruto é atribuído a esse campo do UDM. Também define target.resource.resource_type como TASK e has_target_resource como verdadeiro.
CALLER_DISPLAY_NAME target.user.user_display_name O valor de CALLER_DISPLAY_NAME do registro bruto é atribuído a esse campo do UDM.
CALLER_USER_NAME target.user.userid O valor de CALLER_USER_NAME do registro bruto é atribuído a esse campo do UDM.
CALLER_USER_SID target.group.windows_sid O valor de CALLER_USER_SID do registro bruto é atribuído a esse campo do UDM após a remoção dos caracteres [%,{,}]. Isso só será feito se o valor corresponder a um padrão de SID do Windows.
Category metadata.product_event_type O valor de Category do registro bruto é atribuído a esse campo do UDM.
CLIENT_HOST_NAME target.hostname, target.asset.hostname O valor de CLIENT_HOST_NAME do registro bruto é atribuído a esses campos da UDM.
CLIENT_IP_ADDRESS target.ip, target.asset.ip O valor de CLIENT_IP_ADDRESS do registro bruto é atribuído a esses campos do UDM depois de validar que é um endereço IP válido.
CLIENT_PORT target.port O valor de CLIENT_PORT do registro bruto é atribuído a esse campo da UDM depois de ser convertido em um número inteiro.
DOMAIN target.administrative_domain O valor de DOMAIN do registro bruto é atribuído a esse campo do UDM. Esse valor pode ser substituído posteriormente por ACCOUNT_DOMAIN, se presente.
FILE_LOCATION target.file.full_path O valor de FILE_LOCATION do registro bruto é atribuído a esse campo do UDM.
FILE_NAME target.file.full_path O valor de FILE_NAME do registro bruto será atribuído a esse campo do UDM se FILE_LOCATION não estiver presente.
FORMAT_MESSAGE security_result.description O valor de FORMAT_MESSAGE do registro bruto é atribuído a esse campo do UDM. Partes desse campo podem ser usadas para preencher outros campos do UDM e, em seguida, removidas da descrição.
IP principal.ip, principal.asset.ip O valor de IP do registro bruto é atribuído a esses campos do UDM depois de validar que é um endereço IP válido.
loggerHost intermediary.hostname, intermediary.asset.hostname O valor de loggerHost extraído do campo de mensagem do registro bruto é atribuído a esses campos do UDM.
login_name target.user.userid, target.user.email_addresses ou target.user.user_display_name Se o valor contiver @, ele será tratado como um endereço de e-mail. Se ele tiver espaços, será tratado como um nome de exibição. Caso contrário, ele é tratado como um user_id. Também define event_type como USER_LOGIN, extensions.auth.type como MACHINE e extensions.auth.mechanism como USERNAME_PASSWORD.
RECORD_NUMBER principal.process.pid O valor de RECORD_NUMBER do registro bruto é atribuído a esse campo do UDM.
REPORT_PROFILE metadata.description O valor de REPORT_PROFILE do registro bruto é atribuído a esse campo do UDM.
SEVERITY security_result.severity O valor de SEVERITY determina o valor deste campo do UDM: 1 corresponde a BAIXO, 2 a MÉDIO e 3 a ALTO.
SOURCE principal.hostname, principal.asset.hostname O valor de SOURCE do registro bruto, combinado com DOMAIN se SOURCE não contiver uma parte de domínio, será atribuído a esses campos da UDM. Também define has_principal_host como "true".
TIME_GENERATED metadata.event_timestamp.seconds O valor de TIME_GENERATED do registro bruto é usado como o carimbo de data/hora do evento.
UNIQUE_ID metadata.product_log_id O valor de UNIQUE_ID do registro bruto é atribuído a esse campo do UDM.
USERNAME principal.user.userid O valor de USERNAME do registro bruto será atribuído a esse campo do UDM se ACCOUNT_NAME não estiver presente.
USER_OU_GUID metadata.product_log_id O valor de USER_OU_GUID do registro bruto, depois de remover as chaves, é atribuído a esse campo da UDM se UNIQUE_ID não estiver presente.
access_mode security_result.detection_fields.value O valor de access_mode do registro bruto é atribuído a esse campo do UDM, com a chave definida como ACCESS_MODE.
action_name security_result.description O valor de action_name do registro bruto é atribuído a esse campo do UDM.
domain_name principal.administrative_domain O valor de domain_name do registro bruto é atribuído a esse campo do UDM.
event.idm.read_only_udm.extensions.auth.mechanism event.idm.read_only_udm.extensions.auth.mechanism Defina como USERNAME_PASSWORD se login_name estiver presente ou se event_type for USER_LOGIN.
event.idm.read_only_udm.extensions.auth.type event.idm.read_only_udm.extensions.auth.type Defina como MACHINE se login_name estiver presente ou se event_type for USER_LOGIN.
event.idm.read_only_udm.metadata.event_type event.idm.read_only_udm.metadata.event_type Determinado pelo analisador com base nos valores de ALERT_PROFILE, REPORT_PROFILE e FORMAT_MESSAGE. Pode ser um de vários valores, incluindo USER_CHANGE_PERMISSIONS, USER_STATS, USER_LOGIN, USER_CHANGE_PASSWORD, SETTING_MODIFICATION, FILE_DELETION, FILE_MODIFICATION, STATUS_SHUTDOWN, SCHEDULED_TASK_CREATION, FILE_READ, NETWORK_CONNECTION, GENERIC_EVENT, USER_UNCATEGORIZED ou STATUS_UPDATE.
event.idm.read_only_udm.metadata.log_type event.idm.read_only_udm.metadata.log_type Sempre defina como ADAUDIT_PLUS.
event.idm.read_only_udm.metadata.product_name event.idm.read_only_udm.metadata.product_name Sempre defina como ADAudit Plus.
event.idm.read_only_udm.metadata.vendor_name event.idm.read_only_udm.metadata.vendor_name Sempre defina como Zoho Corporation.
host principal.hostname, principal.asset.hostname O valor de host do registro bruto é atribuído a esses campos da UDM. Também define has_principal_host como verdadeiro.
intermediary.hostname, intermediary.asset.hostname intermediary.hostname, intermediary.asset.hostname Defina como o valor de loggerHost.
principalHost principal.hostname, principal.asset.hostname O valor de principalHost do registro bruto é atribuído a esses campos do UDM depois de verificar se é um IP. Também define has_principal_host como verdadeiro.
security_result.action security_result.action Defina como ALLOW se outcome ou msg_data_2 contiver Success ou se FORMAT_MESSAGE contiver Status:Success. Defina como BLOCK se status contiver denied, locked out, incorrect, does not meet ou Unable to validate. Defina como BLOCK se ALERT_PROFILE for Logon Failures for Admin Users.
security_result.category security_result.category Defina como POLICY_VIOLATION se event_type for USER_STATS ou se ALERT_PROFILE for Logon Failures for Admin Users.
security_result.rule_name security_result.rule_name Extraído do campo FORMAT_MESSAGE se ele contiver Reason:.
status security_result.summary O valor de status do registro bruto é atribuído a esse campo do UDM.
targetHost target.hostname, target.asset.hostname ou target.ip, target.asset.ip O valor de targetHost do registro bruto é atribuído a esses campos do UDM depois de verificar se é um IP.
targetUser target.user.userid O valor de targetUser do registro bruto é atribuído a esse campo do UDM.
_CNtargetUser target.user.user_display_name O valor de _CNtargetUser do registro bruto é atribuído a esse campo do UDM.
_user principal.user.userid ou target.user.userid O valor de _user do registro bruto é atribuído a principal.user.userid, a menos que event_type seja USER_CHANGE_PASSWORD. Nesse caso, ele é atribuído a target.user.userid.

Registro de alterações

Confira o registro de alterações deste analisador

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.