auditd răspunde la întrebări care apar abia după eveniment: cine a modificat acest fișier, când a fost creat acest utilizator, de unde a fost pornit acest proces. Niciun alt instrument nu răspunde la ele — în jurnalele aplicațiilor asemenea date nu există, iar istoricul comenzilor îl editează cel care l-a lăsat în urmă.

Dificultatea este că simpla instalare a pachetului nu aduce nimic. Reguli implicite practic nu există, jurnalul se scrie, dar este gol ca substanță, iar asta se descoperă în cel mai prost moment: când datele sunt necesare și nu există.

Instalare

sudo apt install auditd audispd-plugins
sudo systemctl status auditd

O particularitate: în unele versiuni, auditd nu repornește prin systemctl restart — serviciul este controlat de o comandă proprie. Regulile se reîncarcă astfel:

sudo augenrules --load
sudo auditctl -l

A doua comandă arată ce este într-adevăr încărcat. Ei să-i dai crezare, nu conținutului fișierelor.

Setul de reguli

Regulile se pun în /etc/audit/rules.d/ ca fișier separat. Mai jos este un set minim care se amortizează: răspunde la majoritatea întrebărilor dintr-un incident și nu umple discul.

sudo tee /etc/audit/rules.d/50-baseline.rules <<'EOF'
## Utilizatori și drepturi
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/sudoers -p wa -k privileges
-w /etc/sudoers.d/ -p wa -k privileges

## Acces SSH
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /root/.ssh/ -p wa -k ssh_keys

## Sarcini programate
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron

## Module de nucleu
-w /sbin/insmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module -S delete_module -k modules

## Utilizarea sudo și su
-w /usr/bin/sudo -p x -k privileged
-w /bin/su -p x -k privileged
EOF
sudo augenrules --load

Sintaxa este scurtă: -w este calea urmărită, -p wa înseamnă reacție la scriere și la modificarea atributelor, -p x la execuție, iar -k este cheia după care vei căuta ulterior. Tocmai cheile sunt principalul avantaj practic: fără ele, căutarea în jurnal se transformă în răsfoirea unui gigaoctet de text.

Ce nu este în acest set și de ce

Ghidurile propun adesea înregistrarea tuturor apelurilor execve — adică fiecare pornire a fiecărui program. Tentația este de înțeles: tabloul complet al acțiunilor. În practică, pe un server de producție asta dă sute de megaocteți pe zi, consumă o parte vizibilă din procesor și duce la nevoia de a tăia jurnalul înainte de a fi necesar. Dacă acest nivel de detaliu este obligatoriu, activează-l punctual — pentru un singur utilizator sau pe durata unei investigații.

Același lucru este valabil pentru urmărirea directorului site-ului: acolo se scrie neîntrerupt, iar regula transformă jurnalul într-un flux de evenimente lipsite de sens.

Citirea

Căutare după cheie, cu traducerea identificatorilor numerici în nume:

sudo ausearch -k identity -i
sudo ausearch -k privileges -i -ts today

Opțiunea -i este indispensabilă pentru lizibilitate: fără ea vei vedea numere în loc de nume de utilizatori și de apeluri de sistem. -ts limitează perioada (today, recent sau o dată anume).

Sinteză pe o perioadă:

sudo aureport --summary -i
sudo aureport --auth -i --failed

Într-o înregistrare de eveniment sunt interesante trei câmpuri: auid — identificatorul utilizatorului care a inițiat sesiunea, uid — identitatea sub care a fost efectuată acțiunea, și exe — programul care a efectuat-o. Diferența dintre auid și uid este răspunsul la întrebarea „cine anume a devenit root”: uid=0 cu auid-ul unei persoane anume indică fără echivoc responsabilul, oricine ar fi pretins că este pe parcursul sesiunii.

Discul

Setările de volum se află în /etc/audit/auditd.conf:

max_log_file = 50
num_logs = 5
max_log_file_action = ROTATE
space_left = 500
space_left_action = SYSLOG

Uită-te separat la disk_full_action. În unele configurații, valoarea implicită este oprirea sistemului la umplerea discului — un comportament justificat pe mașini cu cerințe de audit și complet nepotrivit pe un server web. Această valoare trebuie verificată înainte ca discul să se umple.

Modul cu reguli imuabile

Linia -e 2 la sfârșitul fișierului de reguli interzice modificarea lor până la repornire — inclusiv celui care a obținut root. Asta ridică vizibil valoarea jurnalului: un atacator nu poate dezactiva urmărirea fără să repornească mașina, iar o repornire este în sine vizibilă.

Reversul este evident: nici propriile reguli nu le vei putea schimba fără repornire. Merită activat când setul s-a stabilizat și ai trăit cu el o lună.

De ce asta pe un server obișnuit

auditd nu previne nimic. Valoarea lui se arată exact o dată — când trebuie reconstituită succesiunea evenimentelor, iar datele fie există, fie nu. Nu pot fi colectate retroactiv, de aceea setul de reguli se creează din timp și apoi se lasă în pace.

Un semn practic că configurația este corectă: lista de reguli nu este goală, jurnalul nu crește necontrolat, iar evenimentele cu cheile identity și privileges apar rar și fiecare poate fi explicat. Cum arată asta pe o singură pagină arată demonstrația de mai jos.