Praćenje integriteta ima nezgodnu osobinu: potrebna mu je referenca uzeta sa sistema za koji se zna da je čist. Ako server radi tri godine a pitanje provale se pojavilo tek danas, uzeti tu referencu sada je već kasno — beležili biste kao normalno ono što tamo zatekne.

Na Debianu i Ubuntuu, međutim, referenca već postoji, i nije vaša: svaki instalirani paket nosi kontrolne sume sopstvenih fajlova. Poređenje sa njima ne zahteva ni podešavanje ni prethodni snimak i radi na svakom sistemu u svakom trenutku. Alat se zove debsums.

Korišćenje

sudo apt install debsums
sudo debsums -c

Zastavica -c ispisuje samo fajlove koji se nisu poklopili sa referencom. Bez nje je izlaz izveštaj red po red o svakom fajlu u sistemu, desetine hiljada redova.

Provera traje nekoliko minuta i opterećuje disk, pa je na radnom serveru vredi pokretati sa sniženim prioritetom:

sudo ionice -c3 nice -n19 debsums -c

Kako se čita rezultat

Prazan izlaz znači da se svaki provereni fajl poklapa sa onim što je distribucija instalirala. Neprazan izlaz treba ispitati, a nalazi spadaju u dve vrlo različite klase.

Konfiguracioni fajlovi u /etc. Njihova izmena je normalan posao: menjali ste sshd_config, podešavali nginx, dodavali parametre jezgra. Takve razlike su očekivane. Da vam se ne pletu pod nogama, postoji poseban režim:

sudo debsums -e -c

-e proverava samo konfiguracione fajlove — povremeno korisno da vidite listu svega što ste na ovoj mašini menjali.

Izvršni fajlovi i biblioteke. Razlika u /usr/bin, /usr/sbin, /bin ili /usr/lib ono je zbog čega je provera i pokrenuta. Legitimni uzroci postoje, ali ih nema mnogo: fajl je ručno menjan tokom otklanjanja grešaka, primenjena je zakrpa treće strane, paket se nadograđivao tokom provere. Ako se nijedan ne uklapa, vreme je da stvar ispitate ozbiljno.

Klasične mete zamene su ls, ps, netstat, ss, find, sshd. Zamenjena verzija skriva iz svog izlaza redove koji su bitni, i svaka vaša naredna provera prestaje da govori istinu.

Pokrivenost je nepotpuna — i to treba znati

Ograničenje koje se obično ne pominje: ne isporučuju svi paketi kontrolne sume. Fajlovi iz takvih paketa uopšte se ne proveravaju i neće se pojaviti u izveštaju ni pod kojim uslovima. Listu vidite ovako:

sudo debsums -l

Čist debsums izveštaj stoga znači „sve je u redu u delu koji je proveren", a ne „sistem nije menjan". Isto važi za sve instalirano izvan menadžera paketa: kompajlirano iz izvornog koda, preuzeto kao binarni fajl, instalirano skriptom sa sajta autora — debsums to po definiciji ne prati, i upravo tu je potreban AIDE.

Redovno pokretanje

Paket isporučuje gotov posao, koji se uključuje u /etc/default/debsums:

CRON_CHECK=weekly

Jednom nedeljno razumna je učestalost: provera osetno opterećuje disk, a sistemski fajlovi se retko menjaju između ažuriranja. Dnevno pokretanje ne dodaje ništa osim opterećenja.

Ako je fajl zaista zamenjen

Prvi impuls je ponovo instalirati paket i vratiti original:

sudo apt install --reinstall coreutils

Komanda je ispravna, ali ne kao prva radnja. Zamenjen sistemski binarni fajl znači da je neko imao root, a vraćanje fajla taj problem ne rešava — samo uništava tragove. Redosled treba da bude obrnut: prvo sačuvajte kopiju sumnjivog fajla i vreme njegove izmene, pogledajte šta se još promenilo u istom periodu, proverite cron poslove, SSH ključeve i listu korisnika. Vraćanje tek posle toga.

Vredi zapamtiti i granice metode: ako je sistem duboko kompromitovan, onda su i sam debsums i biblioteke koje koristi možda zamenjeni zajedno sa svim ostalim. Provera iznutra ne može dati apsolutnu garanciju — to daje pokretanje sa spoljnog medija. Za svakodnevni rad je ipak dovoljno: ogromna većina napada je automatizovana i nije toliko sofisticirana.

Njegovo mesto u opštoj slici

debsums je dobar zato što mu ništa ne treba i radi odmah — što ga čini zgodnom polaznom tačkom za server čiju istoriju ne poznajete. Njegova slabost je nepotpuna pokrivenost i nepoznavanje svega instaliranog izvan paketa. Par „debsums plus AIDE" zatvara obe strane: gotova referenca distribucije za sistemske fajlove i vaš sopstveni snimak za sve ostalo.

Kao i obično, smisao nije u tome da se pokreće nego da poslednji rezultat bude na vidiku zajedno sa svojim datumom. Kako to izgleda pokazuje demo ispod.