17.5. A vizsgálati alrendszer használata

17.5.1. A vizsgálati nyomok megtekintése

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.

17.5.2. A vizsgálati nyomok leszűkítése

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.

17.5.3. A naplók megtekintéséhez szükséges jogok továbbadása

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.

17.5.4. Élő rendszerfelügyelet a vizsgálati csövekkel

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.

17.5.5. A vizsgálati nyomok archiválása

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.

17.5.6. A vizsgálati nyomok tömörítése

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): <questions@FreeBSD.org>.

Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.