Aflați Auditarea sistemului Linux cu Instrumentul Auditd pe CentOS/RHEL


Auditul de sistem se referă pur și simplu la analiza în profunzime a unui anumit sistem vizat: un audit este alcătuit dintr-o examinare a diferitelor părți care cuprind acel sistem, cu evaluare critică (și testare dacă este necesar) în diferite domenii de interes.

Citiți și: Lynis – Instrument de auditare și scanare de securitate pentru sistemele Linux

Unul dintre subsistemele critice de pe RHEL/CentOS, sistemul de audit Linux cunoscut în mod obișnuit ca auditd. Implementează un mijloc de urmărire a informațiilor relevante pentru securitate pe un sistem: folosește reguli preconfigurate pentru a colecta cantități mari de informații despre evenimentele care au loc pe sistem și le înregistrează într-un fișier jurnal, creând astfel un proces de audit.

Poate înregistra informații precum data și ora, tipul și rezultatul unui eveniment; utilizatorii care au provocat evenimentul, orice modificări aduse fișierelor/bazelor de date; utilizări ale mecanismelor de autentificare a sistemului, cum ar fi PAM, LDAP, SSH și altele.

Auditd înregistrează, de asemenea, orice modificări aduse fișierelor de configurare de audit sau orice încercare de a accesa fișierele jurnal de audit și orice eforturi de a importa sau exporta informații în sau din sistem, plus multe alte informații legate de securitate.

De ce este important sistemul de audit Linux?

  1. Nu necesită programe sau procese externe pentru a rula pe un sistem, făcându-l autonom.
  2. Este foarte configurabil, prin urmare, vă permite să vizualizați orice operațiune de sistem dorită.
  3. Ajută la detectarea sau analiza potențialelor compromisuri ale unui sistem.
  4. Este capabil să funcționeze ca un sistem de detectare independent.
  5. Poate funcționa cu sistemele de detectare a intruziunilor pentru a permite detectarea intruziunilor.
  6. Este un instrument vital pentru auditarea investigațiilor criminalistice.

Componentele sistemului de audit Linux

Sistemul de audit are două componente de bază și anume:

  • aplicații și utilități/instrumente în spațiul utilizatorului și
  • procesarea apelurilor de sistem din partea kernelului – aceasta acceptă apeluri de sistem de la aplicațiile din spațiul utilizatorului și le trece prin trei tipuri de filtre, și anume: utilizator, sarcină, ieșire< sau excludeți.

Cea mai importantă parte este demonul de audit spațiul utilizatorului (auditd) care adună informații bazate pe reguli preconfigurate, din nucleu și generează intrări într-un fișier jurnal: jurnalul implicit este /var/log/audit/audit.log.

În plus, audispd (daemon dispecer de audit) este un multiplexor de evenimente care interacționează cu auditd și trimite evenimente către alte programe care doresc să efectueze în timp real procesarea evenimentelor.

Există o serie de instrumente de spațiu utilizator pentru gestionarea și preluarea informațiilor din sistemul de audit:

  • auditctl – un utilitar pentru controlul sistemului de audit al nucleului.
  • ausearch – un utilitar pentru căutarea fișierelor jurnal de audit pentru anumite evenimente.
  • aureport – un utilitar pentru crearea de rapoarte ale evenimentelor înregistrate.

Cum se instalează și se configurează instrumentul de audit în RHEL/CentOS/Fedora

Mai întâi, asigurați-vă că verificați dacă instrumentul de audit este instalat pe sistemul dvs. folosind comanda rpm și utilitarul grep, după cum urmează:

rpm -qa | grep audit

Dacă nu aveți instalate pachetele de mai sus, rulați această comandă ca utilizator root pentru a le instala.

yum install audit

Apoi, verificați dacă auditd este activat și rulează, lansați comenzile systemctl de mai jos pe terminal.

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

Acum vom vedea cum să configurați auditd folosind fișierul de configurare principal /etc/audit/auditd.conf. Parametrii de aici vă permit să controlați modul în care funcționează serviciul, cum ar fi definirea locației fișierului jurnal, numărul maxim de fișiere jurnal, formatul jurnalului, cum să gestionați discurile pline, rotația jurnalului și multe alte opțiuni.

vi /etc/audit/auditd.conf

Din eșantionul de ieșire de mai jos, parametrii se explică de la sine.

Înțelegerea regulilor de audit

