Ricerca nel sito web

Scopri l'auditing del sistema Linux con lo strumento Auditd su CentOS/RHEL


L'audit di sistema si riferisce semplicemente all'analisi approfondita di uno specifico sistema mirato: un audit è costituito dall'esame delle varie parti che compongono quel sistema, con una valutazione critica (e test se necessario) nelle diverse aree di interesse.

Leggi anche: Lynis – Strumento di controllo e scansione della sicurezza per sistemi Linux

Uno dei sottosistemi critici su RHEL/CentOS il sistema di audit Linux comunemente noto come auditd. Implementa un mezzo per tenere traccia delle informazioni rilevanti per la sicurezza su un sistema: utilizza regole preconfigurate per raccogliere grandi quantità di informazioni sugli eventi che si verificano sul sistema e le registra in un file di registro, creando così un processo di audit.

Può registrare informazioni quali data e ora, tipo e risultato di un evento; utenti che hanno causato l'evento, eventuali modifiche apportate ai file/database; usi dei meccanismi di autenticazione del sistema, come PAM, LDAP, SSH e altri.

Auditd registra inoltre qualsiasi modifica apportata ai file di configurazione di controllo o qualsiasi tentativo di accedere ai file di registro di controllo e qualsiasi tentativo di importare o esportare informazioni nel o dal sistema oltre a molte altre informazioni relative alla sicurezza.

Perché il sistema di controllo Linux è importante?

  1. Non richiede l'esecuzione di programmi o processi esterni su un sistema, rendendolo autosufficiente.
  2. È altamente configurabile e pertanto consente di visualizzare qualsiasi operazione di sistema desiderata.
  3. Aiuta a rilevare o analizzare potenziali compromissioni di un sistema.
  4. È in grado di funzionare come un sistema di rilevamento indipendente.
  5. Può funzionare con i sistemi di rilevamento delle intrusioni per abilitare il rilevamento delle intrusioni.
  6. È uno strumento vitale per il controllo delle indagini forensi.

I componenti del sistema di controllo Linux

Il sistema di controllo è costituito da due componenti fondamentali, vale a dire:

  • applicazioni e utilità/strumenti dello spazio utente e
  • elaborazione delle chiamate di sistema lato kernel: accetta le chiamate di sistema dalle applicazioni dello spazio utente e le passa attraverso tre tipi di filtri, vale a dire: utente, attività, uscita< o escludi.

La parte più importante è il demone di audit user-space (auditd) che raccoglie informazioni in base a regole preconfigurate dal kernel e genera voci in un file di registro: il il registro predefinito è /var/log/audit/audit.log.

Inoltre, audispd (daemon dispatcher di audit) è un multiplexor di eventi che interagisce con auditd e invia eventi ad altri programmi che desiderano eseguire operazioni in tempo reale elaborazione degli eventi.

Esistono numerosi strumenti user-space per la gestione e il recupero delle informazioni dal sistema di audit:

  • auditctl – un'utilità per il controllo del sistema di audit del kernel.
  • ausearch: un'utilità per la ricerca di file di registro di controllo per eventi specifici.
  • aureport – un'utilità per creare resoconti degli eventi registrati.

Come installare e configurare lo strumento di controllo in RHEL/CentOS/Fedora

Innanzitutto assicurati di verificare che lo strumento di controllo sia installato sul tuo sistema utilizzando il comando rpm e l'utilità grep come segue:

rpm -qa | grep audit

Se i pacchetti precedenti non sono installati, esegui questo comando come utente root per installarli.

yum install audit

Successivamente, controlla se auditd è abilitato e in esecuzione, esegui i comandi systemctl di seguito sul terminale.

--------------- On CentOS/RHEL 7 --------------- 
systemctl is-enabled auditd
systemctl status auditd
systemctl start auditd   [Start]
systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
service auditd status
service auditd start     [Start]
chkconfig auditd on      [Enable]

Ora vedremo come configurare auditd utilizzando il file di configurazione principale /etc/audit/auditd.conf. I parametri qui consentono di controllare come viene eseguito il servizio, ad esempio la definizione della posizione del file di registro, il numero massimo di file di registro, il formato del registro, come gestire i dischi pieni, la rotazione dei registri e molte altre opzioni.

vi /etc/audit/auditd.conf

Dall'output di esempio riportato di seguito, i parametri sono autoesplicativi.

