Raccogliere i log di ManageEngine ADManager Plus
Questo documento spiega come importare i log di ManageEngine ADManager Plus in Google Security Operations utilizzando l'agente Bindplane.
ManageEngine ADManager Plus offre una soluzione basata sul web per la gestione semplificata di AD, inclusi la creazione e la modifica degli utenti, la sicurezza basata sui ruoli e report dettagliati. L'integrazione di ADManager Plus con i server Splunk e Syslog consente alle organizzazioni di inoltrare i log di tutte le azioni di gestione di Active Directory, Microsoft 365 e Google Workspace eseguite in ADManager Plus.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Windows Server 2016 o versioni successive oppure host Linux con
systemd - Connettività di rete tra l'agente Bindplane e ManageEngine ADManager Plus
- Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
- Accesso privilegiato alla console di gestione di ManageEngine ADManager Plus
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Fai clic su Scarica per scaricare il file di autenticazione dell'importazione.
Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.
Recuperare 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
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di finestre
- Apri Prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-otel-collector/releases/latest/download/observiq-otel-collector.msi" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo il comando:
sc query observiq-otel-collector
Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.
Installazione di Linux
- Apri un terminale con privilegi di root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-otel-collector/releases/latest/download/install_unix.sh)" install_unix.shAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo il comando:
sudo systemctl status observiq-otel-collector
Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la Guida all'installazione dell'agente Bindplane.
Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps
Individua il file di configurazione
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/admanager_plus: compression: gzip creds_file_path: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: malachiteingestion-pa.googleapis.com log_type: ADMANAGER_PLUS raw_log_field: body ingestion_labels: log_source: admanager_plus service: pipelines: logs/admanager_to_chronicle: receivers: - tcplog exporters: - chronicle/admanager_plusSostituisci i seguenti segnaposto:
Configurazione del ricevitore:
- Il ricevitore utilizza
tcplogper ricevere i dati syslog sulla porta TCP 514. listen_address: impostalo su0.0.0.0:514per ascoltare tutte le interfacce sulla porta 514.
- Il ricevitore utilizza
Configurazione dell'esportatore:
<CREDS_FILE_PATH>: percorso completo del file di autenticazione importazione:- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\\Program Files\\observIQ OpenTelemetry Collector\\ingestion-auth.json
- Linux:
<CUSTOMER_ID>: l'ID cliente del passaggio precedente.endpoint: URL endpoint regionale:- Stati Uniti:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Per un elenco completo, vedi Endpoint regionali.
- Stati Uniti:
log_type: imposta suADMANAGER_PLUSesattamente come appare in Chronicle.ingestion_labels: etichette facoltative in formato YAML.
Salvare il file di configurazione
Dopo la modifica, salva il file:
- Linux: premi
Ctrl+O, poiEntere infineCtrl+X. - Windows: fai clic su File > Salva.
Riavvia l'agente Bindplane per applicare le modifiche
Linux
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla i log per individuare eventuali errori:
sudo journalctl -u observiq-otel-collector -f
Windows
Per riavviare l'agente Bindplane in Windows, scegli una delle seguenti opzioni:
Utilizzando il prompt dei comandi o PowerShell come amministratore:
net stop observiq-otel-collector && net start observiq-otel-collectorUtilizzo della console Services:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ Distro for OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
- Premi
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configurare l'inoltro di syslog di ManageEngine ADManager Plus
- Accedi ad ADManager Plus.
- Vai alla scheda Amministrazione.
- Nella sezione System Settings (Impostazioni di sistema), fai clic su Integrations (Integrazioni).
In Log Forwarding, fai clic su Syslog.
Configura i seguenti campi:
- Server Syslog: inserisci il nome del server Syslog. Inserisci l'indirizzo IP o il nome host dell'host dell'agente Bindplane.
- Porta: inserisci il numero di porta. Inserisci
514. - Protocollo: scegli il protocollo appropriato, TCP o UDP, per l'inoltro dei log. Seleziona TCP.
- Standard Syslog: seleziona il formato del messaggio syslog che preferisci, RFC 3164, RFC 5424 o RawLog. Seleziona RFC 5424 (opzione consigliata).
- Formato dei dati: inserisci il formato dei dati. Configura il formato dei dati in base alle esigenze del tuo ambiente.
Fai clic su Salva per salvare la configurazione.
Dopo la configurazione, ADManager Plus inizierà a inoltrare i log delle azioni di gestione all'agente Bindplane, che a sua volta li invierà a Google SecOps.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Funzione logica |
|---|---|---|
| ipPhone | event.idm.read_only_udm.additional.fields | Unito come etichetta con la chiave "ipPhone" e il valore di ipPhone se ipPhone != "" |
| l | event.idm.read_only_udm.additional.fields | Unito come etichetta con chiave "l" e valore da l se l != "" |
| lockoutTime | event.idm.read_only_udm.additional.fields | Unito come etichetta con la chiave "lockoutTime" e il valore di lockoutTime se lockoutTime != "" |
| Sposta da | event.idm.read_only_udm.additional.fields | Unito come etichetta con la chiave "Sposta da" e il valore di Move_From se Move_From != "" |
| Sposta in | event.idm.read_only_udm.additional.fields | Unito come etichetta con la chiave "Sposta in" e il valore di Move_To se Move_To != "" |
| msg | event.idm.read_only_udm.additional.fields | Unito come etichetta con la chiave "member" e il valore di msg se msg != "" |
| sn | event.idm.read_only_udm.additional.fields | Unito come etichetta con chiave "sn" e valore da sn se sn != "" |
| st | event.idm.read_only_udm.additional.fields | Unito come etichetta con la chiave "st" e il valore di st se st != "" |
| Nome modello | event.idm.read_only_udm.additional.fields | Unito come etichetta con la chiave "Nome modello" e il valore di Template_Name se Template_Name != "" |
| Stato | event.idm.read_only_udm.metadata.description | Valore estratto da Stato se Stato != "" |
| tempo | event.idm.read_only_udm.metadata.event_timestamp | Convertito dal formato ora al formato timestamp se ora != "" |
| event.idm.read_only_udm.metadata.event_type | Derivato: se has_principal_user == "true" allora "USER_UNCATEGORIZED"; altrimenti se has_principal == "true" allora "STATUS_UPDATE"; altrimenti "GENERIC_EVENT" | |
| TechnicianName | event.idm.read_only_udm.metadata.product_event_type | Valore estratto da TechnicianName se TechnicianName != "" |
| event.idm.read_only_udm.metadata.product_name | Imposta su "ADMANAGER_PLUS" | |
| event.idm.read_only_udm.metadata.vendor_name | Imposta su "ADMANAGER_PLUS" | |
| Nome di dominio | event.idm.read_only_udm.principal.administrative_domain | Valore estratto da Domain_Name se Domain_Name != "" |
| nome host | event.idm.read_only_udm.principal.asset.hostname | Valore preso dal nome host se hostname != "" |
| event.idm.read_only_udm.principal.email | Valore tratto dalla posta se mail != "" | |
| nome host | event.idm.read_only_udm.principal.hostname | Valore preso dal nome host se hostname != "" |
| co | event.idm.read_only_udm.principal.location.city | Valore estratto da co se co != "" |
| Attività | event.idm.read_only_udm.principal.resource.name | Valore estratto dall'attività se Task != "" |
| wWWHomePage | event.idm.read_only_udm.principal.url | Valore tratto da wWWHomePage se wWWHomePage != "" |
| Tipo di password | event.idm.read_only_udm.principal.user.attribute.labels | Unito come etichetta con la chiave "Password Type" e il valore di Password_Type se Password_Type != "" |
| Codice Paese | event.idm.read_only_udm.principal.user.attribute.labels | Unito come etichetta con la chiave "countryCode" e il valore di countryCode se countryCode != "" |
| password | event.idm.read_only_udm.principal.user.attribute.labels | Unita come etichetta con la chiave "password" e il valore della password se password != "" |
| postalCode | event.idm.read_only_udm.principal.user.attribute.labels | Unito come etichetta con la chiave "postalCode" e il valore di postalCode se postalCode != "" |
| primaryGroupID | event.idm.read_only_udm.principal.user.attribute.labels | Unito come etichetta con la chiave "primaryGroupID" e il valore di primaryGroupID se primaryGroupID != "" |
| userAccountControl | event.idm.read_only_udm.principal.user.attribute.labels | Unito come etichetta con la chiave "userAccountControl" e il valore di userAccountControl se userAccountControl != "" |
| userPrincipalName | event.idm.read_only_udm.principal.user.attribute.labels | Unito come etichetta con la chiave "userPrincipalName" e il valore di userPrincipalName se userPrincipalName != "" |
| company | event.idm.read_only_udm.principal.user.company_name | Valore tratto dall'azienda se azienda != "" |
| reparto | event.idm.read_only_udm.principal.user.department | Unito al reparto se reparto != "" |
| givenName | event.idm.read_only_udm.principal.user.first_name | Valore estratto da givenName se givenName != "" |
| physicalDeliveryOfficeName | event.idm.read_only_udm.principal.user.office_address.name | Valore tratto da physicalDeliveryOfficeName se physicalDeliveryOfficeName != "" |
| streetAddress | event.idm.read_only_udm.principal.user.personal_address.name | Valore estratto da streetAddress se streetAddress != "" |
| homePhone | event.idm.read_only_udm.principal.user.phone_numbers | Unito a homePhone se homePhone != "" |
| Nome utente | event.idm.read_only_udm.principal.user.user_display_name | Valore tratto da User_Name se User_Name != ""; altrimenti da Object_Name se Object_Name != "" |
| sAMAccountName | event.idm.read_only_udm.principal.user.userid | Valore tratto da sAMAccountName se sAMAccountName != "" |
| AZIONE | event.idm.read_only_udm.security_result.action_details | Valore estratto da ACTION se ACTION != "" |
| descrizione | event.idm.read_only_udm.security_result.description | Valore tratto dalla descrizione se description != "" |
| Nome container | event.idm.read_only_udm.security_result.detection_fields | Derivato da grok container_Name: unito come etichetta con chiave "Container_Name_DC_value1" e valore da dc_label_1 se dc_label_1 != "" |
| Nome container | event.idm.read_only_udm.security_result.detection_fields | Derivato da container_Name grok: unito come etichetta con la chiave "Container_Name_DC_value2" e il valore di dc_label_2 se dc_label_2 != "" |
| Nome container | event.idm.read_only_udm.security_result.detection_fields | Derivato da container_Name grok: unito come etichetta con chiave "Container_Name_OU_value1" e valore da ou_label_1 se ou_label_1 != "" |
| Nome container | event.idm.read_only_udm.security_result.detection_fields | Derivato da container_Name grok: unito come etichetta con la chiave "Container_Name_OU_value2" e il valore di ou_label_2 se ou_label_2 != "" |
| Nome container | event.idm.read_only_udm.security_result.detection_fields | Derivato da container_Name grok: unito come etichetta con la chiave "Container_Name_OU_value3" e il valore di ou_label_3 se ou_label_3 != "" |
| Gruppo principale | event.idm.read_only_udm.security_result.detection_fields | Derivato da Primary_Group grok: unito come etichetta con la chiave "Primary_Group_CN_value1" e il valore di cn_label_1 se cn_label_1 != "" |
| Gruppo principale | event.idm.read_only_udm.security_result.detection_fields | Derivato da Primary_Group grok: unito come etichetta con la chiave "Primary_Group_CN_value2" e il valore di cn_label_2 se cn_label_2 != "" |
| Gruppo principale | event.idm.read_only_udm.security_result.detection_fields | Derivato da Primary_Group grok: unito come etichetta con la chiave "Primary_Group_DC_value1" e il valore di primary_dc_label_1 se primary_dc_label_1 != "" |
| Gruppo principale | event.idm.read_only_udm.security_result.detection_fields | Derivato da Primary_Group grok: unito come etichetta con la chiave "Primary_Group_DC_value2" e il valore di primary_dc_label_2 se primary_dc_label_2 != "" |
| accountExpires | event.idm.read_only_udm.security_result.detection_fields | Unito come etichetta con la chiave "accountExpires" e il valore di accountExpires se accountExpires != "" |
| gestore | event.idm.read_only_udm.security_result.detection_fields | Derivato da manager grok: unito come etichetta con la chiave "manager_cn_value1" e il valore di manager_cn_value1 se manager_cn_value1 != "" |
| gestore | event.idm.read_only_udm.security_result.detection_fields | Derivato da manager grok: unito come etichetta con la chiave "manager_dc_value1" e il valore di manager_dc_value1 se manager_dc_value1 != "" |
| gestore | event.idm.read_only_udm.security_result.detection_fields | Derivato da manager grok: unito come etichetta con la chiave "manager_dc_value2" e il valore di manager_dc_value2 se manager_dc_value2 != "" |
| gestore | event.idm.read_only_udm.security_result.detection_fields | Derivato da manager grok: unito come etichetta con la chiave "manager_ou_value1" e il valore di manager_ou_value1 se manager_ou_value1 != "" |
| gestore | event.idm.read_only_udm.security_result.detection_fields | Derivato da manager grok: unito come etichetta con la chiave "manager_ou_value2" e il valore di manager_ou_value2 se manager_ou_value2 != "" |
| gestore | event.idm.read_only_udm.security_result.detection_fields | Derivato da manager grok: unito come etichetta con la chiave "manager_ou_value3" e il valore di manager_ou_value3 se manager_ou_value3 != "" |
| pwdLastSet | event.idm.read_only_udm.security_result.detection_fields | Unito come etichetta con la chiave "pwdLastSet" e il valore di pwdLastSet se pwdLastSet != "" |
| ModuleName | event.idm.read_only_udm.target.resource.name | Valore estratto da ModuleName se ModuleName != "" |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.