Raccogli i log di ManageEngine ADAudit Plus
Questo documento spiega come importare i log di ManageEngine ADAudit Plus in Google Security Operations utilizzando un agente Bindplane. Il parser gestisce i log di ADAudit Plus, convertendoli nel formato UDM. Utilizza pattern grok per estrarre i campi dai messaggi formattati in formato SYSLOG (CEF) e coppia chiave-valore, mappandoli ai campi UDM in base ai tipi di eventi derivati dai profili di avviso e report e arricchendo i dati con un contesto aggiuntivo. Il parser gestisce anche scenari specifici come errori di accesso, modifiche degli utenti e modifiche dei file, modificando di conseguenza la mappatura UDM.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di utilizzare Windows 2016 o versioni successive oppure un host Linux con
systemd. - Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.
- Assicurati di disporre dell'accesso con privilegi a ManageEngine ADAudit.
Ottieni le credenziali di Google SecOps per l'agente Bindplane
Per autenticare l'agente Bindplane in Google SecOps, scegli uno dei seguenti metodi:
- Nuovi deployment: utilizza l'API Chronicle (opzione 1).
- Deployment legacy: continua a utilizzare il file di autenticazione dell'acquisizione (opzione 2) fino al ritiro dell'API Ingestion il 20 luglio 2027.
Opzione 1: crea un account di servizio per l'API Chronicle (consigliata)
- Accedi alla consoleGoogle Cloud e seleziona il progetto Google Cloud collegato alla tua istanza Google SecOps.
- Vai a IAM e amministrazione > Service account.
- Fai clic su Crea service account.
- Fornisci i seguenti dettagli di configurazione:
- Nome service account: inserisci un nome per l'account (ad esempio,
bindplane-ingest). - Descrizione service account: inserisci una descrizione (ad esempio
Bindplane agent log ingestion).
- Nome service account: inserisci un nome per l'account (ad esempio,
- Fai clic su Crea e continua.
- Nella sezione Concedi a questo account di servizio l'accesso al progetto, fai clic su Seleziona un ruolo e seleziona Chronicle Editor.
- Fai clic su Continua e poi su Fine.
- Fai clic sul account di servizio che hai creato, quindi vai alla scheda Chiavi.
- Fai clic su Aggiungi chiave > Crea nuova chiave.
- Seleziona JSON e fai clic su Crea. Il file della chiave viene scaricato sul tuo computer.
- Salva il file della chiave come
ingestion-auth.jsonnella directory del raccoglitore Bindplane (/opt/observiq-otel-collector/ingestion-auth.jsonsu Linux oC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonsu Windows) oppure aggiornacreds_file_pathinconfig.yamlin modo che corrisponda al percorso in cui lo salvi. - Vai a IAM e amministrazione > Impostazioni e copia il numero di progetto. Ti servirà per la configurazione dell'esportatore.
Opzione 2: scarica il file di autenticazione dell'acquisizione (legacy)
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'acquisizione.
- Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.
Ottieni l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installazione di finestre
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Risorse aggiuntive per l'installazione
- Per ulteriori opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
Accedi al file di configurazione:
- Individua il file
config.yaml. In genere si trova nella directory/opt/observiq-otel-collector/su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano,vio Blocco note).
- Individua il file
Modifica il file
config.yamlcome segue: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_labelsSostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
Sostituisci
<LOCATION>con la regione della tua istanza Google SecOps (ad esempious,europeoasia-southeast1). L'esportatore anteponechronicle.googleapis.coma questo valore.Sostituisci
<PROJECT_NUMBER>con il numero di progetto indicato in IAM e amministrazione > Impostazioni.Sostituisci
<customer_id>con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.jsoncon il percorso in cui è stato salvato il file della chiave del account di servizio (Opzione 1) nella sezione Ottieni le credenziali di Google SecOps per l'agente Bindplane.
Esportatore API di importazione legacy
Se utilizzi il file di autenticazione dell'acquisizione dell'Opzione 2, sostituisci il blocco
exporterscon il seguente. Impostacredssul percorso del file di autenticazione dell'acquisizione e, se l'istanza si trova al di fuori degli Stati Uniti, sostituiscimalachiteingestion-pa.googleapis.comcon il tuo endpoint regionale (ad esempio,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
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart bindplane-agentPer riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurazione di ManageEngine ADAudit Plus Syslog
- Accedi alla UI web di ManageEngine ADAudit Plus.
- Vai ad Amministrazione > Configurazione > Integrazione SIEM.
- Seleziona Attiva per inviare i log di ADAudit Plus.
- Seleziona il formato ArcSight (CEF).
- Fornisci i seguenti dettagli di configurazione:
- Indirizzo IP: l'indirizzo IP dell'agente Bindplane.
- Port: numero di porta Bindplane, ad esempio
514per UDP. - Tipo di target: seleziona UDP (puoi selezionare anche TCP, a seconda della configurazione dell'agente Bindplane).
- Fai clic su Salva.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
ACCOUNT_DOMAIN |
principal.administrative_domain |
Il valore di ACCOUNT_DOMAIN del log non elaborato viene assegnato a questo campo UDM. |
ACCOUNT_NAME |
principal.user.userid |
Il valore di ACCOUNT_NAME del log non elaborato viene assegnato a questo campo UDM. |
ALERT_PROFILE |
security_result.summary |
Il valore di ALERT_PROFILE del log non elaborato viene assegnato a questo campo UDM. |
APPLICATION_NAME |
target.resource.name |
Il valore di APPLICATION_NAME del log non elaborato viene assegnato a questo campo UDM. Imposta anche target.resource.resource_type su TASK e has_target_resource su true. |
CALLER_DISPLAY_NAME |
target.user.user_display_name |
Il valore di CALLER_DISPLAY_NAME del log non elaborato viene assegnato a questo campo UDM. |
CALLER_USER_NAME |
target.user.userid |
Il valore di CALLER_USER_NAME del log non elaborato viene assegnato a questo campo UDM. |
CALLER_USER_SID |
target.group.windows_sid |
Il valore di CALLER_USER_SID del log non elaborato viene assegnato a questo campo UDM dopo la rimozione dei caratteri [%,{,}]. Questa operazione viene eseguita solo se il valore corrisponde a un pattern SID di Windows. |
Category |
metadata.product_event_type |
Il valore di Category del log non elaborato viene assegnato a questo campo UDM. |
CLIENT_HOST_NAME |
target.hostname, target.asset.hostname |
Il valore di CLIENT_HOST_NAME del log non elaborato viene assegnato a questi campi UDM. |
CLIENT_IP_ADDRESS |
target.ip, target.asset.ip |
Il valore di CLIENT_IP_ADDRESS del log non elaborato viene assegnato a questi campi UDM dopo aver verificato che si tratta di un indirizzo IP valido. |
CLIENT_PORT |
target.port |
Il valore di CLIENT_PORT del log non elaborato viene assegnato a questo campo UDM dopo la conversione in un numero intero. |
DOMAIN |
target.administrative_domain |
Il valore di DOMAIN del log non elaborato viene assegnato a questo campo UDM. Questo valore potrebbe essere sovrascritto in un secondo momento da ACCOUNT_DOMAIN, se presente. |
FILE_LOCATION |
target.file.full_path |
Il valore di FILE_LOCATION del log non elaborato viene assegnato a questo campo UDM. |
FILE_NAME |
target.file.full_path |
Il valore di FILE_NAME del log non elaborato viene assegnato a questo campo UDM se FILE_LOCATION non è presente. |
FORMAT_MESSAGE |
security_result.description |
Il valore di FORMAT_MESSAGE del log non elaborato viene assegnato a questo campo UDM. Alcune parti di questo campo potrebbero essere utilizzate per compilare altri campi UDM e poi rimosse dalla descrizione. |
IP |
principal.ip, principal.asset.ip |
Il valore di IP del log non elaborato viene assegnato a questi campi UDM dopo aver verificato che si tratta di un indirizzo IP valido. |
loggerHost |
intermediary.hostname, intermediary.asset.hostname |
Il valore di loggerHost estratto dal campo del messaggio del log non elaborato viene assegnato a questi campi UDM. |
login_name |
target.user.userid, target.user.email_addresses o target.user.user_display_name |
Se il valore contiene @, viene trattato come un indirizzo email. Se contiene spazi, viene trattato come un nome visualizzato. In caso contrario, viene trattato come un ID utente. Imposta anche event_type su USER_LOGIN, extensions.auth.type su MACHINE e extensions.auth.mechanism su USERNAME_PASSWORD. |
RECORD_NUMBER |
principal.process.pid |
Il valore di RECORD_NUMBER del log non elaborato viene assegnato a questo campo UDM. |
REPORT_PROFILE |
metadata.description |
Il valore di REPORT_PROFILE del log non elaborato viene assegnato a questo campo UDM. |
SEVERITY |
security_result.severity |
Il valore di SEVERITY determina il valore di questo campo UDM: 1 corrisponde a BASSA, 2 a MEDIA e 3 ad ALTA. |
SOURCE |
principal.hostname, principal.asset.hostname |
Il valore di SOURCE del log non elaborato, combinato con DOMAIN se SOURCE non contiene una parte di dominio, viene assegnato a questi campi UDM. Imposta anche has_principal_host su true. |
TIME_GENERATED |
metadata.event_timestamp.seconds |
Il valore di TIME_GENERATED del log non elaborato viene utilizzato come timestamp dell'evento. |
UNIQUE_ID |
metadata.product_log_id |
Il valore di UNIQUE_ID del log non elaborato viene assegnato a questo campo UDM. |
USERNAME |
principal.user.userid |
Il valore di USERNAME del log non elaborato viene assegnato a questo campo UDM se ACCOUNT_NAME non è presente. |
USER_OU_GUID |
metadata.product_log_id |
Il valore di USER_OU_GUID del log non elaborato, dopo aver rimosso le parentesi graffe, viene assegnato a questo campo UDM se UNIQUE_ID non è presente. |
access_mode |
security_result.detection_fields.value |
Il valore di access_mode del log non elaborato viene assegnato a questo campo UDM, con la chiave impostata su ACCESS_MODE. |
action_name |
security_result.description |
Il valore di action_name del log non elaborato viene assegnato a questo campo UDM. |
domain_name |
principal.administrative_domain |
Il valore di domain_name del log non elaborato viene assegnato a questo campo UDM. |
event.idm.read_only_udm.extensions.auth.mechanism |
event.idm.read_only_udm.extensions.auth.mechanism |
Imposta su USERNAME_PASSWORD se login_name è presente o se event_type è USER_LOGIN. |
event.idm.read_only_udm.extensions.auth.type |
event.idm.read_only_udm.extensions.auth.type |
Imposta su MACHINE se login_name è presente o se event_type è USER_LOGIN. |
event.idm.read_only_udm.metadata.event_type |
event.idm.read_only_udm.metadata.event_type |
Determinato dal parser in base ai valori di ALERT_PROFILE, REPORT_PROFILE e FORMAT_MESSAGE. Può essere uno dei diversi valori, tra cui 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 o STATUS_UPDATE. |
event.idm.read_only_udm.metadata.log_type |
event.idm.read_only_udm.metadata.log_type |
Sempre impostato su ADAUDIT_PLUS. |
event.idm.read_only_udm.metadata.product_name |
event.idm.read_only_udm.metadata.product_name |
Impostato sempre su ADAudit Plus. |
event.idm.read_only_udm.metadata.vendor_name |
event.idm.read_only_udm.metadata.vendor_name |
Impostato sempre su Zoho Corporation. |
host |
principal.hostname, principal.asset.hostname |
Il valore di host del log non elaborato viene assegnato a questi campi UDM. Imposta anche has_principal_host su true. |
intermediary.hostname, intermediary.asset.hostname |
intermediary.hostname, intermediary.asset.hostname |
Impostata sul valore di loggerHost. |
principalHost |
principal.hostname, principal.asset.hostname |
Il valore di principalHost del log non elaborato viene assegnato a questi campi UDM dopo aver verificato se si tratta di un IP. Imposta anche has_principal_host su true. |
security_result.action |
security_result.action |
Imposta su ALLOW se outcome o msg_data_2 contiene Success o se FORMAT_MESSAGE contiene Status:Success. Imposta su BLOCK se status contiene denied, locked out, incorrect, does not meet o Unable to validate. Impostalo su BLOCK se ALERT_PROFILE è Logon Failures for Admin Users. |
security_result.category |
security_result.category |
Imposta su POLICY_VIOLATION se event_type è USER_STATS o se ALERT_PROFILE è Logon Failures for Admin Users. |
security_result.rule_name |
security_result.rule_name |
Estratto dal campo FORMAT_MESSAGE se contiene Reason:. |
status |
security_result.summary |
Il valore di status del log non elaborato viene assegnato a questo campo UDM. |
targetHost |
target.hostname, target.asset.hostname o target.ip, target.asset.ip |
Il valore di targetHost del log non elaborato viene assegnato a questi campi UDM dopo aver verificato se si tratta di un IP. |
targetUser |
target.user.userid |
Il valore di targetUser del log non elaborato viene assegnato a questo campo UDM. |
_CNtargetUser |
target.user.user_display_name |
Il valore di _CNtargetUser del log non elaborato viene assegnato a questo campo UDM. |
_user |
principal.user.userid o target.user.userid |
Il valore di _user del log non elaborato viene assegnato a principal.user.userid, a meno che event_type non sia USER_CHANGE_PASSWORD, nel qual caso viene assegnato a target.user.userid. |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.