După cum am menționat mai devreme, auditd folosește reguli pentru a colecta informații specifice din nucleu. Aceste reguli sunt practic opțiuni auditctl (consultați pagina de manual) pe care le puteți preconfigura reguli în fișierul /etc/audit/rules.d/audit.rules (pe CentOS 6, utilizați fișierul /etc/audit/audit.rules), astfel încât acestea să fie încărcate la pornire.

Există trei tipuri de reguli de audit pe care le puteți defini:

  • Reguli de control – acestea permit modificarea comportamentului sistemului de audit și a câteva dintre configurațiile acestuia.
  • Reguli ale sistemului de fișiere (denumite și supravegherea fișierelor) – permit auditarea accesului la un anumit fișier sau un director.
  • Reguli de apel de sistem – permite înregistrarea apelurilor de sistem efectuate de orice program.

Acum deschideți fișierul de configurare principal pentru editare:

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

Rețineți că prima secțiune a acestui fișier trebuie să conțină reguli de control. Apoi adăugați regulile de audit (supraveghere fișiere și reguli de apel de sistem) în secțiunea din mijloc și, în final, ultima secțiune conține setări de imuabilitate care sunt, de asemenea, reguli de control.

Exemple de reguli de control al auditului

-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

Exemple de reguli ale sistemului de fișiere Auditd

Puteți defini urmărirea fișierelor folosind această sintaxă:

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

Unde opțiunea:

  • w – este folosit pentru a specifica un fișier sau un director pe care să îl supravegheați.
  • p – permisiuni pentru a fi înregistrate, r – pentru acces de citire, w – pentru acces de scriere, x – pentru executați acces și a – pentru modificarea atributului de fișier sau director.
  • -k – vă permite să setați un șir opțional pentru a identifica ce regulă (sau un set de reguli) a creat o anumită intrare în jurnal.

Aceste reguli permit auditarea pentru a urmări evenimentele care fac modificări acestor fișiere critice de sistem.

-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

Exemple de reguli de apel de sistem Auditd

Puteți seta o regulă de apel de sistem folosind formularul de mai jos:

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

Unde :

  • acțiune – are două valori posibile: întotdeauna sau niciodată.
  • filtru – specifică că filtrul de potrivire a regulilor nucleului (sarcină, ieșire, utilizator și excludere) este aplicat evenimentului.
  • apel de sistem – numele apelului de sistem.
  • câmp – specifică opțiuni suplimentare, cum ar fi arhitectura, PID, GID etc. pentru a modifica regula.

Iată câteva reguli pe care le puteți defini.

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

Apoi, în sfârșit, adăugați setările de imuabilitate la sfârșitul fișierului, de exemplu:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
Exemplu de fișier de configurare a regulilor de auditd

Cum să setați regulile de auditd folosind utilitarul auditctl

Ca alternativă, trimiteți opțiunile către auditd în timp ce rulează, folosind auditctl ca în exemplele următoare. Aceste comenzi pot suprascrie regulile din fișierul de configurare.

Pentru a lista toate regulile de audit încărcate în prezent, treceți marcajul -l:

auditctl -l

Apoi, încercați să adăugați câteva reguli:

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

Înțelegerea fișierelor jurnal de auditd

Toate mesajele de audit sunt înregistrate implicit în fișierul /var/log/audit/audit.log. Pentru a înțelege formatul de intrare în jurnal, vom încărca o regulă și vom verifica intrarea în jurnal generată după un eveniment care se potrivește cu regula.

Presupunând că avem un director secret de backup, această regulă de audit va înregistra orice încercare de a accesa sau modifica acest director:

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

Acum, folosind un alt cont de sistem, încercați să vă mutați în directorul de mai sus și să rulați comanda ls:

cd /backups/secret_files/
ls

Intrarea de jurnal va arăta așa.

Evenimentul de mai sus este alcătuit din trei tipuri de înregistrări de audit. Primul este 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"

Al doilea este type=CWD.

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

Și ultimul este 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

Puteți găsi o listă completă a tuturor câmpurilor de evenimente (cum ar fi msg, arch, ses etc..) și semnificațiile acestora în Referința sistemului de audit.

Asta este tot pentru acum. În următorul articol, vom analiza cum să folosiți ausearch pentru a interoga fișierele jurnal de audit: vom explica cum să căutați informații specifice din jurnalele de audit. Dacă aveți întrebări, vă rugăm să ne contactați prin secțiunea de comentarii de mai jos.