auditd odgovara na pitanja koja se javljaju posle događaja: ko je izmenio ovaj fajl, kada je kreiran ovaj korisnik, odakle je pokrenut ovaj proces. Nijedan drugi alat na njih ne odgovara — dnevnici aplikacija tu informaciju ne drže, a istoriju ljuske uređuje onaj ko ju je i ostavio.
Teškoća je u tome što vam instalacija paketa sama po sebi ne daje ništa. Podrazumevanih pravila praktično nema, dnevnik se upisuje ali je suštinski prazan, a to se otkriva u najgorem mogućem trenutku — kada su podaci potrebni a nema ih.
Instalacija
sudo apt install auditd audispd-plugins
sudo systemctl status auditd
Jedna osobenost: na nekim verzijama auditd se ne može ponovo pokrenuti preko systemctl restart — servisom se upravlja sopstvenom komandom. Pravila se ponovo učitavaju ovako:
sudo augenrules --load
sudo auditctl -l
Druga komanda prikazuje šta je zaista učitano. Verujte njoj, a ne sadržaju fajlova.
Skup pravila
Pravila idu u /etc/audit/rules.d/ kao zaseban fajl. Ispod je minimalan skup koji se isplati: odgovara na većinu pitanja koja se postavljaju tokom incidenta bez zatrpavanja diska.
sudo tee /etc/audit/rules.d/50-baseline.rules <<'EOF'
## Korisnici i privilegije
-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
## SSH pristup
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /root/.ssh/ -p wa -k ssh_keys
## Zakazani poslovi
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
## Moduli jezgra
-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
## Upotreba sudo i su
-w /usr/bin/sudo -p x -k privileged
-w /bin/su -p x -k privileged
EOF
sudo augenrules --load
Sintaksa je kratka: -w je putanja koja se prati, -p wa znači reagovati na upise i izmene atributa, -p x na izvršavanje, -k je ključ za kasniju pretragu. Ti ključevi su glavna pogodnost: bez njih se pretraga dnevnika pretvara u prosejavanje gigabajta teksta.
Šta nije na toj listi, i zašto
Vodiči često predlažu beleženje svakog execve poziva — to jest svakog pokretanja svakog programa. Iskušenje je razumljivo: potpuna slika onoga što je rađeno. U praksi to na radnom serveru proizvodi stotine megabajta dnevno, jede primetan deo procesora i dovodi do toga da se dnevnik skraćuje pre nego što zatreba. Ako je takav nivo detalja potreban, uključite ga usko — za jednog korisnika ili za trajanje istrage.
Isto važi za praćenje direktorijuma sajta: upisi u njega su neprekidni, a pravilo pretvara dnevnik u tok besmislenih događaja.
Čitanje
Pretraga po ključu, sa brojčanim identifikatorima prevedenim u imena:
sudo ausearch -k identity -i
sudo ausearch -k privileges -i -ts today
Zastavica -i neophodna je za čitljivost: bez nje dobijate brojeve umesto korisničkih imena i sistemskih poziva. -ts ograničava period (today, recent ili određeni datum).
Sažetak za period:
sudo aureport --summary -i
sudo aureport --auth -i --failed
Tri polja u zapisu događaja su zanimljiva: auid, identifikator korisnika koji je pokrenuo sesiju, uid, identitet pod kojim je radnja izvršena, i exe, program koji ju je izveo. Razlika između auid i uid odgovor je na pitanje „ko je tačno postao root": uid=0 sa auid-om određene osobe nedvosmisleno imenuje krivca, šta god da je tvrdio da jeste unutar sesije.
Disk
Podešavanja veličine žive u /etc/audit/auditd.conf:
max_log_file = 50
num_logs = 5
max_log_file_action = ROTATE
space_left = 500
space_left_action = SYSLOG
Posebno pogledajte disk_full_action. Neke konfiguracije podrazumevaju zaustavljanje sistema kada se disk napuni — ponašanje opravdano na mašinama sa revizorskim zahtevima i sasvim neumesno na veb serveru. Proverite tu vrednost pre nego što disk nestane.
Nepromenljiva pravila
Red -e 2 na kraju fajla pravila zabranjuje njihovu izmenu do ponovnog pokretanja — uključujući i onome ko je dobio root. To osetno podiže vrednost dnevnika: napadač ne može isključiti praćenje bez ponovnog pokretanja mašine, a ponovno pokretanje je i samo po sebi upadljivo.
Druga strana je očigledna: ni vi ne možete promeniti sopstvena pravila bez ponovnog pokretanja. Uključite to kada se skup pravila slegne i kada sa njim proživite mesec dana.
Čemu sve to na običnom serveru
auditd ne sprečava ništa. Njegova vrednost pokazuje se tačno jednom — kada treba rekonstruisati redosled događaja, a podaci ili postoje ili ne. Ne mogu se prikupiti unazad, zbog čega se skup pravila postavlja unapred i onda ostavlja na miru.
Praktičan znak da je raspored ispravan: lista pravila nije prazna, dnevnik ne raste nekontrolisano, a događaji sa ključevima identity i privileges pojavljuju se retko i svaki se može objasniti. Kako to izgleda na jednoj stranici pokazuje demo ispod.