A vizsgálati nyomok a BSM bináris formátumban tárolódnak, ezért a tartalmának konvertálásához és módosításához külön segédprogramokra van szükség. A praudit(1) parancs a nyomállományokat egyszerű szöveges formátumra alakítja, az auditreduce(1) parancs pedig a nyomok elemzéséhez, archiválásához vagy nyomtatásához szükséges leszűkítéséket végzi el. Az auditreduce a szűrési feltételek paramétereinek széles skáláját kezeli, beleértve az eseménytípusokat, -osztályokat, felhasználókat, események dátumát vagy időpontját, állományok elérési útvonalát vagy az általuk érintett objektumokat.
Például a praudit segédprogram képes kilistázni szövegesen egy adott vizsgálati napló teljes tartalmát:
# praudit /var/audit/AUDITFILE
ahol az AUDITFILE a kiírandó vizsgálati napló.
A vizsgálati nyomok tokenekből összeállított vizsgálati rekordok, amelyeket a praudit egymás után soronként megjelenít. Minden token adott típusú, például a header egy vizsgálati rekord fejlécét tartalmazza, vagy a path, amely a névfeloldásból származó elérési utat tartalmaz. A következő példa egy execve eseményt mutat be:
header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec exec arg,finger,doug path,/usr/bin/finger attribute,555,root,wheel,90,24918,104944 subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100 return,success,0 trailer,133
Ez a vizsgálat egy sikeres execve hívást rögzít, ahol a finger doug parancs futott le. A paramétereket tartalmazó token magában foglalja a shell által a rendszermag felé jelzett parancsot és annak paraméterét egyaránt. A path token tárolja a végrehajtott állomány rendszermag által feloldott elérési útját. A attribute token erről a binárisról ad további információkat, különösen az állomány módjáról, amely segít megállapítani, hogy az adott alkalmazásnál be volt-e állítva a setuid bit. A subject token leírja az érintett folyamatot és rendre megjegyzi a vizsgált felhasználó azonosítóját, az aktuálisan érvényben levő felhasználó és csoport azonosítóját, a valós felhasználói és csoport azonosítót, a folyamat azonosítóját, a munkamenet azonosítóját, a port azonosítóját és a bejelentkezéshez használt hálózati címet. Vegyük észre, hogy a vizsgált felhasználó azonosítója és a valódi azonosítója eltér egymástól: a robert nevű felhasználó a root accountjára váltott a parancs futattása előtt, de az eredetileg hitelesített felhasználójaként lett vizsgálva. Végezetül a return token jelzi a sikeres végrehajtást, és a trailer pedig zárja a rekordot.
Mivel a vizsgálatokhoz tartozó naplók akár egészen nagyok is lehetnek, ezért a rendszergazdának minden bizonnyal szüksége lehet a számára fontos, például egy adott felhasználóhoz tartozó rekordok kiválogatására:
# auditreduce -u trhodes /var/audit/AUDITFILE | praudit
Ezzel ki tudjuk szűrni a trhodes nevű felhasználóhoz tartozó összes vizsgálati rekordot az AUDITFILE állományból.
Az audit csoport tagjai olvashatják a /var/audit könyvtárban található vizsgálati nyomokat. Alapértelmezés szerint ez a csoport üres, ezért csak a root képes ekkor vizsgálni a nyomokat. A többi felhasználó számára úgy tudunk olvasási jogot biztosítani, ha felvesszük őket az audit csoportba. Mivel a vizsgálati naplók tartalmának figyelése jelentős rálátást adhat a rendszerben jelenlevő felhasználók és folyamatok viselkedésére, ajánlott körültekintően kiosztani az olvasási jogokat.
A vizsgálati csövek az eszközök állományabsztrakcióit klónozzák le, és ezzel teszik lehetővé az alkalmazások számára, hogy menet közben megcsapolhassák a megfigyelt eszközök adatait. Ez az elsődleges célja a különböző betörésfigyelő és rendszerfelügyeleti eszközök készítőinek. A rendszergazda számára azonban a vizsgálati csövek megkönnyítik az élő megfigyelést, mert itt nem merülnek fel a nyomok jogosultságaiból vagy az archiválás miatt megszakadó eseményfolyamokból adódó problémák. Az élő eseményfolyamra az alábbi parancs kiadásával lehet rácsatlakozni:
# praudit /dev/auditpipe
Alapértelmezés szerint a vizsgálati csőhöz tartozó csomópontok kizárólag csak a root felhasználó részére érhetőek el. Az audit csoport tagjai úgy tudnak majd hozzáférni, ha felvesszük a következő devfs szabályt a devfs.rules állományba:
add path 'auditpipe*' mode 0440 group audit
A devfs állományrendszer beállításáről bővebben lásd a devfs.rules(5) oldalt.
Figyelem: Könnyen gerjedést lehet előidézni a vizsgált események megfigyelésével, amikor is az egyes események megtekintése újabb vizsgálandó események sorozatát indítják el. Például, ha az összes hálózati forgalmat egyszerre vizsgáljuk és a praudit(1) egy SSH-munkameneten keresztül fut, akkor a vizsgálati események töméntelen áradata indul meg, mivel minden kiírandó esemény egy újabb eseményt indukál. Ennek elkerülése érdekében ajánlott a praudit parancsot részletes forgalmat nem figyelő vizsgálati csővel ellátott munkameneten keresztül elindítani.
A vizsgálati nyomokat egyedül a rendszermag képes írni, illetve csak a vizsgálati démon, az auditd képes felügyelni. A rendszergazdáknak ebben az esetben tehát nem szabad használniuk a newsyslog.conf(5) vagy a hozzá hasonló eszközök használatát a vizsgálati naplók archiválásához. Helyettük a audit segédprogramot javasolt használni a vizsgálatok leállítására, a vizsgálati rendszer újrakonfigurálására vagy a napló archiválásának elvégzésére. Az alábbi parancs utasítja a vizsgálati démont, hogy hozzon létre egy új vizsgálati naplót és jelzi a rendszermagnak, hogy váltson erre az új naplóra. Az eddig használt naplót lezárja és átnevezi, ami ezután a rendszergazda által tetszőlegesen feldolgozható.
# audit -n
Figyelem: Ha az auditd démon a parancs kiadásánák pillanatában nem futna, akkor hiba történik és erről hibaüzenetet kapunk.
A cron(8) segítségével tizenként óránként kikényszeríthetjük a naplók váltását, ha felvesszük a /etc/crontab állományba az alábbi sort:
0 */12 * * * root /usr/sbin/audit -n
Ez a változtatás akkor fog érvénybe lépni, ha elmentjük az új /etc/crontab állományt.
A vizsgálati nyomok mérete szerinti
automatikus váltás is
megvalósítható az audit_control(5)
állományban szereplő filesz
opció beállításával, amit meg
is találhatunk ebben a fejezetben, a
konfigurációs állományok
beállításánál.
Mivel a vizsgálati nyomok óriásira is megnőhetnek, sokszor felmerül az igény, hogy lehessen őket tömöríteni vagy más egyéb módon archiválni a vizsgálati démon által lezárt nyomokat. Az audit_warn szkript használható a különböző vizsgálatokhoz kapcsolódó események esetén elvégzendő műveletek megadásához, beleértve ebbe a vizsgálati nyomok váltásakor elvégzett szabályos lezárását. Például a következőket kell beleírnunk az audit_warn szkriptbe a nyomok lezárását követő tömörítéséhez:
# # Lezáráskor tömöríti a vizsgálati nyomot. # if [ "$1" = closefile ]; then gzip -9 $2 fi
Egyéb archiválási tevékenységek lehetnek még: a nyomok felmásolása egy központi szerverre, a régebbi nyomok törlése, vagy a meglevő nyomok leszűkítése csak a fontos információkra. A szkript csak akkor fog lefutni, ha a vizsgálati nyomot sikerült szabályosan lezárni, így tehát a szabálytalan leálláskor megmaradó nyomok esetén nem.
A FreeBSD 6.3 és későbbi
verzióiban, a praudit XML kimeneti
formátumot is támogat, amely az
-x
kapcsolóval érhető
el.
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.