Eheystarkistuksella on ikävä ominaisuus: se vaatii vertailukohdan, joka on otettu varmasti puhtaasta järjestelmästä. Jos palvelin on ollut käynnissä kolmatta vuotta ja kysymys murrosta nousee esiin vasta tänään, vertailukohtaa varten on liian myöhäistä — kirjaisimme silloin normiksi sen, mikä on.

Debianissa ja Ubuntussa vertailukohta on kuitenkin jo olemassa, eikä se ole meidän: jokainen asennettu paketti kantaa tiedostojensa tarkistussummat. Vertailu ei vaadi asetuksia eikä aiempaa tilannekuvaa ja toimii millä tahansa järjestelmällä milloin tahansa. Työkalun nimi on debsums.

Käyttö

sudo apt install debsums
sudo debsums -c

Valitsin -c tulostaa vain tiedostot, jotka eivät vastaa vertailukohtaa. Ilman sitä tuloste on rivi riviltä -raportti jokaisesta järjestelmän tiedostosta — kymmeniätuhansia rivejä.

Tarkistus kestää muutaman minuutin ja kuormittaa levyä, joten tuotantopalvelimella se kannattaa ajaa alennetulla prioriteetilla:

sudo ionice -c3 nice -n19 debsums -c

Miten tulosta luetaan

Tyhjä tuloste tarkoittaa, että kaikki tarkistetut tiedostot vastaavat sitä, minkä jakelu asensi. Ei-tyhjä tuloste vaatii analyysiä, ja löydöt jakautuvat kahteen hyvin erilaiseen luokkaan.

Asetustiedostot hakemistossa /etc. Niiden muuttuminen on normaalia työtä: korjasimme sshd_config-tiedostoa, asetimme nginxin, lisäsimme ytimen parametreja. Tällaiset poikkeamat ovat odotettuja. Jottei niistä olisi haittaa, on oma tila:

sudo debsums -e -c

-e tarkistaa vain asetustiedostot — toisinaan hyödyllistä, kun haluaa nähdä listan kaikesta, mitä koneella on muutettu.

Suoritettavat tiedostot ja kirjastot. Poikkeama hakemistoissa /usr/bin, /usr/sbin, /bin tai /usr/lib on juuri se, minkä vuoksi tarkistus ajettiin. Perusteltuja syitä on, mutta niitä on vähän: tiedostoa muutettiin käsin vianetsinnässä, siihen laitettiin vieras korjaus, paketti päivittyi kesken tarkistuksen. Jos yksikään ei sovi, asiaan on suhtauduttava vakavasti.

Klassiset vaihdon kohteet ovat ls, ps, netstat, ss, find ja sshd. Vaihdettu versio piilottaa tulosteestaan haluamansa rivit, ja kaikki jatkotarkistuksemme lakkaavat kertomasta totuutta.

Kattavuus on epätäydellinen — ja se on tiedettävä

Rajoitus, josta harvoin kirjoitetaan: kaikki paketit eivät toimita tarkistussummia. Tällaisten pakettien tiedostoja ei tarkisteta lainkaan, eivätkä ne ilmesty raporttiin missään oloissa. Listan näkee näin:

sudo debsums -l

Puhdas debsums-raportti tarkoittaa siis ”tarkistetussa osassa kaikki on kunnossa”, ei ”järjestelmää ei ole muutettu”. Sama koskee kaikkea, mikä on asennettu paketinhallinnan ulkopuolelta: lähdekoodista käännetty, binäärinä ladattu, kehittäjän sivuston skriptillä pystytetty — sitä debsums ei määritelmällisesti valvo, ja juuri siinä tarvitaan AIDE.

Säännöllinen ajo

Paketissa on valmis tehtävä, joka kytketään päälle tiedostossa /etc/default/debsums:

CRON_CHECK=weekly

Kerran viikossa on järkevä tiheys: tarkistus kuormittaa levyä havaittavasti, ja järjestelmätiedostot muuttuvat päivitysten välillä harvoin. Päivittäinen ajo ei tuo mitään muuta kuin kuormaa.

Jos tiedosto on todella vaihdettu

Ensimmäinen impulssi on asentaa paketti uudelleen ja palauttaa alkuperäinen:

sudo apt install --reinstall coreutils

Komento on oikea, mutta ei ensimmäisenä toimena. Vaihdettu järjestelmätiedosto tarkoittaa, että jollakulla on ollut root, eikä tiedoston palauttaminen ratkaise sitä ongelmaa — se vain tuhoaa jäljet. Järjestyksen on oltava päinvastainen: ota ensin kopio epäilyttävästä tiedostosta ja sen muutosajankohdasta, selvitä mitä muuta samalla ajanjaksolla on muuttunut, käy läpi cron-tehtävät, SSH-avaimet ja käyttäjälista. Palauta vasta sen jälkeen.

Kannattaa myös muistaa menetelmän raja: jos järjestelmä on syvästi vaarantunut, myös debsums itse ja sen käyttämät kirjastot voivat olla vaihdettuja. Sisältä tehty tarkistus ei anna ehdotonta takuuta — sitä varten järjestelmä käynnistetään ulkoiselta medialta. Päivittäiseen työhön se kuitenkin riittää: valtaosa hyökkäyksistä on automatisoituja eikä osoita tuollaista hienostuneisuutta.

Paikka kokonaiskuvassa

debsums on hyvä siinä, ettei se vaadi mitään ja toimii heti — siksi sillä on kätevä aloittaa palvelimella, jonka historiaa ei tunne. Sen heikkous on epätäydellinen kattavuus ja tietämättömyys kaikesta, mikä on pakettien ulkopuolella. Pari ”debsums plus AIDE” kattaa molemmat puolet: jakelun valmis vertailukohta järjestelmätiedostoille ja oma tilannekuva lopulle.

Kuten tavallista, pointti ei ole ajamisessa vaan siinä, että viimeisin tulos päivämäärineen on näkyvissä. Miltä se näyttää, näkyy alla olevassa esittelyssä.