AIDE
Az AIDE (Advanced Intrusion Detection Environment), (fejlett behatolásérzékelő környezet) egy gazdagép alapú behatolásészlelő rendszer. Az AIDE átvizsgálja a fájlokat és egyéb erőforrásokat, és adatbázisban tárolja a fájlokkal kapcsolatos információkat. A tárolt információk közé tartoznak a kulcsfontosságú fájlattribútumok. Például a fájl hash kimenet, a fájl mérete, a tulajdonjog, a módosítási idő, a létrehozási idő stb. A kezdeti adatbázis létrehozása után az AIDE újraellenőrzi a rendszert, és összehasonlítja az új vizsgálati eredményeket a korábban tárolt értékekkel. Ha az értékek eltérnek, akkor a fájl megváltozott, és a változás jelentésre kerül. Az AIDE használatának ötlete az, hogy pillanatfelvételt készítsünk a rendszerről, majd összehasonlítsuk a pillanatképet egy másik időpontban létrehozott pillanatfelvétellel, hogy megtaláljuk a kompromittálódott fájlokat.
Telepítés
USE jelölőzászlók
Az app-forensics/aide telepítése a USE jelölőzászlók megfelelő beállítása után egyszerű.
Egy bizonyos csomagra jellemző USE jelölőzászló módosításait az /etc/portage/package.use fájlban vagy egy /etc/portage/package.use nevű könyvtárban található szövegfájlban kell meghatározni. Például egy /etc/portage/package.use fájl használatakor:
app-forensics/aide zlib
Emerge
A USE jelölőzászlók beállítása után telepítse a szoftvert:
root #
emerge --ask app-forensics/aide
Konfiguráció
Áttekintés
Az app-forensics/aide konfigurációs fájlja nem olyan ijesztő, mint amilyennek első látásra tűnik. Az alapértelmezett fájl az /etc/aide/aide.conf helyen található, de a rendszergazdák szükség esetén könnyen létrehozhatnak több konfigurációs fájlt. Néhány változó mellett a konfigurációs fájl rövidített jelöléseket tartalmaz arra vonatkozóan, hogy a fájlok milyen szempontjait kell keresni (csak hash kivonatokat, vagy inode-információkat is stb.), és mely fájlokat kell vizsgálni.
Nézze meg az adatbázis változókat:
database=file:/var/lib/aide/aide.db
database_out=file:/var/lib/aide/aide.db.new
A fenti példa első sora (database
) meghatározza, hogy hol található az ismert értékeket tartalmazó adatbázis helye. A második sor (database_out
) meghatározza, hogy hol kell tárolni az új adatbázisokat, amikor egy másikat generál. Általában nem ajánlott, hogy ezek a változók ugyanarra az adatbázisra mutassanak (minden változóhoz ugyanaz az útvonal). Ha az egyik adatbázis felülírja a másikat, akkor a legjobb módszer az előállított adatbázis manuális átmásolása egyik helyről a másikra. Például, ezt a parancsot használhatjuk azért, hogy az első adatbázist felülírjuk a másodikkal:
root #
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Egyelőre hagyja az adatbázis-változókat úgy, ahogy vannak. A cikk későbbi részében részletesebben foglalkozunk velük.
Ezután vegyük fontolóra azokat a változókat, amelyek rövid jelölések arra vonatkozóan, hogy milyen információkat kell rögzíteni az adatbázisban.
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1
Logs = p+i+n+u+g+S
...
Nyilvánvalónak kell lennie, hogy az
md5
és sha1
azt jelenti, hogy az MD5 és az SHA-1 ellenőrzőösszegek vannak használva.A betűket az alapértelmezett aide.conf fájl írja le, de a kényelem kedvéért a következő táblázat áttekintést nyújt a leggyakoribb lehetőségekről:
Short | Leírás |
---|---|
p
|
Jogosultságok |
i
|
inode szám |
n
|
(Hard)linkek száma |
u
|
Felhasználó információ |
g
|
Csoport információ |
s
|
Méret |
S
|
Méret (akkor jelez amikor a méret hirtelen lefelé csökken - a növekedés megengedett) |
b
|
Blokk számláló |
m
|
Módosítási idő |
A következő áttekintés arról, hogy mely könyvtárakat és mit keressen. A követendő háromsoros példában az AIDE utasítja a /bin és /sbin könyvtárat a Binlib rövid jelölési változóban azonosított mértékek segítségével. A /var/log fájl megjeleníti a vizsgálati méréseket a fent definiált Logs változóban meghatározottak alapján.
/bin Binlib
/sbin Binlib
/var/log Logs
...
Az AIDE támogatja a reguláris kifejezéseket, és a felhasználók "eltávolíthatják" az egyezéseket. Például azért, hogy a /var/log vizsgálva legyen, de a /var/log/portage ne legyen vizsgálva, a felkiáltójelet (!) kell használni a kizárt útvonalak előtt:
/var/log Logs
!/var/log/portage
Részletes opciók
A konfigurációs fájl reguláris kifejezéseken, makrókon és fájlok és könyvtárak szabályain alapul. A tripwire solution használatában tapasztalt felhasználóknak nem okoz nehézséget a segéd konfigurációs fájljának kezelése. A következő makrók állnak rendelkezésre:
Makró | Leírás | Szintaxis |
---|---|---|
ifdef |
Ha definiálva van | @@ifdef "name"
|
ifndef |
Ha nincs definiálva | @@ifndef "name"
|
define |
Define a variable | @@define "name" "value"
|
undef |
Egy változó undefiniálása | @@undef "name"
|
ifhost |
Ha "hostname" | @@ifhost "hostname"
|
ifnhost |
Ha nem "hostname" | @@ifnhost "hostname"
|
endif |
Az endif-et a fenti makrók bármelyike után kell használni, kivéve a define és az undef | @@endif
|
Ezek a makrók nagyon hasznosak lehetnek, ha több Gentoo számítógépet kezelünk, miközben ugyanazt a konfigurációt használjuk mindegyiken. Nem minden számítógép futtatja ugyanazokat a szolgáltatásokat, sőt nem is mindig ugyanazok a felhasználók.
Ezután van egy zászlókészletünk, amely azonosítja az engedélyeket, fájltulajdonságokat, ellenőrző összegeket, kriptográfiai hash-eket, ... a fájlok és könyvtárak érvényesítéséhez.
Jelölés | Leírás |
---|---|
p |
jogosultság |
i |
inode |
n |
linkek száma |
u |
felhasználó |
g |
csoport |
s |
méret |
b |
blokk számláló |
m |
midő |
a |
aidő |
c |
cidő |
S |
méretnövekedés ellenőrzése |
md5 |
md5 checksum |
sha1 |
sha1 checksum |
rmd160 |
rmd160 checksum |
tiger |
tiger checksum |
R |
p+i+n+u+g+s+m+c+md5
|
L |
p+i+n+u+g
|
E |
Üres csoport |
> |
Naplófájl növekedés p+u+g+i+n+S
|
Ha az AIDE az mhash támogatással van lefordítva, akkor a következő jelölések is használhatók:
Jelölés | Leírás |
---|---|
haval |
haval checksum |
gost |
gost checksum |
crc32 |
crc32 checksum |
Inicializálás és szkennelési gyakoriság
Egy alap AIDE beállításhoz egy adatbázist kell inicializálni. Ezt a --init
kapcsolóval hajtjuk végre. Annak érdekében, hogy az AIDE az előző szakaszokban meghatározott konfigurációs beállításokat használja, ügyeljen arra, hogy a --config
kapcsoló a megfelelő konfigurációs fájlra mutasson:
root #
aide --init --config=/etc/aide/aide.conf
AIDE, version 0.14.2 ### AIDE database at /var/lib/aide/aide.db.new initialized.
Az inicializálást követően bármely már előzőleg létező adatbázisfájl átmásolható:
root #
cd /var/lib/aide; cp aide.db.new aide.db
Ha az új adatbázis rendelkezésre áll, akkor a bejegyzések újra átvizsgálhatók (most vagy egy későbbi időpontban) a --check
opcióval. Ezzel egy másik adatbázist hoz létre, amely tartalmazza a fájlrendszeren az első adatbázis létrehozása óta végrehajtott módosításokat. Ügyeljen arra, hogy a --config
opciót használja, amely ugyanarra a konfigurációs fájlra mutat, amellyel az első adatbázist létrehozták:
root #
aide --check --config=/etc/aide/aide.conf
AIDE, version 0.14.2 ### All files match AIDE database. Looks okay!
Ha fájlmódosítás(ok) történt(ek), akkor értesítés lesz küldve. Ha egyáltalán nem létezik kezdeti adatbázis, akkor figyelmeztetés jelenik meg, mint például:
root #
aide --init --config=/etc/aide/aide.conf
Couldn't open file /var/lib/aide/aide.db.new for writing
Ez nem valós hiba, és egyszerűen csak segít kijelenteni, hogy nincs adatbázis találva, ezért létre kell hoznia egyet. Ez több percig is eltarthat.
root #
aide --check --config=/etc/aide/aide.conf
AIDE found differences between database and filesystem!! Start timestamp: 2013-04-11 15:31:02 Summary: Total number of files: 318 Added files: 0 Removed files: 0 Changed files: 2 --------------------------------------------------- Changed files: --------------------------------------------------- changed: /etc/pam.d changed: /etc/pam.d/run_init --------------------------------------------------- Detailed information about changes: --------------------------------------------------- Directory: /etc/pam.d Mtime : 2013-04-09 22:11:18 , 2013-04-11 15:31:01 Ctime : 2013-04-09 22:11:18 , 2013-04-11 15:31:01 File: /etc/pam.d/run_init Size : 205 , 208 Mtime : 2013-04-09 22:11:18 , 2013-04-11 15:31:00 Ctime : 2013-04-09 22:11:18 , 2013-04-11 15:31:01 Inode : 394203 , 394053 MD5 : Mm0KPzpPt63eqGClTJ/KaQ== , eLUrP2BsIq25f3AZX+dlBA== SHA1 : NrQtsUeOsXS4RHUq+ejYBne5V6E= , 5A6ef6VJCcMiqEjKQ7e9xkBNZB8=
Legjobb gyakorlatok
Legyen egyértelmű, hogy mit kell átvizsgálni
Az alapértelmezett AIDE konfiguráció hasznos, de finomítani kell, hogy megfeleljen a felhasználók igényeinek. Fontos tudni, hogy mely fájlokat kell vizsgálni és miért.
Ha például az összes hitelesítéssel kapcsolatos fájlt keresni szeretné, de más fájlokat nem, akkor használja a következő konfigurációt:
# SELinux policy and settings
/etc/selinux ConfFiles
# Authentication databases
/etc/passwd ConfFiles
/etc/shadow ConfFiles
/etc/nsswitch.conf ConfFiles
# Authentication configuration
/etc/pam.d ConfFiles
/etc/securetty ConfFiles
/etc/security ConfFiles
# PAM libraries
/lib(64)?/security Binlib
Tartsa az adatbázist offline és csak-olvasható állapotban
Egy másik fontos szempont, hogy az eredmény-adatbázist offline kell tárolni, amikor nincs rá szükség, és csak-olvasható (read only) módban kell használni, amikor az adatbázisra szükség van. Ez némi védelmet nyújt egy rosszindulatú felhasználóval szemben, amely feltörhette a számítógépet, és éppen módosítani szeretné az eredmény-adatbázist. Például adja meg az eredmény-adatbázist egy csak olvasható NFS mount csatoláson (kiszolgálókhoz) vagy csak olvasható adathordozón (ha lehetséges a géphez való fizikai hozzáférés). Például CD/DVD-n vagy csak olvasható USB-meghajtón.
Miután az adatbázist csak-olvasható helyen tárolta el, frissítse az aide.conf fájlt, hogy az adatbázis erre az új helyre mutasson.
Végezzen offline szkennelést
Adott esetben próbáljon meg offline szkennelési módszereket használni a rendszeren. Virtuális platformok esetén lehetséges, hogy pillanatképet készítsünk a rendszerről. Mountolással felcsatoljuk ezt a pillanatképet (csak-olvasható módon), majd lefuttatjuk az AIDE vizsgálatot a csatlakoztatott fájlrendszeren.
root #
losetup /dev/loop0 /srv/virt/gentoo.img
root #
vgscan
root #
vgchange -ay
root #
mount -o ro /dev/volgrpX/volumeY /mnt/image
root #
chroot /mnt/image
root #
aide --check --config=/path/to/aide.conf
root #
exit
root #
umount /mnt/image
root #
vgchange -an /dev/volgrpX
root #
losetup -d /dev/loop0
A fenti megközelítés a chroot kifejezést használja. Erre csak akkor van szükség, ha a kezdeti fájlrendszer ellenőrzése megtörtént az élő rendszerről, és a rendszergazda offline ellenőrzést szeretne végezni. Ha a kezdeti vizsgálat offline módban történt, akkor a aide.conf fájl már a felcsatolási pontra mutat, és az adatbázis azonnal használni fogja ezeket az útvonalakat, így nincs szükség chroot-olásra.
További olvasnivaló a témában
- Integritás/koncepciók a rendszerintegritással kapcsolatos fogalmakról beszél.