Raccogliere i log di sistema Linux auditd e AIX

Supportato in:

Questo parser gestisce gli audit log Linux in formato SYSLOG, trasformandoli in UDM. Elabora i messaggi di log sia in formato JSON che in testo normale, estrae i campi utilizzando tecniche di analisi XML e JSON e Grok e li mappa ai campi UDM appropriati in base al tipo di evento. Il parser gestisce anche formati specifici dei log di controllo dei sistemi AIX e arricchisce l'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 come utente root all'host Auditd.
  • Assicurati di aver installato rsyslog sull'host Auditd.
  • Assicurati di avere Windows 2012 SP2 o versioni successive o un host Linux con systemd.
  • Se il servizio viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte.

Recupera il file di autenticazione di importazione di Google SecOps

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

Ottenere 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 BindPlane Agent

  1. Per l'installazione su 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.

Configurare l'agente BindPlane per importare i syslog e inviarli a Google SecOps

  1. Accedi al computer su 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. Riavviare 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 gli audit log.
  2. Apri il file di configurazione di Auditd (in genere 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 il Facility 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 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 i log di Auditd vengano inviati:

    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/nome host del server.
    • Sostituisci <BindPlane_Port> con la porta del server.
  7. Riavvia il servizio rsyslog per applicare le modifiche:

    sudo systemctl restart rsyslog
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
acct target.user.user_display_name Il valore di acct dal log non elaborato è mappato al campo target.user.user_display_name nell'UDM. Rappresenta l'account associato all'evento.
addr principal.ip Il valore di addr dal log non elaborato è mappato al campo principal.ip nell'UDM. Rappresenta l'indirizzo IP dell'entità principale coinvolta 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 sia 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 Dedotto dal campo terminal nel log non elaborato o da altri campi come exe, a seconda del tipo di log. Rappresenta l'applicazione interessata.
arch security_result.about.platform_version L'architettura del campo arch del log non elaborato è 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 indica l'ora di raccolta dei log e non è mappato all'oggetto IDM nell'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 a 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 ed è elaborato dall'analizzatore 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 dell'eseguibile (exe) è mappato a 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 dell'analizzatore 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 dall'analizzatore.
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 dell'analizzatore in base al tipo di evento (ad es. SSH, HTTP).
network.direction network.direction Impostato dalla logica dell'analizzatore 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 sul cifrario 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) è mappato a 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 principale (ppid) è mappato a 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 dell'analizzatore in base al sistema operativo (ad es. LINUX).
principal.port principal.port Il numero di porta associato al principale.
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 nell'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 nell'UDM.
security_result.action security_result.action Impostato dalla logica dell'analizzatore in base al campo res (ad es. ALLOW, BLOCK).
security_result.detection_fields security_result.detection_fields Vari campi del log non elaborato vengono aggiunti come coppie chiave-valore a questo array 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 dell'analizzatore 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 nell'UDM.
subj (Elaborato) Il campo dell'oggetto (subj) viene elaborato per estrarre informazioni sul contesto di sicurezza e sull'utente.
syscall security_result.about.labels.Syscall Il numero di syscall 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 di destinazione.
target.ip target.ip L'indirizzo IP della destinazione.
target.port target.port Il numero di porta associato al target.
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 dell'analizzatore (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 dall'analizzatore 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) è mappato a principal.user.userid o target.user.userid a seconda del contesto.

Modifiche

2024-05-08

  • Quando il valore non è "?", mappa "field" a "field33" in "security_result.detection_fields".
  • Quando "type_name" è "CRYPTO_KEY_USER", "exe" viene mappato a "principal.process.file.full_path".
  • Quando "type_name" è "CRYPTO_KEY_USER", "fp" viene mappato a "network.tls.client.certificate.sha256".
  • Quando "type_name" è "CRYPTO_KEY_USER", "pid" viene mappato a "principal.process.pid".
  • Sono stati aggiunti pattern Grok per analizzare il nuovo pattern dei log.
  • "syslog-tag" è stato mappato a "security_result.detection_fields".
  • "inter_ip" è stato mappato a "intermediary.ip".
  • "inter_hostname" è stato mappato a "intermediary.hostname".

2024-05-02

  • Quando "type_name" è "USER_MGMT", "grp" viene mappato a "target.group.group_display_name".
  • Quando "type_name" è "USER_MGMT", la mappatura di "uid" è stata modificata da "principal.user.userid" a "target.user.userid".
  • Quando "type_name" è "USER_MGMT" e "op" è uguale a "deleting-user-from-group", imposta "metadata.event_type" su "GROUP_MODIFICATION".
  • Quando "type_name" è "USER_MGMT", la mappatura di "exe" è stata modificata da "target.process.file.full_path" a "principal.process.file.full_path".
  • Quando "type_name" è "USER_MGMT", mappa "id" a "about.user.userid".

