Integritetskontrol svarer på et spørgsmål, som hverken antivirus eller firewall svarer på: hvad er ændret på denne server siden sidste uge? En signaturscanner leder efter kendt skadelig kode; AIDE ved intet om skadelighed, det ved, at denne fil så anderledes ud i går. Til at opdage en bagdør tilføjet i en eksisterende fil er det den eneste metode, der virker.

AIDE installeres med to kommandoer. At sætte det op, så rapporterne læses, er den sværere del — og det er netop der, det oftest strander: første rapport kommer på ti tusind linjer, den anden åbner ingen, og en måned senere fjernes jobbet.

Installation og første database

sudo apt install aide aide-common
sudo aideinit

Initieringen tager fra nogle minutter til en halv time: kontrolsummer beregnes for alle filer. Resultatet havner ved siden af arbejdsdatabasen med endelsen .new og skal tages i brug:

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

Kontrollen køres derefter sådan:

sudo aide --check

Hvad du skal undtage for at rapporten kan læses

Indstillingerne ligger i /etc/aide/aide.conf og i mappen /etc/aide/aide.conf.d/. Debians standardopsætning kontrollerer for meget, og det første, du gør, er at fjerne det, der alligevel ændrer sig hele tiden:

  • /var/log — ændrer sig hvert sekund;
  • hele /var/lib — databaser, pakketilstand, tjenestetilstand;
  • /var/cache, /tmp, /proc, /sys, /run;
  • hjemmesidens upload- og cachemapper — deres indhold ændres af besøgende.

Med de strengeste indstillinger er det derimod værd at kontrollere en smal liste:

  • /bin, /sbin, /usr/bin, /usr/sbin — systemets eksekverbare filer;
  • /lib, /usr/lib — biblioteker;
  • /etc — konfigurationen;
  • /root/.ssh og brugernes .ssh-mapper;
  • hjemmesidens kode, men uden upload- og cachemapper.

Målestok: en almindelig daglig rapport skal kunne være på én skærm. Er den længere, er undtagelserne for få, og læsningen ophører.

Hvor databasen skal ligge

En vigtig detalje, der ofte glemmes. Har en udenforstående root, koster det ingenting at skifte en fil ud og straks opdatere AIDE-databasen — og kontrollen bagefter viser, at alt er i orden. En database, der ligger på samme maskine med skriverettigheder, beskytter kun mod uheld.

Et rimeligt minimum for en enkelt server:

  • kopiér databasen efter hver opdatering til en anden maskine, og kør kontrollen med den kopi lagt ind;
  • eller gem i det mindste databasens kontrolsum separat, og sammenlign den før kontrollen:
sha256sum /var/lib/aide/aide.db

Selv et så enkelt greb gør en stille udskiftning til en mærkbar hændelse.

At opdatere databasen er en bevidst handling

Efter berettigede ændringer — en systemopdatering, en ny version af hjemmesiden — bygges databasen forfra:

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

Tidspunktet betyder noget. Rigtigt: gennemgå rapporten, sikr dig, at hver ændring kan forklares, og opdatér først derefter. Forkert og meget almindeligt: at køre aide --update efter en plan, for at rapporterne skal være rene. I det andet tilfælde virker systemet, rapporter kommer, og ændringer registreres som norm præcis i det øjeblik, de sker — hele pointen forsvinder.

Plan og belastning

Pakken aide-common opretter selv et dagligt job. Kontrollen belaster disk og processor i nogle minutter, så den bør køres på et roligt tidspunkt og med sænket prioritet:

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

Hvordan du læser rapporten

Tre sektioner: tilføjet, fjernet og ændret. Ved hver ændring ses præcis, hvad der er forskelligt: indhold, rettigheder, ejer, tidspunkt.

Hvad du reagerer på først:

  • ændring af enhver fil i /bin, /sbin, /usr/bin uden for et opdateringsvindue;
  • nye filer i systemmapper;
  • ændringer i authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab og /etc/cron.d;
  • at filen /etc/ld.so.preload dukker op — den opstår aldrig af sig selv.

Hundrede ændrede filer lige efter apt upgrade er normalt, og rapportens tidsstempel bekræfter det. Tre ændrede filer i /usr/bin en onsdag uden opdateringer er grund til at standse og undersøge.

AIDE og debsums

Værktøjerne løser beslægtede opgaver, men efter forskellige mønstre. AIDE sammenligner med sit eget øjebliksbillede — og ser derfor ændringer i alle filer, inklusive hjemmesidens kode. debsums sammenligner med kontrolsummerne i distributionens pakker — og ser derfor udskiftning af systemfiler helt uden forberedelse, men ved intet om det, der er installeret uden om pakker. Det er klogt at have begge; i praksis kommer debsums oftest først, da det hverken kræver opsætning eller database.

Deres svaghed er fælles: rapporten kommer med posten, og post forsvinder. Det, der tæller, er altså ikke, at kontrollen er kørt, men at der findes et sted, hvor det seneste resultat ses. Hvordan det ser ud, viser demonstrationssiden nedenfor.