Comprendere le regole di controllo

Come accennato in precedenza, auditd utilizza regole per raccogliere informazioni specifiche dal kernel. Queste regole sono fondamentalmente opzioni auditctl (vedi pagina man) che puoi preconfigurare nel file /etc/audit/rules.d/audit.rules (su CentOS 6, utilizzare il file /etc/audit/audit.rules), in modo che vengano caricati all'avvio.

È possibile definire tre tipi di regole di controllo:

  • Regole di controllo: consentono di modificare il comportamento del sistema di audit e alcune delle sue configurazioni.
  • Regole del file system (chiamate anche controlli di file): consentono il controllo dell'accesso a un determinato file o directory.
  • Regole chiamate di sistema: consente la registrazione delle chiamate di sistema effettuate da qualsiasi programma.

Ora apri il file di configurazione principale per la modifica:

vi /etc/audit/rules.d/audit.rules

Tieni presente che la prima sezione di questo file deve contenere regole di controllo. Quindi aggiungi le tue regole di controllo (file watch e regole di chiamata di sistema) nella sezione centrale e infine l'ultima sezione contiene le impostazioni di immutabilità che sono anche regole di controllo.

Esempi di regole di controllo di audit

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

Esempi di regole del file system Audit

Puoi definire i controlli dei file utilizzando questa sintassi:

-w /path/to/file/or/directory -p permissions -k key_name

Dove l'opzione:

  • w – viene utilizzato per specificare un file o una directory da controllare.
  • p – autorizzazioni per la registrazione, r – per accesso in lettura, w – per accesso in scrittura, x – per eseguire l'accesso e a – per la modifica dell'attributo del file o del direttore.
  • -k: consente di impostare una stringa facoltativa per identificare quale regola (o un insieme di regole) ha creato una voce di registro specifica.

Queste regole consentono al controllo di osservare gli eventi che apportano modifiche a questi file di sistema critici.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Esempi di regole per le chiamate di sistema di audit

Puoi impostare una regola per le chiamate di sistema utilizzando il modulo sottostante:

-a action,filter -S system_call -F field=value -k key_name

Dove :

  • azione – ha due valori possibili: sempre o mai.
  • filtro: specifica che il filtro di corrispondenza delle regole del kernel (attività, uscita, utente ed esclusione) viene applicato all'evento.
  • system call: nome della chiamata di sistema.
  • campo: specifica opzioni aggiuntive come architettura, PID, GID ecc. per modificare la regola.

Ecco alcune regole che puoi definire.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

Quindi aggiungi infine le impostazioni di immutabilità alla fine del file, ad esempio:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
File di configurazione delle regole di audit di esempio

Come impostare le regole Auditd utilizzando l'utilità auditctl

In alternativa, invia le opzioni a auditd mentre è in esecuzione, utilizzando auditctl come negli esempi seguenti. Questi comandi possono sovrascrivere le regole nel file di configurazione.

Per elencare tutte le regole di controllo attualmente caricate, passa il flag -l:

auditctl -l

Successivamente, prova ad aggiungere alcune regole:

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/group -p wa -k group_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -l

Informazioni sui file di registro di controllo

Tutti i messaggi di controllo vengono registrati nel file /var/log/audit/audit.log per impostazione predefinita. Per comprendere il formato della voce di registro, caricheremo una regola e controlleremo la voce di registro generata dopo un evento che corrisponde alla regola.

Supponendo di avere una directory di backup segreta, questa regola di controllo registrerà qualsiasi tentativo di accesso o modifica di questa directory:

auditctl -w /backups/secret_files/ -p rwa -k secret_backup

Ora, utilizzando un altro account di sistema, prova a spostarti nella directory sopra ed esegui il comando ls:

cd /backups/secret_files/
ls

La voce di registro sarà simile a questa.

L'evento di cui sopra è costituito da tre tipi di registrazioni di audit. Il primo è type=SYSCALL:

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

Il secondo è type=CWD.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

E l'ultimo è type=PATH:

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

Puoi trovare un elenco completo di tutti i campi evento (come msg, arch, ses ecc..) e il loro significato nel Riferimento del sistema di controllo.

È tutto per ora. Nel prossimo articolo vedremo come utilizzare ausearch per interrogare i file di audit log: spiegheremo come cercare informazioni specifiche dagli audit log. Se avete domande, contattateci tramite la sezione commenti qui sotto.