Raccogliere i log di sistema Linux auditd e AIX
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
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione.
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
- 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
- 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
- Ulteriori opzioni di installazione sono disponibili in questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
- Accedi alla macchina in cui è installato Bindplane.
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
Riavvia Bindplane Agent per applicare le modifiche utilizzando il seguente comando:
sudo systemctl bindplane restart
Esportazione di Syslog da Auditd
- Accedi alla macchina da cui vuoi esportare i log di controllo.
Apri il file di configurazione di Auditd (in genere si trova in
/etc/audit/auditd.conf
).sudo vi /etc/audit/auditd.conf
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
```
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
Trova o aggiungi le seguenti righe per configurare audispd:
active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string
Riavvia il servizio Auditd per applicare le modifiche:
sudo systemctl restart auditd
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)
Modifica
rsyslog.conf
o crea una configurazione personalizzata:sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
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.
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.