Perché conta
auditd cattura gli eventi di sicurezza; journald raccoglie tutto il resto — messaggi dei servizi, del kernel, del boot, delle sessioni. Ma un log serve a qualcosa solo se ci sarà quando ne avrai bisogno. Due problemi ricorrenti: i log non sono persistenti (spariscono al riavvio), oppure un attaccante che ottiene root li cancella per nascondere le proprie tracce — di solito il log tampering è una delle prime mosse dopo una compromissione. Hardening del logging significa renderli persistenti, protetti e fuori portata.
Rendere il journal persistente
Per default alcuni sistemi tengono il journal solo in memoria (si perde al reboot). Si rende persistente scrivendolo su disco:
|
|
|
|
journalctl: interrogare bene
|
|
I campi strutturati (_UID=, _PID=, _SYSTEMD_UNIT=) sono il vantaggio di journald rispetto ai
vecchi file di testo: filtri su metadati, non con grep fragile.
Proteggere i log dal tampering
I log locali sono sotto il controllo di chi ha root sulla macchina — quindi di un attaccante che ha vinto. La difesa è spedirli altrove, su un host che l’attaccante non controlla, in tempo reale:
|
|
Il principio è lo stesso dell’audit trail immutabile nel cloud: chi compromette la macchina può ripulire i log locali, ma non quelli già arrivati su un sistema separato. Senza inoltro remoto, l’indagine su una macchina compromessa parte da prove potenzialmente già cancellate.
Segnali da cercare nei log
|
|
Questi grep manuali vanno bene per un controllo occasionale; su scala, i log centralizzati alimentano regole di detection automatiche (un SIEM) — ma è un tema a sé.
Conclusione
Rendere il journal persistente, interrogarlo per campi con journalctl, e soprattutto inoltrarlo a
un collettore remoto perché sopravviva a chi vuole cancellarlo: così i log restano prove affidabili.
Log e audit dicono cosa è successo; resta da sapere se qualcosa è cambiato in silenzio — se un
binario di sistema è stato sostituito. È l’integrità dei file con AIDE, prossimo capitolo.