Coletar registros do ManageEngine ADAudit Plus
Este documento explica como transferir os registros do ManageEngine ADAudit Plus para as operações de segurança do Google usando um agente do Bindplane. O analisador processa os registros do ADAudit Plus, convertendo-os no formato UDM. Ele usa padrões grok para extrair campos de SYSLOG (CEF) e mensagens formatadas com chave-valor, mapeando-os para campos do UDM com base em tipos de eventos derivados de alertas e perfis de relatórios, além de enriquecer os dados com mais contexto. O analisador também lida com cenários específicos, como falhas de login, mudanças de usuário e modificações de arquivo, ajustando o mapeamento do UDM de acordo.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado ao ManageEngine ADAudit.
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do Bindplane
Instalação do Windows
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este 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 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
- Para mais opções de instalação, consulte este guia de instalação.
Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o arquivo usando um editor de texto (por exemplo,
nano
,vi
ou Notepad).
- Localize o arquivo
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: 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 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 real do cliente.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de transferência do Google SecOps.
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 Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Como configurar o Syslog do ManageEngine ADAudit Plus
- Faça login na UI da Web do ManageEngine ADAudit Plus.
- Acesse Administrador > Configuração > Integração do SIEM.
- Selecione Ativar para enviar os registros do ADAudit Plus.
- Selecione o formato ArcSight (CEF).
- 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 segmentação: selecione UDP. Também é possível selecionar TCP, dependendo da configuração do agente do Bindplane.
- Clique em Salvar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do 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ó é feito se o valor corresponder a um padrão 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 do 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 se ele é um endereço IP válido. |
CLIENT_PORT |
target.port |
O valor de CLIENT_PORT do registro bruto é atribuído a esse campo do UDM após a conversão 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 mais tarde 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 é 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 depois 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 se ele é 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 userid. 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 desse campo do UDM: 1 corresponde a BAIXO, 2 a MÉDIO e 3 a ALTO. Também define is_significant como verdadeiro se SEVERITY for 3 e como falso caso contrário. |
SOURCE |
principal.hostname , principal.asset.hostname |
O valor de SOURCE do registro bruto, combinado com DOMAIN , se SOURCE não tiver uma parte de domínio, é atribuído a esses campos do UDM. Também define has_principal_host como verdadeiro. |
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 é 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, após a remoção dos colchetes, é atribuído a esse campo do 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.is_alert |
event.idm.is_alert |
Defina como "true" se ALERT_PROFILE for Alert , User Account Locked Out ou corresponder a Unusual Activity.*? . Caso contrário, defina como falso. |
event.idm.is_significant |
event.idm.is_significant |
Definido como verdadeiro se SEVERITY for 3. Caso contrário, defina como falso. |
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 destes valores: 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 do 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 após a verificação de se ele é 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 contiverem 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ídos 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 após a verificação de se ele é 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 . |
Alterações
2025-02-19
Melhoria:
EVENT_NUMBER
,REMARKS
,EVENT_TYPE
,ATTRIBUTES_NEW_VALUE
,ATTRIBUTES_OLD_VALUE
eOPERATION_TYPE
foram mapeados paraadditional.fields
.EVENT_TYPE_TEXT
foi mapeado parasecurity_result.detection_fields
.ACCOUNT_NAME
foi mapeado paraprincipal.user.user_display_name
.
2024-05-20
Melhoria:
- Se o valor do campo
outcome
for semelhante aSuccess
, definasecurity_result.action
comoALLOW
. - Se o valor do campo
msg_data
for semelhante aSuccess
, definasecurity_result.action
comoALLOW
. - Um padrão Grok foi adicionado a
msg_data
para extrairact
,suid
ereason
. msg_data
foi mapeado parasecurity_result.description
.- Mapeamos
cs1
,cs3
,cs4
,cs5
,cn1
,cn2
ecn3
paraadditional.fields
.
2024-01-19
Melhoria:
- Um padrão Grok foi modificado para analisar registros não analisados.
IP
foi mapeado paraprincipal.asset.ip
._PrincipalIP
foi mapeado paraprincipal.asset.ip
.host
foi mapeado paraprincipal.asset.hostname
.principalHost
foi mapeado paraprincipal.asset.hostname
.SOURCE
foi mapeado paraprincipal.asset.hostname
._TargetIP
foi mapeado paratarget.asset.ip
.CLIENT_IP_ADDRESS
foi mapeado paratarget.asset.hostname
.CLIENT_HOST_NAME
foi mapeado paratarget.asset.hostname
.targetHost
foi mapeado paratarget.asset.hostname
.
2023-10-17
Correção de bugs:
- Foi adicionada uma verificação de IP antes do mapeamento de
IP
paraprincipal.ip
. - Foi adicionada uma verificação de IP antes do mapeamento de
CLIENT_IP_ADDRESS
paratarget.ip
. - Foi adicionada uma verificação de validação para
ACCOUNT_SID
antes do mapeamento paraprincipal.group.windows_sid
. - Foi adicionada uma verificação de validação para
CALLER_USER_SID
antes do mapeamento paratarget.group.windows_sid
. - Quando
principal
estiver presente, definaevent_type
comoSTATUS_UPDATE
. - Um padrão Grok foi modificado para analisar
file_path
a partir do novo padrão deFORMAT_MESSAGE
. - Foi adicionada uma verificação de
has_target_resource
quandoevent_type
éSCHEDULED_TASK_CREATION
.
2023-03-17
Melhoria:
- Registros de formato CEF com suporte e mapeados para os seguintes campos:
IP
mapeado paraprincipal.ip
.LOGIN NAME
mapeado paratarget.user.userid or target.user.email_addresses or target.user.user_display_name
.DOMAIN NAME
mapeado paraprincipal.administrative_domain
.HOST
mapeado paraprincipal.hostname
.ACCESS_MODE
mapeado parasecurity_result.detection_fields
.STATUS
mapeado parasecurity_result.summary
.- Se
STATUS
forsuccess
,security_result.action
será mapeado paraALLOW
. SeSTATUS
fordenied or incorrect
,security_result.action
será mapeado paraBLOCK
.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.