Raccogliere i log di sistema Linux auditd e AIX

Supportato in:

Questo parser gestisce i log di controllo Linux in formato SYSLOG, trasformandoli in UDM. Elabora i messaggi di log in formato JSON e in testo normale, estraendo i campi utilizzando le tecniche di analisi grok, XML e JSON e mappandoli ai campi UDM appropriati in base al tipo di evento. Il parser gestisce anche formati di log di controllo specifici dei sistemi AIX e arricchisce UDM con campi aggiuntivi come security_result e dettagli intermedi.

Prima di iniziare

  • Assicurati di avere un'istanza Google Security Operations.
  • Assicurati di avere accesso root all'host Auditd.
  • Assicurati di aver installato rsyslog sull'host Auditd.
  • Assicurati di avere un host Windows 2012 SP2 o versioni successive o Linux con systemd.
  • Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione importazione.

Recuperare 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

  1. Per l'installazione di Windows, esegui il seguente script:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Per l'installazione di Linux, esegui il seguente script:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. Ulteriori opzioni di installazione sono disponibili in questa guida all'installazione.

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

  1. Accedi alla macchina in cui è installato Bindplane.
  2. Modifica il file config.yaml come segue:

    receivers:
      tcplog:
        # Replace the below port <54525> and IP <0.0.0.0> with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: auditd
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Riavvia Bindplane Agent per applicare le modifiche utilizzando il seguente comando: sudo systemctl bindplane restart

Esportazione di Syslog da Auditd

  1. Accedi alla macchina da cui vuoi esportare i log di controllo.
  2. Apri il file di configurazione di Auditd (in genere si trova in /etc/audit/auditd.conf).

    sudo vi /etc/audit/auditd.conf
    
  3. Trova o aggiungi le seguenti righe per configurare auditd:

    active = yes
    output = syslog
    log_format = ENRICHED
    dispatcher = /sbin/audispd
    

(Facoltativo) Specifica la funzionalità Syslog: aggiungi o modifica la seguente riga in auditd.conf:

