Eheystarkistus vastaa kysymykseen, johon eivät vastaa virustorjunta eikä palomuuri: mikä tällä palvelimella on muuttunut viime viikosta? Allekirjoitusskanneri etsii tunnettua haitallista koodia; AIDE ei tiedä haitallisuudesta mitään, se tietää että tämä tiedosto oli eilen erilainen. Olemassa olevaan tiedostoon lisätyn takaoven havaitsemiseen se on ainoa toimiva menetelmä.

AIDE asennetaan kahdella komennolla. Sen asettaminen niin, että raportteja luetaan, on vaikeampi osa — ja juuri siihen se yleensä kaatuu: ensimmäinen raportti on kymmenentuhatta riviä, toista ei avaa kukaan, ja kuukautta myöhemmin tehtävä poistetaan.

Asennus ja ensimmäinen tietokanta

sudo apt install aide aide-common
sudo aideinit

Alustus kestää muutamasta minuutista puoleen tuntiin: kaikkien tiedostojen tarkistussummat lasketaan. Tulos päätyy työtietokannan viereen päätteellä .new, ja se on otettava käyttöön:

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

Tarkistus ajetaan sitten näin:

sudo aide --check

Mitä jättää pois, jotta raporttia voi lukea

Asetukset ovat tiedostossa /etc/aide/aide.conf ja hakemistossa /etc/aide/aide.conf.d/. Debianin oletusasetukset tarkistavat liikaa, ja ensimmäinen työ on poistaa se, mikä muuttuu joka tapauksessa jatkuvasti:

  • /var/log — muuttuu joka sekunti;
  • koko /var/lib — tietokannat, pakettien tila, palveluiden tila;
  • /var/cache, /tmp, /proc, /sys, /run;
  • sivuston lataus- ja välimuistihakemistot — niiden sisältöä muuttavat kävijät.

Tiukimmilla asetuksilla kannattaa sen sijaan tarkistaa kapea lista:

  • /bin, /sbin, /usr/bin, /usr/sbin — järjestelmän suoritettavat tiedostot;
  • /lib, /usr/lib — kirjastot;
  • /etc — asetukset;
  • /root/.ssh ja käyttäjien .ssh-hakemistot;
  • sivuston koodi, mutta ilman lataus- ja välimuistihakemistoja.

Mittapuu: tavallisen päivittäisen raportin pitää mahtua ruudulle. Jos se on pidempi, poikkeuksia on liian vähän, ja lukeminen loppuu.

Missä tietokannan pitää olla

Tärkeä yksityiskohta, joka usein unohtuu. Jos ulkopuolisella on root, tiedoston vaihtaminen ja AIDE-tietokannan välitön päivittäminen ei maksa mitään — ja sen jälkeinen tarkistus näyttää, että kaikki on kunnossa. Samalla koneella kirjoitusoikeuksin oleva tietokanta suojaa vain vahingoilta.

Järkevä vähimmäistaso yhdelle palvelimelle:

  • kopioi tietokanta jokaisen päivityksen jälkeen toiselle koneelle ja aja tarkistus tuo kopio paikoillaan;
  • tai säilytä ainakin tietokannan tarkistussumma erikseen ja vertaa sitä ennen tarkistusta:
sha256sum /var/lib/aide/aide.db

Näinkin yksinkertainen keino muuttaa hiljaisen vaihdon havaittavaksi tapahtumaksi.

Tietokannan päivitys on tietoinen teko

Perusteltujen muutosten jälkeen — järjestelmäpäivityksen, sivuston uuden version — tietokanta rakennetaan uudelleen:

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

Ajankohdalla on merkitystä. Oikein: käy raportti läpi, varmista että jokainen muutos selittyy, ja päivitä vasta sitten. Väärin ja hyvin yleisesti: ajaa aide --update aikataulun mukaan, jotta raportit olisivat puhtaita. Jälkimmäisessä tapauksessa järjestelmä toimii, raportteja tulee, ja muutokset kirjataan normiksi juuri sillä hetkellä, kun ne tapahtuvat — koko pointti katoaa.

Aikataulu ja kuormitus

Paketti aide-common luo itse päivittäisen tehtävän. Tarkistus kuormittaa levyä ja suoritinta muutaman minuutin, joten se kannattaa ajaa rauhallisena ajankohtana ja alennetulla prioriteetilla:

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

Miten raporttia luetaan

Kolme osiota: lisätyt, poistetut ja muuttuneet tiedostot. Jokaisen muutoksen kohdalla näkyy tarkalleen, mikä eroaa: sisältö, oikeudet, omistaja, aika.

Mihin reagoidaan ensin:

  • minkä tahansa tiedoston muutos hakemistoissa /bin, /sbin, /usr/bin päivitysikkunan ulkopuolella;
  • uudet tiedostot järjestelmähakemistoissa;
  • muutokset tiedostoissa authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab ja /etc/cron.d;
  • tiedoston /etc/ld.so.preload ilmestyminen — se ei synny koskaan itsestään.

Sata muuttunutta tiedostoa heti apt upgrade -komennon jälkeen on normaalia, ja raportin aikaleima vahvistaa sen. Kolme muuttunutta tiedostoa hakemistossa /usr/bin keskiviikkona ilman päivityksiä on syy pysähtyä ja tarkistaa.

AIDE ja debsums

Työkalut ratkaisevat sukulaistehtäviä mutta eri mallilla. AIDE vertaa omaan tilannekuvaansa — ja näkee siksi muutokset missä tahansa tiedostoissa, myös sivuston koodissa. debsums vertaa jakelun pakettien tarkistussummiin — ja näkee siksi järjestelmätiedostojen vaihdon täysin ilman valmistelua, mutta ei tiedä mitään siitä, mitä on asennettu pakettien ulkopuolelta. Molemmat kannattaa olla; käytännössä debsums tulee yleensä ensin, koska se ei vaadi asetuksia eikä tietokantaa.

Niiden heikkous on yhteinen: raportti tulee postissa, ja posti katoaa. Merkitystä ei siis ole sillä, että tarkistus on ajettu, vaan sillä että on paikka, jossa sen viimeisin tulos näkyy. Miltä se näyttää, näkyy alla olevalla esittelysivulla.