Controllo del sistema con auditd
Il controllo del sistema è un'attività molto importante che dovrebbe far parte di ogni server. Ci consente di controllare i minimi dettagli relativi a ciò che sta accadendo esattamente all'interno del sistema. auditd è un componente dello spazio utente del sistema di auditing Linux. Ciò significa che gli utenti del sistema potranno eseguire auditd per configurare regole e avvisi per la funzionalità di controllo con il sistema Linux.
Una delle cose migliori di auditd è che è strettamente integrato con il kernel, quindi ci dà il potere di monitorare quasi tutto ciò che vogliamo, davvero. Per consentire agli utenti di vedere cosa sta succedendo, auditd può registrare tutti gli eventi relativi all'audit su un disco e possiamo utilizzare vari strumenti come ausearch o aureport per esaminare i file di registro.
Per impostazione predefinita, non ci sono regole configurate. Dobbiamo scrivere le nostre regole in /etc/audit/audit.rules file di configurazione che verrà letto e verranno applicate le azioni di controllo corrispondenti.
Installazione di Auditd
Ora che abbiamo capito in qualche modo di cosa tratta auditd, andiamo avanti e iniziamo a lavorare con auditd con il caso d'uso precedente:
1. Installare i pacchetti auditd. I pacchetti auditd fanno parte dell'installazione predefinita dei sistemi CentOS 7. Possiamo verificarlo con il seguente comando:
# rpm -qa | grep audit audit-libs-2.6.5-3.el7_3.1.x86_64 audit-2.6.5-3.el7_3.1.x86_64 audit-libs-python-2.6.5-3.el7_3.1.x86_64
2. Se il pacchetto non fa parte del nostro sistema, possiamo procedere e installarlo:
# yum install audit
3. Assicurarsi che il demone di controllo sia in esecuzione. Useremo il seguente comando:
# systemctl status auditd auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-10-24 04:33:48 UTC; 4min 21s ago Docs: man:auditd(8) https://people.redhat.com/sgrubb/audit/ Process: 425 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Main PID: 424 (auditd) CGroup: /system.slice/auditd.service └─424 /sbin/auditd -n
Dato che abbiamo un demone di audit attivo e funzionante, vediamo come possiamo utilizzare auditd per ottenere tutti e 4 i casi d'uso.
Regole di controllo per copiare, spostare, eliminare e uccidere i comandi
1. Fai un backup del file di configurazione esistente (regole di audit):
# cp /etc/audit/audit.rules /etc/audit/audit.rules.bkp
2. Modifica il file /etc/audit/audit.rules e aggiungi le seguenti regole per renderlo persistente:
# vi /etc/audit/audit.rules # Audit Copy, Move, Delete & Create file commands -a exit,always -F arch=b64 -S execve -F path=/bin/cp -k Copy -a exit,always -F arch=b64 -S execve -F path=/bin/mv -k Move_Rename -a exit,always -F arch=b64 -S execve -F path=/bin/rm -k Delete -a exit,always -F arch=b64 -S execve -F path=/bin/vi -k Create_Edit_View_File # Audit shutdown & Reboot command -a exit,always -F arch=b64 -S execve -F path=/sbin/reboot -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/init -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/poweroff -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/shutdown -k Reboot # Audit mount unmount commands -a exit,always -F arch=b64 -S execve -F path=/bin/mount -k mount_device -a exit,always -F arch=b64 -S execve -F path=/bin/umount -k unmount_device # Kill Process -a exit,always -F arch=b64 -S kill -k Kill_Process
3. Riavvia il servizio auditd per applicare le modifiche.
# service auditd restart
4. Elenca le regole aggiunte, per verificare che siano corrette:
# auditctl -lNota :bash (e molte altre shell) ha un comando "kill" integrato che in realtà non esegue /usr/bin/kill. Quindi, se invece viene eseguito il comando integrato, comm=bash è corretta. Non c'è modo di forzare il sistema a usare il programma esterno /usr/bin/kill. comm=uccidi non accadrà in tutti i casi, perché le shell possono chiamare direttamente la syscall senza eseguire il programma esterno chiamato "kill"