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.
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
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
fiEgyé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>.