La sicurezza dei server Linux è fondamentale per la protezione dei dati e la continuità del business. Auditd rappresenta un potente strumento per aumentare la visibilità e la profondità dei log di sistema, fornendo informazioni dettagliate sulle attività svolte sul server. In questo articolo, esploreremo il funzionamento di auditd e come utilizzarlo per rafforzare la sicurezza del tuo ambiente Linux.
Installare prima il pacchetto audispd-plugins
per la spedizione degli eventi.
dnf install audispd-plugins
Successivamente, anche se non strettamente indispensabile, si potrebbe andare a modificare il rate-limit di systemd-journald. Questo sarebbe da fare se il server ha un numero molto ingente di log da processare. Per fare ciò modificare il file /etc/systemd/journald.conf
e andare a modificare le direttive
#RateLimitInterval=30s
#RateLimitBurst=1000
in
RateLimitInterval=0
RateLimitBurst=0
Uscire e salvare e riavviare il systemd-journald con
systemctl restart systemd-journald
Analogamente andare ad editare il file di rsyslog e aggiungere le direttive sotto riportate subito dopo il caricamento del modulo imjournal
module(load="imjournal" # provides access to the systemd journal
StateFile="imjournal.state") # File to store the position in the journal
$imjournalRatelimitInterval 0
$imjournalRatelimitBurst 0
in questa maniera si disabilitano i limiti di invio file. Poi, riavviare il servizio rsyslog con il comando
systemctl restart rsyslog
Per prima cosa è importante controllare se auditd è installato e in esecuzione, per farlo
# systemctl status auditd
● auditd.service - Security Auditing Service
Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; preset: enabled)
Active: active (running) since Thu 2024-04-11 11:17:26 CEST; 6s ago
Docs: man:auditd(8)
https://github.com/linux-audit/audit-documentation
Process: 2018797 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS)
Process: 2018803 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS)
Main PID: 2018798 (auditd)
Tasks: 4 (limit: 11025)
Memory: 6.3M
CPU: 288ms
CGroup: /system.slice/auditd.service
├─2018798 /sbin/auditd
└─2018800 /usr/sbin/sedispatch
Successivamente bisogna andare ad editare il file /etc/audit/plugins.d/syslog.conf
(su Debian/CentOS 7.x e derivate il file è /etc/audisp/plugins.d/syslog.conf
) il quale specifica le direttive con le quali i log vengono inviati al syslog. Nel mio caso ho deciso di inviare lo stram dei log su una facility.
active = yes
direction = out
path = builtin_syslog
type = builtin
args = LOG_LOCAL6
format = string
Modificare il syslog (su RHEL e derivate il file è /etc/rsyslog.conf
su Debian e derivate il file è /etc/rsyslog.d/50-default.conf
) andando ad aggiungere la direttiva
local6.* @@ip-del-SIEM
L’unica differenza è dettata dal file del plugin syslog.conf
il quale deve essere modificato in questa maniera
active = yes
direction = out
path = /sbin/audisp-syslog
args = LOG_LOCAL6
format = string
Arrivati a questo punto è importante andare a definire le regole che auditd utilizzerà per loggare gli eventi. Una buona base di partenza è possibile trovarla a questo indirizzo.
Il file audit.rules
è un file di configurazione per il sistema di audit di Linux, auditd
. Questo sistema registra gli eventi di sicurezza del sistema, come l’accesso ai file, l’esecuzione di comandi e le modifiche alle configurazioni. Il file audit.rules
specifica quali eventi devono essere registrati e come devono essere registrati.
Il file è suddiviso in sezioni, ognuna delle quali definisce un set di regole per un particolare tipo di evento. Alcune delle sezioni più importanti includono:
Andare nella directory /etc/audit/rules.d
e creare un nuovo file chiamato audit.rules
ed incollare il contenuto presente nel repository (il file originale può essere eliminato in quanto le informazioni presenti sono riportate anche nel file che verrà sostituito).
In ultima battuta riavviare auditd con
service auditd restart
e successivamente riavviare rsyslog
systemctl restart rsyslog
Happy logging!
EOF