Kontrola integrity má nepríjemnú vlastnosť: vyžaduje vzor sňatý zo systému, ktorý bol určite čistý. Ak server beží tretí rok a otázka prieniku vyvstala až dnes, na vzor je neskoro — zapísali by sme ako normu to, čo je.

V Debiane a Ubuntu však vzor už existuje a nie je náš: každý nainštalovaný balík nesie kontrolné súčty svojich súborov. Porovnanie nevyžaduje ani konfiguráciu, ani skoršiu snímku a funguje na ľubovoľnom systéme kedykoľvek. Nástroj sa volá debsums.

Použitie

sudo apt install debsums
sudo debsums -c

Prepínač -c vypisuje len súbory, ktoré sa so vzorom nezhodujú. Bez neho je výstupom riadok po riadku správa o každom súbore v systéme — desaťtisíce riadkov.

Kontrola trvá niekoľko minút a zaťažuje disk, takže na prevádzkovom serveri sa oplatí spúšťať ju so zníženou prioritou:

sudo ionice -c3 nice -n19 debsums -c

Ako čítať výsledok

Prázdny výstup znamená, že všetky preverené súbory zodpovedajú tomu, čo nainštalovala distribúcia. Neprázdny vyžaduje rozbor a nálezy sa delia do dvoch veľmi odlišných tried.

Konfiguračné súbory v /etc. Ich zmena je bežná práca: upravovali sme sshd_config, nastavovali nginx, pridávali parametre jadra. Také odchýlky sú očakávané. Aby neprekážali, existuje zvláštny režim:

sudo debsums -e -c

-e kontroluje výhradne konfiguračné súbory — občas užitočné, ak chcete vidieť zoznam všetkého, čo sa na stroji menilo.

Spustiteľné súbory a knižnice. Odchýlka v /usr/bin, /usr/sbin, /bin alebo /usr/lib je presne to, kvôli čomu sa kontrola spúšťala. Oprávnené príčiny existujú, ale je ich málo: súbor bol menený ručne pri ladení, bola nasadená cudzia záplata, balík sa aktualizoval počas kontroly. Ak nesedí žiadna, treba sa vecou zaoberať vážne.

Klasické ciele výmeny sú ls, ps, netstat, ss, find, sshd. Vymenená verzia skryje vo svojom výstupe potrebné riadky a všetky naše ďalšie kontroly prestanú hovoriť pravdu.

Pokrytie je neúplné — a treba o tom vedieť

Obmedzenie, o ktorom sa obvykle nepíše: nie všetky balíky dodávajú kontrolné súčty. Súbory takých balíkov sa nekontrolujú vôbec a v správe sa za žiadnych okolností neobjavia. Zoznam možno zobraziť takto:

sudo debsums -l

Čistá správa debsums teda znamená „v preverenej časti je všetko v poriadku“, nie „systém nebol menený“. To isté platí pre všetko nainštalované mimo správcu balíkov: skompilované zo zdrojov, stiahnuté ako binárka, nasadené skriptom zo stránok vývojára — to debsums z definície nestráži, a práve tam je potrebné AIDE.

Pravidelné spúšťanie

V balíku je hotová úloha, zapína sa v /etc/default/debsums:

CRON_CHECK=weekly

Raz týždenne je rozumná frekvencia: kontrola badateľne zaťažuje disk a systémové súbory sa medzi aktualizáciami menia zriedka. Denné spúšťanie neprináša nič okrem záťaže.

Ak bol súbor naozaj vymenený

Prvý reflex je preinštalovať balík a obnoviť originál:

sudo apt install --reinstall coreutils

Príkaz je správny, ale nie ako prvý krok. Vymenený systémový súbor znamená, že niekto mal root, a obnovenie súboru tento problém nerieši — len ničí stopy. Poradie musí byť opačné: najprv uložiť kópiu podozrivého súboru a čas jeho zmeny, zistiť, čo ďalšie sa v rovnakom období zmenilo, prejsť úlohy cronu, kľúče SSH a zoznam používateľov. Obnovovať až potom.

Oplatí sa pamätať aj na hranicu metódy: ak je systém hlboko kompromitovaný, môžu byť vymenené aj samotný debsums a knižnice, ktoré používa. Kontrola zvnútra nedáva absolútnu záruku — na to sa systém spúšťa z externého média. Na každodennú prácu však stačí: drvivá väčšina útokov je automatizovaná a takou vytríbenosťou sa nevyznačuje.

Miesto v celkovom obraze

debsums je dobrý tým, že nič nevyžaduje a funguje hneď — preto je pohodlné začať s ním na serveri, ktorého históriu nepoznáte. Jeho slabinou je neúplné pokrytie a neznalosť všetkého, čo stojí mimo balíkov. Dvojica „debsums plus AIDE“ pokrýva obe strany: hotový vzor distribúcie pre systémové súbory a vlastná snímka pre zvyšok.

Ako obvykle nejde o spustenie, ale o to, aby bol posledný výsledok s dátumom na očiach. Ako to vyzerá, ukazuje ukážka nižšie.