Az integritás-ellenőrzésnek van egy kellemetlen tulajdonsága: olyan mintát igényel, amelyet biztosan tiszta rendszerről vettek. Ha a szerver harmadik éve fut, és a behatolás kérdése csak ma merült fel, a mintához késő — azt rögzítenénk normaként, ami éppen van.

Debianon és Ubuntun azonban már létezik minta, és nem a miénk: minden telepített csomag hordozza a fájljai ellenőrzőösszegeit. Az összehasonlítás sem konfigurációt, sem korábbi pillanatképet nem igényel, és bármely rendszeren, bármikor működik. Az eszköz neve debsums.

Használat

sudo apt install debsums
sudo debsums -c

A -c kapcsoló csak azokat a fájlokat írja ki, amelyek nem egyeznek a mintával. Nélküle a kimenet soronkénti jelentés a rendszer minden egyes fájljáról — több tízezer sor.

Az ellenőrzés néhány percig tart, és terheli a lemezt, ezért éles szerveren érdemes csökkentett prioritással futtatni:

sudo ionice -c3 nice -n19 debsums -c

Hogyan olvasd az eredményt

Az üres kimenet azt jelenti, hogy minden ellenőrzött fájl megfelel annak, amit a disztribúció telepített. A nem üres elemzést kíván, és a leletek két nagyon eltérő osztályba sorolhatók.

Konfigurációs fájlok a /etc könyvtárban. A változásuk normális munka: javítottuk az sshd_config fájlt, beállítottuk az nginxet, kernelparamétereket adtunk hozzá. Az ilyen eltérések várhatók. Hogy ne zavarjanak, van külön üzemmód:

sudo debsums -e -c

Az -e kizárólag a konfigurációs fájlokat ellenőrzi — néha hasznos, ha látni akarod mindannak listáját, amit a gépen módosítottak.

Végrehajtható fájlok és könyvtárak. Az eltérés a /usr/bin, /usr/sbin, /bin vagy /usr/lib könyvtárban pontosan az, amiért az ellenőrzést futtattad. Jogos okok léteznek, de kevés van belőlük: a fájlt kézzel módosították hibakereséskor, idegen javítást tettek rá, a csomag frissült az ellenőrzés közben. Ha egyik sem illik, komolyan kell venni a dolgot.

A csere klasszikus célpontjai az ls, ps, netstat, ss, find, sshd. A kicserélt verzió elrejti a kimenetéből a szükséges sorokat, és minden további ellenőrzésünk megszűnik igazat mondani.

A lefedettség nem teljes — és ezt tudni kell

Korlát, amelyről általában nem írnak: nem minden csomag szállít ellenőrzőösszeget. Az ilyen csomagok fájljait egyáltalán nem ellenőrzi, és a jelentésben semmilyen körülmények között nem jelennek meg. A lista így nézhető meg:

sudo debsums -l

A tiszta debsums-jelentés tehát azt jelenti, hogy „az ellenőrzött részben minden rendben”, nem azt, hogy „a rendszert nem módosították”. Ugyanez vonatkozik mindenre, amit a csomagkezelőn kívülről telepítettek: forrásból fordított, binárisként letöltött, a fejlesztő oldaláról szkripttel telepített — ezt a debsums definíció szerint nem figyeli, és éppen ott van szükség az AIDE-ra.

Rendszeres futtatás

A csomagban van kész feladat, amely az /etc/default/debsums fájlban kapcsolható be:

CRON_CHECK=weekly

A heti egyszeri gyakoriság észszerű: az ellenőrzés érezhetően terheli a lemezt, a rendszerfájlok pedig frissítések között ritkán változnak. A napi futtatás a terhelésen kívül semmit nem ad hozzá.

Ha egy fájlt tényleg kicseréltek

Az első reflex a csomag újratelepítése és az eredeti visszaállítása:

sudo apt install --reinstall coreutils

A parancs helyes, de nem első lépésként. A kicserélt rendszerfájl azt jelenti, hogy valakinek root jogosultsága volt, és a fájl visszaállítása ezt a problémát nem oldja meg — csak a nyomokat semmisíti meg. A sorrendnek fordítottnak kell lennie: előbb ments másolatot a gyanús fájlról és a módosítási idejéről, derítsd ki, mi változott még ugyanabban az időszakban, nézd át a cron-feladatokat, az SSH-kulcsokat és a felhasználók listáját. Visszaállítani csak azután.

Érdemes emlékezni a módszer határára is: ha a rendszer mélyen kompromittált, maga a debsums és az általa használt könyvtárak is kicserélhetők. A belülről végzett ellenőrzés nem ad abszolút garanciát — ahhoz külső adathordozóról indítják a rendszert. A mindennapi munkához azonban elegendő: a támadások túlnyomó többsége automatizált, és nem tűnik ki ilyen kifinomultsággal.

Helye az összképben

A debsums abban jó, hogy semmit nem igényel, és azonnal működik — ezért kényelmes vele kezdeni egy olyan szerveren, amelynek nem ismered a történetét. Gyengesége a nem teljes lefedettség és az, hogy semmit nem tud arról, ami a csomagokon kívül áll. A „debsums plus AIDE” páros mindkét oldalt lefedi: a disztribúció kész mintája a rendszerfájlokhoz, és saját pillanatkép a többihez.

Mint mindig, nem a futtatás a lényeg, hanem az, hogy az utolsó eredmény dátummal együtt szem előtt legyen. Hogy néz ki ez, azt az alábbi bemutató mutatja.