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