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 disporre dell'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 questo 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 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 Remark
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 è 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.
COMMAND target.process.command_line
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 target.process.file.full_path Il percorso eseguibile (exe) è mappato a target.process.file.full_path.
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.
_Item_Id metadata.product_log_id
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.
metadata.product_event_type SECCOMP La curva di scambio delle chiavi viene estratta dal log non elaborato e mappata a questo campo.
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.
process.name target.process.file.full_path
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_Id target.resource.product_object_id
resource.labels (Non mappato) Queste etichette sono presenti in alcuni log non elaborati, ma non sono mappate all'oggetto IDM nel modello UDM.
resource.type (Non mappato) Questo campo è presente in alcuni log non elaborati, ma non è mappato all'oggetto IDM nell'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.
TenantId metadata.product_deployment_id
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 target.user.userid L'ID utente (uid) è mappato a target.user.userid.

Riferimento del delta di mappatura UDM

Il 23 settembre 2025, Google SecOps ha rilasciato una nuova versione del parser Okta, che include modifiche significative al mapping dei campi dei log Okta ai campi UDM e modifiche al mapping dei tipi di eventi.

Delta della mappatura dei campi di log

La tabella seguente elenca il delta di mappatura per i campi dei log Okta in UDM esposti prima del 23 settembre 2025 e successivamente (elencati rispettivamente nelle colonne Mappatura precedente e Mappatura attuale).

Campo log Mappatura precedente Mappatura attuale Esempio di log di riferimento
1.1.1.1 (indirizzo IP) src.ip principal.ip "<163>Apr 10 09:00:05 hostname.com sshd[3318513]: Accepted password for abc from 1.1.1.1 port 33988 ssh2"
1.1.1.1 (indirizzo IP) principal.ip target.ip "<29>Oct 5 08:37:16 abc ProxySG: E0000 Access Log HTTP (main): Connecting to server 1.1.1.1 on port 4433.(0) NORMAL_EVENT alog_stream_http.cpp 261"
abc (utente) principal.user.userid target.user.userid "<85>Feb 27 08:26:55 offozcav login: FAILED LOGIN 1 FROM ::ffff:1.1.1.1 FOR abc, Authentication failure\r\n\r\n"
abc.abc (utente) principal.user.userid target.user.userid "<86>Feb 27 08:29:19 offozcav login: LOGIN ON pts/43 BY abc.abc FROM\r\n\r\n::ffff:1.1.1.1"
COMMAND principal.process.command_line target.process.command_line "<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
exe target.process.file.full_path principal.process.file.full_path
_ItemId additional.fields metadata.product_log_id
metadata.product_event_type PATH SECCOMP
process.name principal.process.file.full_path target.process.file.full_path
_ResourceId additional.fields target.resource.product_object_id
TenantId additional.fields metadata.product_deployment_id
uid principal.user.userid target.user.userid
USER principal.user.user_display_name target.user.userid "<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
user principal.user.userid target.user.userid "29>Jan 16 11:28:00 san-auth-1-irl2 tac_plus[17329]: login failure: user 1.1.1.1 (1.1.1.1) vty0"
user principal.user.userid target.user.userid "<87>Jul 15 10:27:01 xpgjrconfdb01 crond[1045]: pam_unix(crond:account): expired password for user root (password aged)"

Delta della mappatura dei tipi di eventi

Più eventi precedentemente classificati come eventi generici ora sono classificati correttamente con tipi di eventi significativi.

La tabella seguente elenca la differenza per la gestione dei tipi di eventi Okta prima del 23 settembre 2025 e successivamente (elencati rispettivamente nelle colonne Old event_type e Current event-type).

eventType from log Old event_type Current event_type
aix_event_type=CRON_Start USER_LOGIN PROCESS_LAUNCH
CRYPTO_KEY_USER NETWORK_CONNECTION USER_LOGIN
FILE_Mknod USER_LOGIN FILE_CREATION
FILE_Rename USER_LOGIN FILE_MODIFICATION
FILE_Stat USER_LOGIN FILE_OPEN
FILE_Unlink USER_LOGIN FILE_DELETION
FS_Chabc USER_LOGIN PROCESS_UNCATEGORIZED
FS_Mkdir USER_LOGIN FILE_CREATION
FS_Rmdir USER_LOGIN FILE_DELETION
PROC_Execute USER_LOGIN PROCESS_LAUNCH
type=ANOM_ABEND STATUS_UPDATE PROCESS_TERMINATION
type=ANOM_PROMISCUOUS SETTING_MODIFICATION
type=CRED_REFR USER_LOGIN USER_CHANGE_PERMISSIONS
type=PROCTILE PROCESS_UNCATEGORIZED PROCESS_LAUNCH
type=SERVICE_START USER_RESOURCE_ACCESS SERVICE_START
type=SERVICE_STOP USER_RESOURCE_ACCESS SERVICE_STOP
type=USER_ACCT USER_LOGIN/SETTING_MODIFICTION USER_LOGIN
type=USER_MGMT SETTING_MODIFICATION/GROUP_MODIFICATION GROUP_MODIFICATION
USER_ERR USER_LOGOUT USER_LOGIN

Modifiche aggiuntive

  • È stata rimossa la mappatura duplicata di res da security_result.description. È acquisito in security_result.action_details.
  • Rimozione di auditd_msg_data non necessari dai campi aggiuntivi.
  • Rimozione di auditd_msg_data non necessari da security_result.summary.
  • Il giorno type=ADD_USER è stata rimossa la mappatura duplicata di acct a target.user.display_name. È già mappato in target.user.userid.
  • È stata rimossa la mappatura duplicata di comm da principal.process.command_line e principal.process.file.names. È acquisito in principal.application.
  • È stata rimossa la mappatura duplicata di target.hostname quando il valore è presente in principal.
  • Rimossa la mappatura hardcoded non necessaria di target.resource.type a SETTING.
  • Sono state rimosse le mappature delle etichette About perché sono deprecate.
  • Mappatura corretta: ora gli IP vengono indirizzati a principal.ip, non a principal.hostname.
  • È stata corretta la generazione della ripetizione degli eventi.

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