Kontrola integrity odpovídá na otázku, na kterou neodpoví ani antivirus, ani firewall: co se na tomto serveru od minulého týdne změnilo? Signaturní skener hledá známý škodlivý kód; AIDE o škodlivosti neví nic, ví, že tento soubor byl včera jiný. Pro odhalení zadních vrátek dopsaných do existujícího souboru je to jediný fungující přístup.

AIDE se instaluje dvěma příkazy. Nastavit ho tak, aby se jeho zprávy četly, je ta těžší část — a právě na tom to obvykle ztroskotá: první zpráva přijde na deset tisíc řádků, druhou nikdo neotevře a o měsíc později se úloha smaže.

Instalace a první databáze

sudo apt install aide aide-common
sudo aideinit

Inicializace zabere od několika minut po půl hodiny: počítají se kontrolní součty všech souborů. Výsledek se uloží vedle pracovní databáze s příponou .new a je třeba jej uvést do provozu:

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

Dále se kontrola spouští takto:

sudo aide --check

Co vyloučit, aby se zpráva dala číst

Nastavení jsou v /etc/aide/aide.conf a v adresáři /etc/aide/aide.conf.d/. Výchozí konfigurace Debianu kontroluje příliš mnoho a první věcí je odstranit to, co se stejně mění nepřetržitě:

  • /var/log — mění se každou sekundu;
  • celé /var/lib — databáze, stav balíčků, stav služeb;
  • /var/cache, /tmp, /proc, /sys, /run;
  • adresáře nahraných souborů a cache webu — jejich obsah mění návštěvníci.

Naopak s nejpřísnějším nastavením stojí za to kontrolovat úzký seznam:

  • /bin, /sbin, /usr/bin, /usr/sbin — spustitelné soubory systému;
  • /lib, /usr/lib — knihovny;
  • /etc — konfigurace;
  • /root/.ssh a adresáře .ssh uživatelů;
  • kód webu, ale bez adresářů nahraných souborů a cache.

Orientační bod: běžná denní zpráva se má vejít na obrazovku. Je-li delší, vyloučení je málo a čtení skončí.

Kde držet databázi

Podstatný detail, na který se často zapomíná. Má-li cizí člověk root, výměna souboru a okamžitá aktualizace databáze AIDE ho nic nestojí — a kontrola poté ukáže, že je vše v pořádku. Databáze ležící na témže stroji s právem zápisu chrání jen před náhodou.

Rozumné minimum pro jeden server:

  • kopírovat databázi po každé aktualizaci na jiný stroj a kontrolu spouštět s touto kopií;
  • nebo alespoň uchovávat kontrolní součet databáze zvlášť a porovnávat jej před kontrolou:
sha256sum /var/lib/aide/aide.db

I takto jednoduchý postup promění tichou výměnu ve znatelnou událost.

Aktualizace databáze je uvědomělý krok

Po oprávněných změnách — aktualizaci systému, nasazení nové verze webu — se databáze vytvoří znovu:

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

Na okamžiku záleží. Správně: projít zprávu, ujistit se, že každá změna se dá vysvětlit, a teprve potom aktualizovat. Nesprávně a velmi rozšířeně: spouštět aide --update podle rozvrhu, aby byly zprávy čisté. Ve druhém případě systém funguje, zprávy chodí a změny se zapisují jako norma přesně ve chvíli, kdy nastávají — smysl mizí úplně.

Rozvrh a zátěž

Balíček aide-common sám zakládá denní úlohu. Kontrola na několik minut zatíží disk a procesor, takže je vhodné spouštět ji v klidnou dobu a se sníženou prioritou:

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

Jak číst zprávu

Tři sekce: přidané, smazané a změněné soubory. U každé změny je vidět, co přesně se liší: obsah, práva, vlastník, čas.

Na co reagovat přednostně:

  • změna jakéhokoli souboru v /bin, /sbin, /usr/bin mimo okno aktualizace;
  • nové soubory v systémových adresářích;
  • změny v authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab a /etc/cron.d;
  • objevení souboru /etc/ld.so.preload — sám o sobě nevznikne nikdy.

Sto změněných souborů hned po apt upgrade je norma a čas zprávy to potvrzuje. Tři změněné soubory v /usr/bin ve středu, kdy žádná aktualizace nebyla, jsou důvod se zastavit a prověřit to.

AIDE a debsums

Nástroje řeší příbuzné úkoly, ale jejich vzor je odlišný. AIDE porovnává s vlastním snímkem — vidí tedy změny v libovolných souborech včetně kódu webu. debsums porovnává s kontrolními součty z balíčků distribuce — vidí tedy výměnu systémových souborů zcela bez přípravy, ale neví nic o tom, co bylo nainstalováno mimo balíčky. Rozumné je mít oba; v praxi jde debsums obvykle první, protože nevyžaduje ani konfiguraci, ani databázi.

Společná je i jejich slabina: zpráva chodí poštou a pošta se ztrácí. Nezáleží tedy na tom, že kontrola proběhla, ale na tom, že je místo, kde je vidět její poslední výsledek. Jak to vypadá, ukazuje ukázková stránka níže.