Naučite reviziju Linux sustava pomoću alata Auditd na CentOS/RHEL


Revizija sustava jednostavno se odnosi na dubinsku analizu određenog ciljanog sustava: revizija se sastoji od ispitivanja različitih dijelova koji čine taj sustav, s kritičkom procjenom (i testiranjem ako je potrebno) u različitim područjima od interesa.

Pročitajte također: Lynis – alat za sigurnosnu reviziju i skeniranje za Linux sustave

Jedan od kritičnih podsustava na RHEL/CentOS sustavu revizije Linuxa poznatom kao auditd. Implementira sredstva za praćenje informacija relevantnih za sigurnost u sustavu: koristi unaprijed konfigurirana pravila za prikupljanje golemih količina informacija o događajima koji se događaju u sustavu i bilježi ih u datoteku dnevnika, stvarajući tako revizijsko ispitivanje.

Može bilježiti podatke kao što su datum i vrijeme, vrsta i rezultat događaja; korisnici koji su uzrokovali događaj, sve izmjene napravljene na datotekama/bazama podataka; korištenje mehanizama provjere autentičnosti sustava, kao što su PAM, LDAP, SSH i drugi.

Auditd također bilježi sve promjene napravljene u konfiguracijskim datotekama revizije ili sve pokušaje pristupa datotekama dnevnika revizije i sve pokušaje uvoza ili izvoza informacija u ili iz sustava, plus puno drugih informacija vezanih uz sigurnost.

Zašto je Linux sustav revizije važan?

  1. Ne zahtijeva nikakve vanjske programe ili procese za rad na sustavu što ga čini samopouzdanim.
  2. Vrlo je konfigurabilan i stoga vam omogućuje pregled svih radnji sustava koje želite.
  3. Pomaže u otkrivanju ili analizi potencijalnih kompromitacija sustava.
  4. Može raditi kao neovisni sustav detekcije.
  5. Može raditi sa sustavima za otkrivanje upada kako bi omogućio otkrivanje upada.
  6. To je vitalni alat za reviziju forenzičkih istraga.

Komponente sustava za reviziju Linuxa

Sustav revizije ima dvije ključne komponente, i to:

  • aplikacije korisničkog prostora i uslužni programi/alati, i
  • obrada sistemskih poziva na strani jezgre – prihvaća sistemske pozive iz aplikacija korisničkog prostora i propušta ih kroz tri vrste filtara, naime: korisnik, zadatak, izlaz< ili isključi.

Najvažniji dio je demon za reviziju korisničkog prostora (auditd) koji prikuplja informacije na temelju unaprijed konfiguriranih pravila iz kernela i generira unose u datoteci dnevnika: zadani dnevnik je /var/log/audit/audit.log.

Osim toga, audispd (audit dispatcher daemon) je multipleksor događaja koji je u interakciji s auditd i šalje događaje drugim programima koji žele izvršavati u stvarnom vremenu obrada događaja.

Postoji niz alata korisničkog prostora za upravljanje i dohvaćanje informacija iz sustava revizije:

  • auditctl – uslužni program za kontrolu sustava revizije kernela.
  • ausearch – uslužni program za pretraživanje revizijskih log datoteka za određene događaje.
  • aureport – uslužni program za izradu izvješća o snimljenim događajima.

Kako instalirati i konfigurirati alat za reviziju u RHEL/CentOS/Fedora

Najprije provjerite je li alat za reviziju instaliran na vašem sustavu pomoću naredbe rpm i uslužnog programa grep kako slijedi:

rpm -qa | grep audit

Ako nemate instalirane gore navedene pakete, pokrenite ovu naredbu kao root korisnik da ih instalirate.

yum install audit

Zatim provjerite je li auditd omogućen i pokrenut, izdajte systemctl naredbe ispod na terminalu.

--------------- 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]

Sada ćemo vidjeti kako konfigurirati auditd pomoću glavne konfiguracijske datoteke /etc/audit/auditd.conf. Parametri vam ovdje omogućuju kontrolu rada usluge, kao što je definiranje lokacije datoteke dnevnika, maksimalnog broja datoteka dnevnika, formata dnevnika, načina postupanja s punim diskovima, rotacije dnevnika i mnogih drugih opcija.

vi /etc/audit/auditd.conf

Iz donjeg uzorka rezultata, parametri su jasni sami po sebi.

Razumijevanje pravila revizije

