Az auditd olyan kérdésekre válaszol, amelyek csak utólag merülnek fel: ki módosította ezt a fájlt, mikor hozták létre ezt a felhasználót, honnan indult ez a folyamat. Ezekre semmilyen más eszköz nem válaszol — az alkalmazásnaplókban nincsenek ilyen adatok, a parancselőzményeket pedig az szerkeszti, aki hátrahagyta.
A nehézség az, hogy a csomag telepítése önmagában semmit nem ad. Alapértelmezett szabályok gyakorlatilag nincsenek, a napló íródik, de tartalmilag üres, és ez a lehető legrosszabb pillanatban derül ki: amikor kellenének az adatok, és nincsenek.
Telepítés
sudo apt install auditd audispd-plugins
sudo systemctl status auditd
Egy sajátosság: bizonyos verziókban az auditd nem indul újra a systemctl restart paranccsal — a szolgáltatást saját parancs vezérli. A szabályok így tölthetők be újra:
sudo augenrules --load
sudo auditctl -l
A második parancs mutatja, mi van valóban betöltve. Ennek higgy, ne a fájlok tartalmának.
A szabálykészlet
A szabályokat az /etc/audit/rules.d/ könyvtárba tesszük külön fájlként. Alább egy minimális készlet, amely megtérül: az incidens során felmerülő kérdések többségére válaszol, és nem tölti meg a lemezt.
sudo tee /etc/audit/rules.d/50-baseline.rules <<'EOF'
## Felhasználók és jogosultságok
-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-hozzáférés
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /root/.ssh/ -p wa -k ssh_keys
## Ütemezett feladatok
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
## Kernelmodulok
-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
## A sudo és az su használata
-w /usr/bin/sudo -p x -k privileged
-w /bin/su -p x -k privileged
EOF
sudo augenrules --load
A szintaxis rövid: a -w a figyelt útvonal, a -p wa írásra és attribútumváltozásra való reagálást jelent, a -p x végrehajtásra, a -k pedig az a kulcs, amely szerint később keresel. Éppen a kulcsok jelentik a fő kényelmet: nélkülük a naplóban való keresés egy gigabájtnyi szöveg átnézésévé alakul.
Mi nincs ebben a készletben, és miért
Az útmutatók gyakran javasolják az összes execve hívás rögzítését — azaz minden program minden indítását. A kísértés érthető: teljes kép a tevékenységekről. A gyakorlatban ez éles szerveren napi több száz megabájtot ad, elviszi a processzor jelentős részét, és oda vezet, hogy a naplót még azelőtt vágni kell, hogy szükség lenne rá. Ha ilyen részletességre van szükség, kapcsold be pontszerűen — egy felhasználóra vagy a vizsgálat idejére.
Ugyanez vonatkozik a webhely könyvtárának figyelésére: oda folyamatosan írnak, és a szabály a naplót jelentés nélküli események áradatává változtatja.
Olvasás
Keresés kulcs szerint, a numerikus azonosítók nevekre fordításával:
sudo ausearch -k identity -i
sudo ausearch -k privileges -i -ts today
Az -i kapcsoló az olvashatóság miatt elengedhetetlen: nélküle felhasználónevek és rendszerhívások helyett számokat látsz. A -ts korlátozza az időszakot (today, recent vagy egy konkrét dátum).
Összesítés egy időszakra:
sudo aureport --summary -i
sudo aureport --auth -i --failed
Egy eseménybejegyzésben három mező érdekes: az auid — a munkamenetet indító felhasználó azonosítója, a uid — az az identitás, amellyel a műveletet végrehajtották, és az exe — a program, amely végrehajtotta. Az auid és a uid közti különbség válasz arra a kérdésre, hogy „ki lett pontosan root”: a uid=0 egy konkrét személy auid értékével egyértelműen megmutatja a felelőst, bárkinek adta is ki magát a munkamenet során.
Lemez
A méretbeállítások az /etc/audit/auditd.conf fájlban vannak:
max_log_file = 50
num_logs = 5
max_log_file_action = ROTATE
space_left = 500
space_left_action = SYSLOG
Külön nézd meg a disk_full_action beállítást. Egyes konfigurációkban az alapérték a rendszer leállítása a lemez megtelésekor — auditkövetelményekkel bíró gépeken indokolt viselkedés, egy webszerveren viszont teljesen helytelen. Ezt az értéket még a lemez megtelése előtt ellenőrizni kell.
A megváltoztathatatlan szabályok üzemmódja
Az -e 2 sor a szabályfájl végén megtiltja a szabályok módosítását újraindításig — annak is, aki rootot szerzett. Ez érezhetően növeli a napló értékét: a támadó nem tudja kikapcsolni a figyelést a gép újraindítása nélkül, az újraindítás pedig önmagában feltűnő.
A másik oldal nyilvánvaló: a saját szabályaidat sem tudod újraindítás nélkül módosítani. Akkor érdemes bekapcsolni, ha a készlet már megszilárdult, és egy hónapot leéltél vele.
Miért kell ez egy szokásos szerveren
Az auditd semminek nem veszi elejét. Az értéke pontosan egyszer mutatkozik meg — amikor rekonstruálni kell az események sorát, és az adatok vagy vannak, vagy nincsenek. Visszamenőleg nem gyűjthetők, ezért a szabálykészletet előre kell létrehozni, és utána békén hagyni.
Gyakorlati jele annak, hogy a beállítás helyes: a szabálylista nem üres, a napló nem nő kontrollálatlanul, az identity és privileges kulcsú események pedig ritkán jelennek meg, és mindegyik megmagyarázható. Hogy néz ki ez egyetlen oldalon, azt az alábbi bemutató mutatja.