Prima di iniziare a discutere del sistema di auditing, vorrei porre alcune domande. Come si controllano i comandi eseguiti dall'utente? Come si controlla se è stato effettuato l'accesso a un file o a una directory? Come si registrano vari eventi relativi alla sicurezza? Come si monitorano le chiamate di sistema, l'accesso alla rete ecc... e infine come si genera un rapporto da esso? Bene, il sistema di auditing Linux è la risposta a tutte le domande precedenti.
Il sistema di auditing Linux consente a un amministratore di configurare regole di audit per monitorare le chiamate di sistema, l'accesso alla rete, i file ecc... e generare un rapporto di riepilogo, che può essere successivamente analizzato e indagato per attività sospette. A partire dalla versione 2.6, il kernel Linux viene fornito con auditd demone e all'avvio legge le regole preconfigurate da /etc/audit/audit.rules . L'amministratore può utilizzare auditctl comando per controllare il sistema di audit, creare regole ecc... Gli altri due comandi importanti sono:
- ausearch – comando che consente di interrogare i log di controllo in base ai criteri indicati.
- aureport – comando utilizzato per generare report.
I file di configurazione dell'audit si trovano in /etc/audit e accede a /var/log/audit.
- /etc/audit/audit.rules – file in cui vengono create e caricate le regole permanenti durante auditd demone è avviato.
- /etc/audit/audit.conf – file di configurazione dell'audit
- /etc/audit/rules.d/ – cartella che contiene file di regole personalizzate.
Di seguito è riportato l'elenco delle informazioni che l'audit registrerà:
- Data e ora, tipo ed esito dell'evento
- UID, GID che ha attivato l'evento
- Etichette di sensibilità di soggetto e oggetto
- Accesso a tutti i sistemi di autenticazione come SSH, Kerberos ecc...
- Controlli dell'integrità dei file
- Importa ed esporta informazioni.
- Includi o escludi eventi in base all'identità dell'utente, all'oggetto e ad altri attributi.
- Tentativi di modificare i file e i registri di configurazione dell'audit.
Come configurare auditd in CentOS e Ubuntu?
Su CentOS:
# yum install audit
Su Ubuntu:
# apt-get install auditd :::::::::: Setting up auditd (1:2.4.5-1ubuntu2) ... update-rc.d: warning: start and stop actions are no longer supported; falling ba ck to defaults Processing triggers for libc-bin (2.23-0ubuntu3) ... Processing triggers for systemd (229-4ubuntu6) ... Processing triggers for ureadahead (0.100.0-19) ...
Una volta installato il pacchetto, il auditd demone verrà avviato automaticamente. In caso contrario, puoi avviarlo utilizzando i seguenti comandi:
# /etc/init.d/auditd start
Elenca le regole di audit attive:
# auditctl -l No rules
Come creare regole di audit?
Creiamo una regola per monitorare il file /etc/passwd
# auditctl -w /etc/passwd -p war -k audit-passwd
Il comando precedente crea un controllo sul file /etc/passwd .
- –con /etc/passwd – crea un controllo per il file /etc/passwd
- -p guerra – imposta il filtro di autorizzazione – w per la scrittura, r per la lettura, a per la modifica dell'attributo ed e per l'esecuzione.
- –k audit-passwd – qui audit-passwd è una chiave per identificare la regola in modo univoco dai log.
Fondamentalmente, il comando precedente tiene traccia di /etc/passwd per chiunque tenti di scrivere, leggere o modificare gli attributi del file.
Ora la regola è stata creata, accediamo come utente non privilegiato e proviamo ad accedere a /etc/passwd file.
$ grep "someinformation" /etc/passwd
$ vim /etc/passwd
I due comandi precedenti sono stati eseguiti da un utente locale chiamato "ubuntu" e ci si aspetta che questi eventi vengano registrati in /var/log/audit/audit.log file.
Come trovare chi ha cambiato o effettuato l'accesso a /etc/passwd?
Useremo ausearch comando:
# ausearch -f /etc/passwd -i
type=PROCTITLE msg=audit(08/05/2016 11:56:10.088:72) : proctitle=grep --color=auto henry /etc/passwd type=PATH msg=audit(08/05/2016 11:56:10.088:72) : item=0 name=/etc/passwd inode=56913 dev=fd:01 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL type=CWD msg=audit(08/05/2016 11:56:10.088:72) : cwd=/home/ubuntu type=SYSCALL msg=audit(08/05/2016 11:56:10.088:72) : arch=x86_64 syscall=openat success=yes exit=3 a0=0xffffffffffffff9c a1=0x7ffebf6cb887 a2=O_RDONLY|O_NOCT TY a3=0x0 items=1 ppid=14098 pid=14992 auid=ubuntu uid=ubuntu gid=ubuntu euid=ubuntu suid=ubuntu fsuid=ubuntu egid=ubuntu sgid=ubuntu fsgid=ubuntu tty=pts0 s es=1302 comm=grep exe=/bin/grep key=audit-passwd ---- type=PROCTITLE msg=audit(08/05/2016 11:56:12.028:74) : proctitle=vim /etc/passwd type=PATH msg=audit(08/05/2016 11:56:12.028:74) : item=0 name=/etc/passwd inode=56913 dev=fd:01 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL type=CWD msg=audit(08/05/2016 11:56:12.028:74) : cwd=/home/ubuntu type=SYSCALL msg=audit(08/05/2016 11:56:12.028:74) : arch=x86_64 syscall=open success=yes exit=3 a0=0x556072132500 a1=O_RDONLY a2=0x0 a3=0x556072347f50 items =1 ppid=14098 pid=14993 auid=ubuntu uid=ubuntu gid=ubuntu euid=ubuntu suid=ubuntu fsuid=ubuntu egid=ubuntu sgid=ubuntu fsgid=ubuntu tty=pts0 ses=1302 comm=vi m exe=/usr/bin/vim.basic key=audit-passwd
L'output del registro sopra indica che l'utente ha chiamato ubuntu avuto accesso al file /etc/passwd usando i comandi grep e vim . Per impostazione predefinita, l'output del registro utilizzerà UID e GID, ma l'opzione '-i ' mapperà l'uid e il gid ai nomi corrispondenti (nome utente leggibile dall'uomo e nome del gruppo).
Come creare un orologio per monitorare le modifiche di un particolare utente?
#auditctl -w /usr/local/test -p wa -F uid=1001 -k audit-temp
Cerca nel registro gli eventi:
#ausearch -ua 1001 -i
Il comando precedente elencherà tutti gli eventi attivati dall'ID utente 1001 .
Creazione di regole permanenti
Nota :le regole create utilizzando auditctl sono temporanei e rimarranno attivi fino all'auditd demone viene riavviato. I comandi seguenti spiegano questo scenario.
# auditctl -l -w /etc/passwd -p rwa -k audit-passwd -a always,exit -S all -F dir=/etc -F perm=wa -F uid=1001 -F key=audit-temp -a always,exit -S all -F dir=/usr/local/test -F perm=wa -F uid=1001 -F key=audit
Il comando precedente stampa l'elenco delle regole attive. Ora proviamo a riavviare auditd demone.
# /etc/init.d/auditd restart [ ok ] Restarting auditd (via systemctl): auditd.service.
Controlla di nuovo le regole attive.
# auditctl -l No rules
Dopo il auditd daemon viene riavviato, tutte le regole che sono state create usando auditctl il comando verrà rimosso (perché erano temporanei). Se hai sperimentato con auditctl comando e desideri creare quelle regole in modo permanente, quindi puoi modificare /etc/audit/audit.rules file o crea un nuovo file di regole in /etc/audit/rules.d/ cartella.
# echo "-D" > /etc/audit/rules.d/new.rules # auditctl -l >> /etc/audit/rules.d/new.rules
Il primo comando aggiunge l'azione di eliminazione della regola prima di aggiungere il nuovo set di regole.
Come generare un rapporto di audit?
Rapporto di riepilogo:
# aureport Summary Report ====================== Range of time in logs: 08/05/2016 11:45:39.464 - 08/08/2016 06:14:14.328 Selected time for report: 08/05/2016 11:45:39 - 08/08/2016 06:14:14.328 Number of changes in configuration: 7 Number of changes to accounts, groups, or roles: 5 Number of logins: 1 Number of failed logins: 6 Number of authentications: 8 Number of failed authentications: 6 Number of users: 3 Number of terminals: 8 Number of host names: 2 Number of executables: 37 Number of commands: 39 Number of files: 13 Number of AVC's: 0 Number of MAC events: 0 Number of failed syscalls: 12 Number of anomaly events: 0 Number of responses to anomaly events: 0 Number of crypto events: 0 Number of integrity events: 0 Number of virt events: 0 Number of keys: 2 Number of process IDs: 214 Number of events: 1337
Il comando precedente stamperà il rapporto di riepilogo di tutti gli eventi registrati.
Stampa un rapporto di riepilogo di tutti i tentativi di accesso non riusciti
# aureport --login --summary -i Login Summary Report ============================ total auid ============================ 6 henry 1 ubuntu
Genera un rapporto di riepilogo degli eventi dei file eseguibili:
# aureport -x --summary
Genera un rapporto di tutti i file di controllo che vengono interrogati e dell'intervallo di tempo degli eventi che includono
# aureport -t Log Time Range Report ===================== /var/log/audit/audit.log: 08/05/2016 11:45:39.464 - 08/08/2016 06:17:01.068
Genera un rapporto di tutti gli eventi registrati nell'intervallo di date:
# aureport --start 08/05/2016 00:00:00 --end 08/07/2016 00:00:00
Genera rapporto da ausearch uscita
# ausearch -k audit-temp | aureport -f -i
Come eliminare tutte le regole di audit?
# auditctl -D
Nota :Il comando sopra eliminerà tutte le regole attive in auditd in esecuzione demone. Tuttavia, le regole permanenti nel file /etc/audit/audit.rules verranno caricate ogni volta che auditd è avviato.
È tutto auditd può fare? No! Il sistema di audit Linux è in grado di fare di più e ciò che è elencato qui è solo una piccola parte di questo potente sistema. Dai un'occhiata alle pagine man di auditd , controllo di controllo , ausearch e aureport per ulteriori informazioni.