Integritetskontroll svarar på en fråga som varken antivirus eller brandvägg svarar på: vad har ändrats på den här servern sedan förra veckan? En signaturskanner letar efter känd skadlig kod; AIDE vet ingenting om skadlighet, det vet att den här filen såg annorlunda ut i går. För att upptäcka en bakdörr som lagts till i en befintlig fil är det den enda metod som fungerar.
AIDE installeras med två kommandon. Att ställa in det så att rapporterna läses är den svårare delen — och det är just där det oftast havererar: första rapporten kommer på tiotusen rader, den andra öppnar ingen, och en månad senare tas jobbet bort.
Installation och första databasen
sudo apt install aide aide-common
sudo aideinit
Initieringen tar från några minuter till en halvtimme: kontrollsummor beräknas för alla filer. Resultatet hamnar bredvid arbetsdatabasen med ändelsen .new och måste tas i bruk:
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Kontrollen körs sedan så här:
sudo aide --check
Vad du ska undanta för att rapporten ska gå att läsa
Inställningarna ligger i /etc/aide/aide.conf och i katalogen /etc/aide/aide.conf.d/. Debians standardkonfiguration kontrollerar för mycket, och det första du gör är att ta bort det som ändå ändras hela tiden:
/var/log— ändras varje sekund;- hela
/var/lib— databaser, pakettillstånd, tjänstetillstånd; /var/cache,/tmp,/proc,/sys,/run;- sajtens uppladdnings- och cachekataloger — deras innehåll ändras av besökarna.
Med de strängaste inställningarna är det däremot värt att kontrollera en smal lista:
/bin,/sbin,/usr/bin,/usr/sbin— systemets körbara filer;/lib,/usr/lib— bibliotek;/etc— konfigurationen;/root/.sshoch användarnas.ssh-kataloger;- sajtens kod, men utan uppladdnings- och cachekataloger.
Riktmärke: en vanlig daglig rapport ska rymmas på en skärm. Är den längre är undantagen för få, och läsandet upphör.
Var databasen ska ligga
En viktig detalj som ofta glöms. Har en utomstående root kostar det ingenting att byta ut en fil och genast uppdatera AIDE-databasen — och kontrollen efteråt visar att allt är i sin ordning. En databas som ligger på samma maskin med skrivrättigheter skyddar bara mot olyckshändelser.
Ett rimligt minimum för en enskild server:
- kopiera databasen efter varje uppdatering till en annan maskin och kör kontrollen med den kopian inlagd;
- eller åtminstone spara databasens kontrollsumma separat och jämföra den före kontrollen:
sha256sum /var/lib/aide/aide.db
Även ett så enkelt grepp förvandlar ett tyst utbyte till en märkbar händelse.
Att uppdatera databasen är ett medvetet beslut
Efter berättigade ändringar — en systemuppdatering, en ny version av sajten — byggs databasen om:
sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Tidpunkten spelar roll. Rätt: gå igenom rapporten, försäkra dig om att varje ändring går att förklara, och uppdatera först därefter. Fel och mycket vanligt: köra aide --update enligt schema för att rapporterna ska vara rena. I det andra fallet fungerar systemet, rapporter kommer, och ändringar registreras som norm exakt i det ögonblick de sker — hela poängen försvinner.
Schema och belastning
Paketet aide-common lägger själv upp ett dagligt jobb. Kontrollen belastar disk och processor i några minuter, så den bör köras vid en lugn tidpunkt och med sänkt prioritet:
0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check
Hur du läser rapporten
Tre avsnitt: tillagda, borttagna och ändrade filer. Vid varje ändring syns exakt vad som skiljer: innehåll, rättigheter, ägare, tid.
Vad du reagerar på först:
- ändring av vilken fil som helst i
/bin,/sbin,/usr/binutanför ett uppdateringsfönster; - nya filer i systemkataloger;
- ändringar i
authorized_keys,/etc/passwd,/etc/sudoers,/etc/crontaboch/etc/cron.d; - att filen
/etc/ld.so.preloaddyker upp — den uppstår aldrig av sig själv.
Hundra ändrade filer direkt efter apt upgrade är normalt, och rapportens tidsstämpel bekräftar det. Tre ändrade filer i /usr/bin en onsdag utan uppdateringar är skäl att stanna upp och kontrollera.
AIDE och debsums
Verktygen löser besläktade uppgifter men efter olika mönster. AIDE jämför mot sin egen ögonblicksbild — och ser därför ändringar i vilka filer som helst, inklusive sajtens kod. debsums jämför mot kontrollsummorna i distributionens paket — och ser därför utbyte av systemfiler helt utan förberedelse, men vet ingenting om det som installerats utanför paket. Det är klokt att ha båda; i praktiken kommer debsums oftast först, eftersom det varken kräver konfiguration eller databas.
Deras svaghet är gemensam: rapporten kommer med posten, och post försvinner. Det som räknas är alltså inte att kontrollen körts utan att det finns en plats där dess senaste resultat syns. Hur det ser ut visar demonstrationssidan nedan.