```none
syslog_facility = LOG_AUTHPRIV
```
  1. Apri il file di configurazione di audispd (in genere si trova in /etc/audisp/plugins.d/syslog.conf):

    sudo vi /etc/audisp/plugins.d/syslog.conf
    
  2. Trova o aggiungi le seguenti righe per configurare audispd:

    active = yes
    direction = out
    path = builtin_syslog
    type = builtin
    args = LOG_INFO
    format = string
    
  3. Riavvia il servizio Auditd per applicare le modifiche:

    sudo systemctl restart auditd
    
  4. Utilizza uno strumento come tail per monitorare il syslog e verificare che vengano inviati i log di Auditd:

    tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
    
  5. Modifica rsyslog.conf o crea una configurazione personalizzata:

    sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
    
  6. Aggiungi una regola per inoltrare i log:

    • if $programname == 'auditd' then @@<Bindplane_Agent>:<Bindplane_Port>
    • Utilizza @ per UDP o @@ per TCP
    • Sostituisci <BindPlane_Agent> con l'indirizzo IP/il nome host del tuo server.
    • Sostituisci <BindPlane_Port> con la porta del tuo server.
  7. Riavvia il servizio rsyslog per applicare le modifiche:

    sudo systemctl restart rsyslog
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
acct target.user.user_display_name Il valore di acct del log non elaborato viene mappato al campo target.user.user_display_name in UDM. Rappresenta l'account associato all'evento.
addr principal.ip Il valore di addr del log non elaborato viene mappato al campo principal.ip in UDM. Rappresenta l'indirizzo IP del soggetto coinvolto nell'evento.
additional.fields additional.fields I campi aggiuntivi delle coppie chiave-valore o delle etichette analizzate vengono aggiunti all'array additional.fields nell'UDM.
agent.googleapis.com/log_file_path (Non mappato) Questa etichetta è presente in alcuni log non elaborati, ma non è mappata all'oggetto IDM nell'UDM.
algo (Non utilizzato in questo esempio) Sebbene presente nel parser e in alcuni log non elaborati, questo campo non viene utilizzato nell'esempio fornito e non viene visualizzato nell'UDM finale.
application principal.application Derivato dal campo terminal nel log non elaborato o da altri campi come exe a seconda del tipo di log. Rappresenta l'applicazione coinvolta.
arch security_result.about.platform_version L'architettura del campo arch del log non elaborato viene mappata a security_result.about.platform_version.
auid about.user.userid, security_result.detection_fields.auid L'ID utente di controllo (auid) viene mappato a about.user.userid e aggiunto come campo di rilevamento in security_result.
cmd target.process.command_line Il comando del campo cmd del log non elaborato viene mappato a target.process.command_line.
collection_time (Non mappato) Questo campo è l'ora di raccolta dei log e non è mappato all'oggetto IDM in UDM.
comm principal.application Il nome del comando (comm) è mappato a principal.application.
compute.googleapis.com/resource_name principal.hostname Il nome della risorsa di questa etichetta è mappato su principal.hostname.
create_time (Non mappato) Questo campo non è mappato all'oggetto IDM nell'UDM.
cwd security_result.detection_fields.cwd La directory di lavoro corrente (cwd) viene aggiunta come campo di rilevamento in security_result.
data (Elaborato) Il campo data contiene il messaggio di log principale e viene elaborato dal parser per estrarre vari campi. Non è mappato direttamente a un singolo campo UDM.
exe principal.process.file.full_path, target.process.file.full_path Il percorso eseguibile (exe) viene mappato su principal.process.file.full_path o target.process.file.full_path a seconda del contesto.
extensions.auth.type extensions.auth.type Il tipo di autenticazione viene impostato dalla logica del parser in base al tipo di evento. Spesso impostato su MACHINE o AUTHTYPE_UNSPECIFIED.
fp network.tls.client.certificate.sha256 L'impronta (fp) viene analizzata per estrarre l'hash SHA256 e mappata a network.tls.client.certificate.sha256.
insertId (Non mappato) Questo campo non è mappato all'oggetto IDM nell'UDM.
jsonPayload.message (Elaborato) Questo campo contiene il messaggio di log principale in formato JSON ed è elaborato dal parser.
key security_result.about.registry.registry_key Il campo della chiave è mappato a security_result.about.registry.registry_key.
labels (Elaborato) Le etichette del log non elaborato vengono elaborate e mappate a vari campi UDM o aggiunte a additional.fields.
logName (Non mappato) Questo campo non è mappato all'oggetto IDM nell'UDM.
msg security_result.summary Il messaggio (msg) viene spesso utilizzato per compilare il campo security_result.summary.
network.application_protocol network.application_protocol Impostato dalla logica del parser in base al tipo di evento (ad es. SSH, HTTP).
network.direction network.direction Impostato dalla logica del parser in base al tipo di evento (ad es. INBOUND, OUTBOUND).
network.ip_protocol network.ip_protocol Impostato dalla logica del parser, in genere su TCP per gli eventi SSH.
network.session_id network.session_id Mappato dal campo ses o derivato da altri campi.
network.tls.cipher network.tls.cipher Le informazioni sulla crittografia vengono estratte dal log non elaborato e mappate a questo campo.
network.tls.curve network.tls.curve La curva di scambio delle chiavi viene estratta dal log non elaborato e mappata a questo campo.
pid principal.process.pid, target.process.pid L'ID processo (pid) viene mappato su principal.process.pid o target.process.pid a seconda del contesto.
ppid principal.process.parent_process.pid, target.process.parent_process.pid L'ID processo padre (ppid) viene mappato su principal.process.parent_process.pid o target.process.parent_process.pid a seconda del contesto.
principal.asset.hostname principal.asset.hostname Copiato da principal.hostname.
principal.asset.ip principal.asset.ip Copiato da principal.ip.
principal.platform principal.platform Impostato dalla logica del parser in base al sistema operativo (ad es. LINUX).
principal.port principal.port Il numero di porta associato all'entità.
principal.user.group_identifiers principal.user.group_identifiers ID gruppo associati all'utente principale.
receiveTimestamp (Non mappato) Questo campo è il timestamp di ricezione del log e non è mappato all'oggetto IDM in UDM.
res security_result.action_details Il risultato (res) è mappato a security_result.action_details.
resource.labels (Non mappato) Queste etichette sono presenti in alcuni log non elaborati, ma non sono mappate all'oggetto IDM nell'UDM.
resource.type (Non mappato) Questo campo è presente in alcuni log non elaborati, ma non è mappato all'oggetto IDM in UDM.
security_result.action security_result.action Impostato dalla logica del parser in base al campo res (ad es. CONSENTI, BLOCCA).
security_result.detection_fields security_result.detection_fields A questo array vengono aggiunti vari campi del log non elaborato come coppie chiave-valore per il contesto.
security_result.rule_id security_result.rule_id Impostato dalla logica del parser, spesso su type_name per gli eventi syscall.
security_result.severity security_result.severity Impostato dalla logica del parser in base al livello di gravità nel log non elaborato.
security_result.summary security_result.summary Un riepilogo dell'evento, spesso derivato dal campo msg o da altri campi pertinenti.
ses network.session_id L'ID sessione (ses) è mappato a network.session_id.
source (Non mappato) Questo campo contiene metadati sull'origine log e non è mappato all'oggetto IDM nel modello UDM.
subj (Elaborato) Il campo dell'oggetto (subj) viene elaborato per estrarre le informazioni sul contesto di sicurezza e dell'utente.
syscall security_result.about.labels.Syscall Il numero della chiamata di sistema viene aggiunto come etichetta in security_result.about.
target.administrative_domain target.administrative_domain Il dominio dell'utente di destinazione.
target.group.group_display_name target.group.group_display_name Il nome del gruppo target.
target.ip target.ip L'indirizzo IP della destinazione.
target.port target.port Il numero di porta associato alla destinazione.
target.process.command_line target.process.command_line La riga di comando del processo di destinazione.
target.resource.type target.resource.type Il tipo di risorsa target, impostato dalla logica del parser (ad es. CREDENTIAL, SETTING).
target.user.attribute.permissions target.user.attribute.permissions Autorizzazioni correlate all'utente di destinazione.
target.user.group_identifiers target.user.group_identifiers ID gruppo associati all'utente di destinazione.
target.user.userid target.user.userid L'ID utente del target.
textPayload (Elaborato) Il payload di testo del log, elaborato dal parser per estrarre vari campi.
timestamp metadata.event_timestamp Il timestamp dell'evento.
tty security_result.about.labels.tty Il tty viene aggiunto come etichetta in security_result.about.
type metadata.product_event_type Il tipo di evento (type) è mappato a metadata.product_event_type.
uid principal.user.userid, target.user.userid L'ID utente (uid) viene mappato su principal.user.userid o target.user.userid a seconda del contesto.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.