Integriteitscontrole beantwoordt een vraag die noch een virusscanner noch een firewall beantwoordt: wat is er op deze server sinds vorige week veranderd? Een handtekeningenscanner zoekt naar bekend kwaadaardigs; AIDE weet niets van kwaadaardigheid, hij weet dat dit bestand gisteren anders was. Om een achterdeur te vinden die aan een bestaand bestand is toegevoegd, is dat de enige werkende aanpak.

AIDE installeert in twee commando's. Hem zo inrichten dat zijn rapporten worden gelezen, is het moeilijke deel — en juist daaraan gaat hij meestal ten onder: het eerste rapport komt met tienduizend regels, het tweede opent niemand, en een maand later wordt de taak verwijderd.

Installatie en de eerste database

sudo apt install aide aide-common
sudo aideinit

De initialisatie duurt van enkele minuten tot een half uur: van alle bestanden worden hashes berekend. Het resultaat komt naast de werkdatabase te staan met het achtervoegsel .new en moet in gebruik worden genomen:

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

Daarna start u een controle zo:

sudo aide --check

Wat u moet uitsluiten om het rapport leesbaar te houden

De instellingen staan in /etc/aide/aide.conf en in de map /etc/aide/aide.conf.d/. De meegeleverde Debian-configuratie controleert te veel, en het eerste wat u doet is weghalen wat sowieso voortdurend verandert:

  • /var/log — verandert elke seconde;
  • /var/lib in zijn geheel — databases, pakketstatus, dienststatus;
  • /var/cache, /tmp, /proc, /sys, /run;
  • de upload- en cachemappen van de site — de inhoud daarvan wijzigen de bezoekers.

Wat het wél waard is met de strengste instellingen te controleren, is een smalle lijst:

  • /bin, /sbin, /usr/bin, /usr/sbin — de uitvoerbare bestanden van het systeem;
  • /lib, /usr/lib — de bibliotheken;
  • /etc — de configuratie;
  • /root/.ssh en de .ssh-mappen van uw gebruikers;
  • de code van de site, maar zonder de upload- en cachemappen.

De maatstaf: een gewoon dagrapport moet op één scherm passen. Is het langer, dan zijn de uitsluitingen ontoereikend en zal het niet meer worden gelezen.

Waar de database hoort

Een wezenlijk punt dat vaak wordt gemist. Heeft een vreemde root, dan kost het hem niets een bestand te vervangen en meteen de AIDE-database bij te werken — en de controle daarna meldt dat alles in orde is. Een database die op dezelfde machine staat en beschrijfbaar is, beschermt alleen tegen toevalligheden.

Een redelijk minimum voor één server:

  • de database na elke bijwerking naar een andere machine kopiëren en de controle uitvoeren met die kopie teruggezet;
  • of ten minste de controlesom van de database apart bewaren en die vóór de controle vergelijken:
sha256sum /var/lib/aide/aide.db

Zelfs zo'n eenvoudige maatregel maakt van een stille vervanging een opvallende gebeurtenis.

De database bijwerken is een bewuste handeling

Na legitieme wijzigingen — een systeemupdate, een nieuwe versie van de site — wordt de database opnieuw opgebouwd:

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

Het moment doet ertoe. Juist: het rapport lezen, u ervan verzekeren dat elke wijziging verklaarbaar is, en pas daarna bijwerken. Onjuist en zeer verbreid: aide --update volgens schema draaien zodat de rapporten schoon zijn. In het tweede geval draait het systeem, komen de rapporten binnen, en worden wijzigingen als normaal vastgelegd precies op het moment dat ze plaatsvinden — de zin gaat dus volledig verloren.

Planning en belasting

Het pakket aide-common zet zelf een dagelijkse taak klaar. De controle belast schijf en processor enkele minuten, dus voer hem uit op een rustig uur en met verlaagde prioriteit:

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

Hoe u het rapport leest

Drie secties: toegevoegde, verwijderde en gewijzigde bestanden. Bij elke wijziging staat wat er precies verschilt: inhoud, rechten, eigenaar, tijd.

Waarop u als eerste reageert:

  • een wijziging van welk bestand dan ook in /bin, /sbin, /usr/bin buiten een updatevenster;
  • nieuwe bestanden in systeemmappen;
  • wijzigingen in authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab en /etc/cron.d;
  • een verschenen bestand /etc/ld.so.preload — dat verschijnt nooit vanzelf.

Honderd gewijzigde bestanden meteen na apt upgrade is normaal, en het tijdstip van het rapport bevestigt dat. Drie gewijzigde bestanden in /usr/bin op een woensdag zonder updates is reden om te stoppen en te kijken.

AIDE en debsums

De hulpmiddelen lossen naburige problemen op, maar hun referentie verschilt. AIDE vergelijkt met een eigen momentopname — het ziet dus wijzigingen in willekeurige bestanden, de code van de site inbegrepen. debsums vergelijkt met de controlesommen uit de distributiepakketten — het ziet dus vervangen systeembestanden zonder enige voorbereiding, maar weet niets van wat u buiten de pakketten hebt geïnstalleerd. Beide aanhouden is verstandig; in de praktijk komt debsums doorgaans eerst, omdat het noch inrichting noch database vereist.

Ze delen ook één zwakte: het rapport komt per e-mail, en e-mail raakt zoek. Wat telt is dus niet dat de controle heeft gedraaid, maar dat er een plek is waar het laatste resultaat zichtbaar is. Hoe dat oogt, toont de demopagina hieronder.