2024-04-08

  • Quando "type_name" è "ADD_USER", principal_user_present è "true", target_user_present è "true" e has_principal è "true", imposta "metadata.event_type" su "USER_CREATION".
  • Quando "type_name" è "USER_AUTH", mappa "acct" a "target.user.user_display_name".
  • Quando "type_name" è "USER_AUTH", mappa "uid" a "principal.user.userid".
  • Quando "type_name" non è in "ADD_USER","USER_AUTH","CRED_ACQ" e "USER_MGMT", mappa "auid" a "about.user.userid".
  • Quando "type_name" è "ADD_USER", mappa "auid" a "target.user.userid".
  • Quando "type_name" è "ADD_USER" o "USER_AUTH", mappa "exe" a "principal.process.file.full_path".
  • Quando "type_name" è "ADD_USER", mappa "op" e "id" a "security_result.summary".
  • Quando "type_name" è "USER_AUTH", mappa "op" e "acct" a "security_result.summary".

2024-03-22

  • È stato aggiunto il supporto per il nuovo pattern dei log JSON.
  • Sono stati mappati "labels.compute.googleapis.com/resource_name","jsonPayload._HOSTNAME", "CollectorHostName", "HOSTNAME" e "Computer" a "principal.hostname".
  • "HostIP" è stato mappato a "principal.ip".
  • "ProcessID" e "jsonPayload._PID" sono stati mappati a "principal.process.pid".
  • "SyslogMessage" è stato mappato a "metadata.description".
  • "TenantId", "_ItemId", "_Internal_WorkspaceResourceId", "_ResourceId" e "Facility" sono stati mappati a "additional.fields".
  • "SeverityLevel" è stato mappato a "security_result.severity".
  • "SourceSystem" è stato mappato a "principal.platform".
  • "jsonPayload._COMM" è stato mappato a "principal.application".
  • "jsonPayload._EXE" è stato mappato a "target.process.file.full_path".
  • "jsonPayload._AUDIT_FIELD_FILE" è stato mappato a "target.file.full_path".
  • "jsonPayload._AUDIT_FIELD_HASH" è stato mappato a "target.file.hash".
  • "jsonPayload._AUDIT_SESSION" è stato mappato a "network.session_id".
  • "jsonPayload._PPID" è stato mappato a "principal.process.parent_process.pid".
  • Sono stati mappati "jsonPayload._AUDIT_FIELD_A0", "jsonPayload._AUDIT_FIELD_A1", "jsonPayload._AUDIT_FIELD_A2", "jsonPayload._AUDIT_FIELD_A3", "jsonPayload._BOOT_ID" e "jsonPayload._AUDIT_FIELD_EXIT" a "security_result.detection_fields".

2023-11-27

  • È stato aggiunto un controllo di convalida per assicurarsi che "principal_user_present", "target_user_present" o "has_principal" sia true prima di impostare "metadata.event_type" su "USER_LOGIN".
  • È stato aggiunto un controllo di convalida per assicurarsi che "principal_user_present", "target_user_present" o "has_principal" sia true prima di impostare "metadata.event_type" su "USER_LOGOUT".
  • È stato aggiunto un controllo di convalida per assicurarsi che "principal_user_present", "target_user_present" o "has_principal" sia true prima di impostare "metadata.event_type" su "USER_CREATION".
  • È stato aggiunto un controllo di convalida per assicurarsi che "principal_user_present", "target_user_present" o "has_principal" sia true prima di impostare "metadata.event_type" su "USER_DELETION".
  • È stato aggiunto un controllo di convalida per assicurarsi che "principal_user_present", "target_user_present" o "has_principal" sia true prima di impostare "metadata.event_type" su "USER_UNCATEGORIZED".
  • È stato aggiunto un controllo di convalida per assicurarsi che "principal_user_present", "target_user_present" o "has_principal" sia true prima di impostare "metadata.event_type" su "USER_RESOURCE_ACCESS".
  • È stato aggiunto un controllo di convalida per assicurarsi che "principal_user_present", "target_user_present" o "has_principal" sia true prima di impostare "metadata.event_type" su "USER_CHANGE_PERMISSIONS".
  • Quando sono presenti i dettagli dell'utente e non sono presenti i dettagli della macchina principale, la mappatura di "metadata.event_type" è stata modificata da "USER_CREATION" a "USER_UNCATEGORIZED".
  • Quando sono presenti i dettagli dell'utente e non sono presenti i dettagli della macchina principale, la mappatura di "metadata.event_type" è stata modificata da "USER_DELETION" a "USER_UNCATEGORIZED".

2023-09-06

  • È stata aggiunta la mappatura di "CMD" a "target.process.command_line" per "cron daemon(CROND)".

2023-06-20

  • Miglioramento: sono state aggiunte o modificate le seguenti mappature quando type="ADD_USER" e "DEL_USER":
  • È stata modificata la mappatura di "uid" da "target.user.userid" a "principal.user.userid".
  • "id" è stato mappato a "target.user.userid".
  • "ID" è stato mappato a "target.user.user_display_name".
  • È stata modificata la mappatura di "UID" da "principal.user.userid" a "principal.user.user_display_name".
  • È stata modificata la mappatura di "acct" da "principal.user.user_display_name" a "target.user.user_display_name" e "target.user.userid".

