Raccogli i log LDAP di Red Hat Directory Server

Supportata in:

Questo documento spiega come importare i log LDAP di Red Hat Directory Server in Google Security Operations utilizzando l'agente Bindplane.

Red Hat Directory Server è un servizio di directory LDAP di livello enterprise basato su standard aperti che fornisce gestione centralizzata delle identità utente, autenticazione e controllo dell'accesso per gli ambienti Linux e UNIX. Directory Server archivia i log di accesso, errore, controllo, controllo non riuscito e sicurezza nella directory /var/log/dirsrv/slapd-instance_name/, registrando le connessioni client, le operazioni LDAP, le modifiche alla configurazione, le operazioni non riuscite e gli eventi di sicurezza come i tentativi di autenticazione e i problemi di autorizzazione.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un host Linux con systemd
  • Connettività di rete tra l'agente Bindplane e l'host del server di directory Red Hat
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane.
  • Accesso root o sudo all'host Red Hat Directory Server
  • Red Hat Directory Server 11 o versioni successive installato e in esecuzione
  • Il servizio rsyslog installato e in esecuzione sull'host del server di directory

Recupera le credenziali 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 Editor Chronicle.
  7. Fai clic su Continua, quindi 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 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 un 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 organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul tuo sistema operativo Linux seguendo le istruzioni riportate di seguito.

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
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    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 il syslog e inviarlo a Google SecOps

Individua il file di configurazione

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/redhat_ds:
        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
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: REDHAT_DIRECTORY_SERVER
        raw_log_field: body
    
    service:
      pipelines:
        logs/redhat_ds:
          receivers:
            - udplog
          exporters:
            - chronicle/redhat_ds
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del ricevitore:

    • udplog: Il tipo di ricevitore in base al protocollo:
      • udplog per UDP Syslog
      • tcplog per syslog TCP
      • syslog per syslog RFC 3164/5424
    • 0.0.0.0: indirizzo IP su cui ascoltare:
      • 0.0.0.0 per ascoltare su tutte le interfacce (consigliato)
      • Indirizzo IP specifico da ascoltare su un'interfaccia
    • 514: il numero di porta su cui ascoltare (ad esempio 514, 1514, 6514)
  • Configurazione dell'esportatore:

    • <customer_id>: l'ID cliente del passaggio precedente
    • location: sostituisci <LOCATION> con la regione della tua istanza Google SecOps (ad esempio us, europe o asia-southeast1). L'esportatore aggiunge chronicle.googleapis.com come prefisso a questo valore. Per l'elenco completo, consulta Endpoint regionali.
    • project: sostituisci <PROJECT_NUMBER> con il numero di progetto in IAM e amministrazione > Impostazioni.
    • endpoint: mantieni l'impostazione su chronicle.googleapis.com.
    • Modifica creds_file_path in base al percorso del file della chiave JSON del account di servizio (opzione 1), a seconda della piattaforma:
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json