Kao što smo ranije spomenuli, auditd koristi pravila za prikupljanje specifičnih informacija iz kernela. Ova pravila su u osnovi opcije auditctl (pogledajte man stranicu) koje možete unaprijed konfigurirati u datoteci /etc/audit/rules.d/audit.rules (na CentOS-u 6, koristite datoteku /etc/audit/audit.rules), tako da se učitavaju pri pokretanju.

Postoje tri vrste revizijskih pravila koja možete definirati:

  • Kontrolna pravila – ona omogućuju izmjenu ponašanja sustava revizije i nekoliko njegovih konfiguracija.
  • Pravila datotečnog sustava (također se nazivaju nadzori datoteka) – omogućuju reviziju pristupa određenoj datoteci ili direktoriju.
  • Pravila za pozive sustava – dopušta bilježenje poziva sustava bilo kojeg programa.

Sada otvorite glavnu konfiguracijsku datoteku za uređivanje:

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

Imajte na umu da prvi odjeljak ove datoteke mora sadržavati kontrolna pravila. Zatim dodajte svoja pravila revizije (provjere datoteka i pravila pozivanja sustava) u srednji odjeljak, a na kraju posljednji odjeljak sadrži postavke nepromjenjivosti koje su ujedno i pravila kontrole.

Primjeri pravila kontrole revizije

-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

Primjeri Auditd pravila datotečnog sustava

Možete definirati nadzor datoteka pomoću ove sintakse:

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

Gdje je opcija:

  • w – koristi se za određivanje datoteke ili direktorija nad kojima treba nadzirati.
  • p – dopuštenja koja se bilježe, r – za pristup čitanju, w – za pristup pisanju, x – za izvrši pristup i a – za promjenu atributa datoteke ili direktorija.
  • -k – omogućuje vam postavljanje izbornog niza za identifikaciju koje je pravilo (ili skup pravila) stvorilo određeni zapis u dnevniku.

Ova pravila dopuštaju reviziji da prati događaje koji mijenjaju ove kritične sistemske datoteke.

-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

Primjeri pravila poziva sustava Auditd

Možete postaviti pravilo za sistemski poziv pomoću donjeg obrasca:

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

gdje :

  • radnja – ima dvije moguće vrijednosti: uvijek ili nikad.
  • filtar – navodi filtar za podudaranje pravila jezgre (zadatak, izlaz, korisnik i isključivanje) koji se primjenjuje na događaj.
  • sistemski poziv – naziv sistemskog poziva.
  • polje – navodi dodatne opcije kao što su arhitektura, PID, GID itd. za izmjenu pravila.

Ovdje su neka pravila koja možete definirati.

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

Zatim na kraju dodajte postavke nepromjenjivosti na kraju datoteke, na primjer:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
Primjer konfiguracijske datoteke Auditd pravila

Kako postaviti Auditd pravila pomoću uslužnog programa auditctl

Alternativno, pošaljite opcije na auditd dok je pokrenut, koristeći auditctl kao u sljedećim primjerima. Ove naredbe mogu nadjačati pravila u konfiguracijskoj datoteci.

Za popis svih trenutno učitanih revizijskih pravila, proslijedite oznaku -l:

auditctl -l

Zatim pokušajte dodati nekoliko pravila:

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

Razumijevanje Auditd log datoteka

Sve se revizijske poruke prema zadanim postavkama bilježe u datoteku /var/log/audit/audit.log. Da bismo razumjeli format unosa dnevnika, učitati ćemo pravilo i provjeriti unos dnevnika generiran nakon događaja koji odgovara pravilu.

Pod pretpostavkom da imamo tajni direktorij sigurnosnih kopija, ovo pravilo revizije će zabilježiti sve pokušaje pristupa ili izmjene ovog direktorija:

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

Sada, koristeći drugi sistemski račun, pokušajte prijeći u gornji direktorij i pokrenite naredbu ls:

cd /backups/secret_files/
ls

Unos u dnevnik će izgledati ovako.

Gore navedeni događaj sastoji se od tri vrste revizijskih zapisa. Prvi je 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"

Drugi je type=CWD.

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

I zadnji je 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

Potpuni popis svih polja događaja (kao što su msg, arch, ses itd..) i njihova značenja možete pronaći u referencama sustava revizije.

To je sve za sada. U sljedećem ćemo članku pogledati kako koristiti ausearch za postavljanje upita u datoteke revizijskog dnevnika: objasnit ćemo kako tražiti određene informacije iz revizijskog dnevnika. Ako imate pitanja, obratite nam se putem odjeljka za komentare u nastavku.