2023-06-09

  • Miglioramento: modifica di "event_type" da "USER_LOGIN" a "USER_CREATION" quando "type=ADD_USER".

2023-04-17

  • Miglioramento
  • È stata aggiunta la funzione gsub per sostituire il carattere "GS - Separatore di gruppi" che interrompe la costruzione del JSON.

2023-04-10

  • Miglioramento
  • Sono stati aggiunti i campi "gid","euid","egid","suid","fsuid","sgid","fsgid","tty","items" a security_result.detection_fields.
  • Inoltre, è stato mappato "gid" a "principal.user.group_identifiers".
  • È stato mappato "euid" a "target.user.userid".
  • È stata mappata la proprietà "egid" a "target.user.group_identifiers".

2023-03-27

  • Miglioramento: è stato aggiunto il supporto per "jsonPayload" contenente i log.

2023-02-28

  • Correzione di bug: parser migliorato per convertire la stringa codificata esadecimale in ASCII.

2023-02-09

  • Miglioramento: è stato modificato il pattern grok per i log contenenti "type=PATH" per recuperare il nome host corretto dai log.

2023-01-24

  • Miglioramento:
  • Log analizzato con eventType come "tac_plus".
  • Sono state aggiunte condizioni per la mappatura di diversi tipi di eventi "NETWORK_CONNECTION", "NETWORK_HTTP", "USER_LOGIN".

2022-12-02

  • Miglioramento:
  • "user_name" è stato mappato a "principal.user.userid".
  • È stato aggiunto il controllo condizionale per "dst_ip", "dst_port".

2022-10-31

  • Miglioramento:
  • È stato migliorato il parser per analizzare il log con type=ADD_USER, USER_MGMT, DEL_USER.
  • Sono stati aggiunti controlli null per "principal_hostname".
  • Sono stati aggiunti controlli on_error per "principal.process.file.full_path", "type_syscall_props.key", "type_syscall_props.arch", "msg2".
  • Sono stati aggiunti controlli condizionali per la mappatura a event_type="FILE_OPEN", "USER_UNCATEGORIZED", "STATUS_UPDATE", "USER_DELETION".
  • "principal_user_userid" è stato mappato a "principal.user.userid".

2022-11-16

  • Miglioramento:
  • "GENERIC_EVENT" è stato migliorato in "STATUS_UPDATE" per i tipi di log contenenti "Access Logs".

2022-10-14

  • Miglioramento:
  • È stata eseguita la migrazione del parser dei clienti al parser predefinito.

2022-10-13

  • Miglioramento: "vendor_name" è stato mappato a "Linux".
  • "product_name" è stato mappato a "AuditD".
  • Sono stati analizzati i log contenenti "ProxySG" e sono stati mappati "ip" a "target.ip" e "port" a "target.port", ove possibile.
  • "event_type" modificato da "GENERIC_EVENT" a "STATUS_UPDATE".
  • Mappatura modificata per "intermediary.hostname" in "principal.hostname".

2022-07-28

  • Miglioramento:
  • È stato mappato il campo "auid" ad about.user.userid".
  • È stato mappato il campo "AUID" a "about.user.user_display_name".
  • È stato mappato il campo "proctitle" a "target.process.file.full_path".
  • È stato migliorato il parser per analizzare il log con type=DAEMON_END, CRYPTO_SESSION, CONFIG_CHANGE, PROCTITLE, USER_ERR, CRYPTO_KEY_USER.
  • È stato aggiunto il controllo condizionale per laddr, addr, cipher, pfs, direction, acct, pid, ppid, cmd, exe, ses.

2022-06-17

  • Miglioramento: sono stati mappati/modificati i seguenti campi:
  • È stata modificata la mappatura di "auid" da "security_result.about.user.userid" a "about.user.userid".
  • "event_type" per type=SYSCALL è stato modificato da "SYSTEM_AUDIT_LOG_UNCATEGORIZED" a "USER_UNCATEGORIZED".
  • "success" è stato mappato a "security_result.summary".
  • Sono stati mappati "syscall", "exit", "tty", "a0", "a1", "a2", "a3" a "security_result.about.labels".
  • I log sono stati eliminati in formato ASCII.

2022-06-14

  • miglioramento
  • È stato migliorato il parser per analizzare il tipo di log USER_CMD.
  • Il campo "cmd" è stato mappato a "principal.process.command_line".
  • Il campo "ses" è stato mappato a "network.session_id".
  • Il campo "res" è stato mappato a "security_result.action" e "security_result.action_details".
  • I campi "auid" e "cwd" sono stati mappati a "security_result.detection_fields".

2022-04-26

  • miglioramento
  • È stata aumentata la percentuale di analisi mediante l'analisi di tutti i log non analizzati.