Esportatore dell'API di importazione precedente

  • Se utilizzi il file di autenticazione dell'acquisizione dell'Opzione 2, sostituisci il blocco exporters con il seguente. Imposta creds_file_path sul percorso del file di autenticazione dell'importazione e, se la tua istanza si trova al di fuori degli Stati Uniti, sostituisci malachiteingestion-pa.googleapis.com con l'endpoint regionale (ad esempio, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/redhat_ds:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: REDHAT_DIRECTORY_SERVER
        raw_log_field: body
    

Salva il file di configurazione

  • Dopo la modifica, salva il file:
    • Linux: premi Ctrl+O, poi Enter e infine Ctrl+X

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
    1. Verifica che il servizio sia in esecuzione:

      sudo systemctl status observiq-otel-collector
      
    2. Controlla i log per verificare la presenza di errori:

      sudo journalctl -u observiq-otel-collector -f
      

Abilita il logging di controllo e di errore di controllo in Red Hat Directory Server

Per impostazione predefinita, Red Hat Directory Server abilita la registrazione di accesso, errori e sicurezza, ma disabilita la registrazione di audit e errori di audit. Attiva questi log per acquisire tutte le modifiche alla directory e le operazioni non riuscite.

  1. Apri un terminale con privilegi root o sudo sull'host del server di directory.
  2. Abilita l'audit log eseguendo questo comando:

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditlog-logging-enabled=on
    
  3. Attiva il log degli errori di controllo eseguendo questo comando:

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditfaillog-logging-enabled=on
    
  4. Verifica che tutti i tipi di log siano abilitati:

    dsconf -D "cn=Directory Manager" instance_name config get nsslapd-accesslog-logging-enabled nsslapd-errorlog-logging-enabled nsslapd-auditlog-logging-enabled nsslapd-auditfaillog-logging-enabled nsslapd-securitylog-logging-enabled
    
  5. Verifica che i file di log esistano nella directory dei log:

    ls -la /var/log/dirsrv/slapd-instance_name/
    

(Facoltativo) Abilita il logging utilizzando la console web

  1. Accedi alla console web di Red Hat Directory Server.
  2. Seleziona l'istanza.
  3. Vai a Server > Logging.
  4. Seleziona il tipo di log che vuoi attivare (ad esempio, Audit Log).
  5. Attiva l'opzione di logging per il tipo di log selezionato.
  6. Fai clic su Salva impostazioni log.

Configura rsyslog per inoltrare i log del server di directory all'agente Bindplane

Red Hat Directory Server scrive i log nei file in /var/log/dirsrv/slapd-instance_name/ anziché direttamente in syslog. Utilizza il modulo rsyslog imfile per monitorare questi file di log e inoltrare le voci all'agente Bindplane.

  1. Crea un nuovo file di configurazione rsyslog per l'inoltro dei log del server di directory:

    sudo nano /etc/rsyslog.d/rhds-forward.conf
    
  2. Aggiungi i seguenti contenuti al file di configurazione:

    # Load the imfile module to read log files
    module(load="imfile" PollingInterval="10")
    
    # Monitor the access log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/access"
        Tag="dirsrv-access"
        Severity="info"
        Facility="local6")
    
    # Monitor the error log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/errors"
        Tag="dirsrv-errors"
        Severity="err"
        Facility="local6")
    
    # Monitor the audit log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/audit"
        Tag="dirsrv-audit"
        Severity="info"
        Facility="local6")
    
    # Monitor the security log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/security"
        Tag="dirsrv-security"
        Severity="info"
        Facility="local6")
    
    # Forward all Directory Server logs to the Bindplane agent
    local6.* @BINDPLANE_IP:514
    
  3. Verifica la sintassi della configurazione rsyslog:

    sudo rsyslogd -N1
    
  4. Riavvia il servizio rsyslog per applicare le modifiche:

    sudo systemctl restart rsyslog
    
  5. Verifica che i log del server di directory vengano inoltrati controllando i log dell'agente Bindplane:

    sudo journalctl -u observiq-otel-collector -f
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
attrs_label about.labels Unita
cn_label about.labels Unita
conn_label about.labels Unita
csn_label about.labels Unita
err_label about.labels Unita
etime_label about.labels Unita
fd_label about.labels Unita
filter_label about.labels Unita
label about.labels Unita
method_label about.labels Unita
msgid_label about.labels Unita
name_label about.labels Unita
nentries_label about.labels Unita
offset_label about.labels Unita
op_label about.labels Unita
optime_label about.labels Unita
org_label about.labels Unita
ou_label about.labels Unita
scope_label about.labels Unita
slot_label about.labels Unita
tag_label about.labels Unita
targetop_label about.labels Unita
version_label about.labels Unita
wtime_label about.labels Unita
desc metadata.description Mappata direttamente
creationDate metadata.event_timestamp Analizzato come UNIX_MS
recordDate metadata.event_timestamp Analizzato come UNIX_MS
time metadata.event_timestamp Analizzato come dd/MMM/yyyy:HH:mm:ss Z
ts metadata.event_timestamp Analizzato come MMM d HH:mm:ss
operation metadata.product_event_type Mappata direttamente
mrId metadata.product_log_id Mappata direttamente
properties._ecs_agent_version metadata.product_version Mappata direttamente
host principal.asset.hostname Mappata direttamente
oid principal.asset.product_object_id Mappata direttamente
host principal.hostname Mappato direttamente
client_ip principal.ip Unita
namespace principal.namespace Mappato direttamente
user principal.user.userid Mappato direttamente
sec_result security_result Unita
properties._hostname target.asset.hostname Mappato direttamente
properties.host target.asset.hostname Mappata direttamente
properties._hostname target.hostname Mappata direttamente
properties.host target.hostname Mappato direttamente
target_ip target.ip Unita
properties.country target.location.country_or_region Mappato direttamente
properties._file_path target.process.file.full_path Mappata direttamente
properties._file_size target.process.file.size Rinominato/mappato
discipline_label target.resource.attribute.labels Unita
document_type_label target.resource.attribute.labels Unita
environment_label target.resource.attribute.labels Unita
hostgroup_label target.resource.attribute.labels Unita
platform_label target.resource.attribute.labels Unita
product_label target.resource.attribute.labels Unita
project_label target.resource.attribute.labels Unita
base target.user.group_identifiers Unita
dn target.user.group_identifiers Unita
N/D metadata.event_type Costante: NETWORK_CONNECTION
N/D metadata.product_name Costante: REDHAT_DIRECTORY_SERVER
N/D metadata.vendor_name Costante: REDHAT
N/D target.platform Costante: LINUX
properties._file_inode event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
properties._file_offset event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
conn event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
op event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
err event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
tag event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
nentries event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
wtime event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
optime event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
etime event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
csn event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
cn event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
ou event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
filter event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
attrs event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
scope event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
o event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
targetop event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
msgid event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
method event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
version event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
fd event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
slot event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
name event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
properties.discipline" ,"properties.document_type" ,"properties.environment" ,"properties.hostgroup" ,"properties.platform" ,"properties.product target.resource.attribute.labels Mappato dal log delle modifiche

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.