Raccogli i log di ManageEngine ADAudit Plus

Supportato in:

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.
  1. Accedi alla consoleGoogle Cloud e seleziona il progetto Google Cloud collegato alla tua istanza Google SecOps.
  2. Vai a IAM e amministrazione > Service account.
  3. Fai clic su Crea service account.
  4. 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).
  5. Fai clic su Crea e continua.
  6. Nella sezione Concedi a questo account di servizio l'accesso al progetto, fai clic su Seleziona un ruolo e seleziona Chronicle Editor.
  7. Fai clic su Continua e poi su Fine.
  8. Fai clic sul account di servizio che hai creato, quindi vai alla scheda Chiavi.
  9. Fai clic su Aggiungi chiave > Crea nuova chiave.
  10. Seleziona JSON e fai clic su Crea. Il file della chiave viene scaricato sul tuo computer.
  11. Salva il file della chiave come ingestion-auth.json nella directory del raccoglitore Bindplane (/opt/observiq-otel-collector/ingestion-auth.json su Linux o C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json su Windows) oppure aggiorna creds_file_path in config.yaml in modo che corrisponda al percorso in cui lo salvi.
  12. 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)

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione.
  4. Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.

Ottieni l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installazione di finestre

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

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

Installazione di Linux

  1. Apri un terminale con privilegi root o sudo.
  2. 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

Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps

  1. Accedi al file di configurazione:

    1. Individua il file config.yaml. In genere si trova nella directory /opt/observiq-otel-collector/ su Linux o nella directory di installazione su Windows.
    2. Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. Modifica il file config.yaml come 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_labels
    
  3. Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.

  4. Sostituisci <LOCATION> con la regione della tua istanza Google SecOps (ad esempio us, europe o asia-southeast1). L'esportatore antepone chronicle.googleapis.com a questo valore.

  5. Sostituisci <PROJECT_NUMBER> con il numero di progetto indicato in IAM e amministrazione > Impostazioni.

  6. Sostituisci <customer_id> con l'ID cliente effettivo.

  7. Aggiorna /path/to/ingestion-authentication-file.json con 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 exporters con il seguente. Imposta creds sul percorso del file di autenticazione dell'acquisizione e, se l'istanza si trova al di fuori degli Stati Uniti, sostituisci malachiteingestion-pa.googleapis.com con 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-agent
    
  • Per 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

  1. Accedi alla UI web di ManageEngine ADAudit Plus.
  2. Vai ad Amministrazione > Configurazione > Integrazione SIEM.
  3. Seleziona Attiva per inviare i log di ADAudit Plus.
  4. Seleziona il formato ArcSight (CEF).
  5. Fornisci i seguenti dettagli di configurazione:
    • Indirizzo IP: l'indirizzo IP dell'agente Bindplane.
    • Port: numero di porta Bindplane, ad esempio 514 per UDP.
    • Tipo di target: seleziona UDP (puoi selezionare anche TCP, a seconda della configurazione dell'agente Bindplane).
  6. 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.