Az integritás-ellenőrzés arra a kérdésre válaszol, amelyre sem a vírusirtó, sem a tűzfal nem: mi változott ezen a szerveren a múlt hét óta? A szignatúraalapú szkenner ismert kártékony kódot keres; az AIDE semmit nem tud a kártékonyságról, azt tudja, hogy ez a fájl tegnap más volt. Egy meglévő fájlba írt hátsó ajtó felderítésére ez az egyetlen működő megközelítés.

Az AIDE két paranccsal telepíthető. Úgy beállítani, hogy a jelentéseit olvassák is, a nehezebb rész — és általában éppen ezen bukik el: az első jelentés tízezer sor, a másodikat senki nem nyitja meg, egy hónappal később pedig törlik a feladatot.

Telepítés és az első adatbázis

sudo apt install aide aide-common
sudo aideinit

Az inicializálás néhány perctől fél óráig tart: az összes fájl ellenőrzőösszege kiszámolódik. Az eredmény a munkaadatbázis mellé kerül .new kiterjesztéssel, és üzembe kell helyezni:

sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Ezután az ellenőrzés így indul:

sudo aide --check

Mit zárj ki, hogy a jelentés olvasható legyen

A beállítások az /etc/aide/aide.conf fájlban és az /etc/aide/aide.conf.d/ könyvtárban vannak. A Debian alapkonfigurációja túl sokat ellenőriz, és az első dolog kivenni azt, ami amúgy is folyamatosan változik:

  • /var/log — másodpercenként változik;
  • a teljes /var/lib — adatbázisok, csomagállapot, szolgáltatásállapot;
  • /var/cache, /tmp, /proc, /sys, /run;
  • a webhely feltöltési és gyorsítótár-könyvtárai — a tartalmukat a látogatók változtatják.

A legszigorúbb beállításokkal viszont egy szűk listát érdemes ellenőrizni:

  • /bin, /sbin, /usr/bin, /usr/sbin — a rendszer végrehajtható fájljai;
  • /lib, /usr/lib — könyvtárak;
  • /etc — konfiguráció;
  • /root/.ssh és a felhasználók .ssh könyvtárai;
  • a webhely kódja, de a feltöltési és gyorsítótár-könyvtárak nélkül.

Támpont: egy szokásos napi jelentésnek el kell férnie a képernyőn. Ha hosszabb, kevés a kizárás, és az olvasás abbamarad.

Hol tartsd az adatbázist

Lényeges részlet, amelyről gyakran megfeledkeznek. Ha egy kívülállónak root jogosultsága van, a fájl kicserélése és az AIDE-adatbázis azonnali frissítése semmibe nem kerül neki — az utána következő ellenőrzés pedig azt mutatja, hogy minden rendben. Az ugyanazon a gépen, írási joggal fekvő adatbázis csak a véletlen ellen véd.

Egy szerverhez észszerű minimum:

  • minden frissítés után másold az adatbázist másik gépre, és az ellenőrzést ezzel a másolattal futtasd;
  • vagy legalább tárold külön az adatbázis ellenőrzőösszegét, és hasonlítsd össze az ellenőrzés előtt:
sha256sum /var/lib/aide/aide.db

Már ez az egyszerű lépés is észrevehető eseménnyé teszi a csendes cserét.

Az adatbázis frissítése tudatos lépés

Jogos változások után — rendszerfrissítés, a webhely új verziójának kihelyezése — az adatbázist újra fel kell építeni:

sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Az időzítés számít. Helyesen: nézd át a jelentést, győződj meg róla, hogy minden változás megmagyarázható, és csak azután frissíts. Helytelenül és nagyon elterjedten: ütemezetten futtatni az aide --update parancsot, hogy tiszták legyenek a jelentések. A második esetben a rendszer működik, a jelentések érkeznek, a változások pedig pontosan abban a pillanatban rögzülnek normaként, amikor bekövetkeznek — az értelem teljesen eltűnik.

Ütemezés és terhelés

Az aide-common csomag maga hoz létre napi feladatot. Az ellenőrzés néhány percre megterheli a lemezt és a processzort, ezért nyugodt időben és csökkentett prioritással érdemes futtatni:

0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check

Hogyan olvasd a jelentést

Három szakasz: hozzáadott, törölt és módosított fájlok. Minden változásnál látszik, pontosan mi tér el: tartalom, jogosultságok, tulajdonos, idő.

Mire reagálj elsőként:

  • bármely fájl változása a /bin, /sbin, /usr/bin könyvtárban frissítési ablakon kívül;
  • új fájlok a rendszerkönyvtárakban;
  • változások az authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab és /etc/cron.d fájlokban;
  • az /etc/ld.so.preload fájl megjelenése — magától soha nem keletkezik.

Száz módosult fájl közvetlenül egy apt upgrade után normális, és a jelentés ideje ezt meg is erősíti. Három módosult fájl a /usr/bin könyvtárban szerdán, amikor nem volt frissítés, ok arra, hogy megállj és utánanézz.

AIDE és debsums

Az eszközök rokon feladatokat oldanak meg, de más mintázattal. Az AIDE a saját pillanatképéhez hasonlít — így bármely fájl változását látja, a webhely kódját is beleértve. A debsums a disztribúció csomagjaiban lévő ellenőrzőösszegekhez hasonlít — így a rendszerfájlok cseréjét mindenféle előkészület nélkül látja, de semmit nem tud arról, amit a csomagokon kívülről telepítettek. Észszerű mindkettőt használni; a gyakorlatban a debsums megy elsőként, mert sem konfigurációt, sem adatbázist nem igényel.

Közös a gyengeségük is: a jelentés postán érkezik, a posta pedig elvész. Nem az számít tehát, hogy az ellenőrzés lefutott, hanem hogy van egy hely, ahol az utolsó eredménye látszik. Hogy néz ki ez, azt az alábbi bemutatóoldal mutatja.