AIDE i OpenBSD
Från Unix.se, den fria unixresursen.
AIDE, Advanced Intrusion Detection Environment, är ett intressant och praktiskt program. Du kan nämligen med AIDEs hjälp skapa en databas över filer du inte vill ha modifierade eller borttagna. Sedan kan du med AIDE kolla efter förändrade eller borttagna filer. I databasen kan även kataloger inkluderas, du får således också veta om en fil har lagts till eller tagits bort i en övervakad katalog.
Varför är detta bra? Överväg följande scenario: någon bryter sig in på din dator. Han eller hon trojaniserar ps, och hindrar det från att lista processen "snifferdaemon", samtidigt modifierar personen även ls och får det att ignorera "sniffeddata.log". Inte bra. Om du inte upptäcker intrånget kan personen fortsätta med att sniffa din nätverkstrafik och möjligtvis få på tag på känslig information. Tänk dig nu att du har AIDE installerat och kör en daglig koll över filerna i databasen, om du har /bin, som vanligtvis huserar ls och ps, inkluderat i databasen kommer AIDE rapportera att filerna har förändrats.
Den här artikeln kommer alltså gå igenom hur du installerar och sätter upp AIDE säkert under OpenBSD. Det mesta i artikeln är dock inte OpenBSD-specifikt utan går även att tillämpa på t ex FreeBSD.
Innehåll |
Installation
Det första steget är förstås att installera AIDE. Detta går, precis som vanligt, hur bra som helst att göra genom ports. Notera dock att ports-trädet (3.3-trädet) i dagsläget inte innehåller senaste versionen av AIDE, 0.9, utan 0.7. Artikeln utgår från att du installerar och använder 0.7 (om det nu finns några relevanta skillnader gällande installation och konfiguration). Om du vill leka med 0.9 själv hittar du adressen till AIDEs hemsida längst ner.
# cd /usr/ports/security/aide/ ; make install distclean
Konfiguration
AIDEs konfigurationsfil, aide.conf, hittar vi inte helt oväntat i /etc. I konfigurationsfilen kan du med hjälp av reguljära uttryck specificera vilka kataloger/filer AIDE ska lägga till i databasen. AIDE kan kolla om följande egenskaper hos filerna har förändrats: rättigheter, inodnummer, antal länker, storlek, mtime, atime, ctime. AIDE kan även kolla om själva filen har ändrats, detta gör den genom att kolla om filens 'checksum' stämmer med den 'checksum' som finns lagrad i databasen. Följande algortimer för att skapa 'checksums' stöds av AIDE: md5, sha1, rmd160 och tiger.
Konfigurationsfilen som följer med distributionen är trots alla AIDEs finesser ganska självförklarande. Lägg till det du vill ha och läs mansidan för aide.conf(5) eller AIDEs manual (adress längst ner) för mer detaljerad information. Ändra även raden "report_url=stdout" till "report_url=file:/tmp/aide_daily_report.txt. Bry dig inte om raderna där man specificerar var databasen ska lagras än så länge, vi kommer till det sen.
AIDE på en skrivskyddad diskett
AIDE i sig är bra, men vad händer om personen som brytit sig in upptäcker AIDE? Han eller hon kan helt enkelt ändra i konfigurationsfilen och få AIDE att ignorera de filer han eller hon inte vill att du ska se. Vi ska därför placera binären, databasen och konfigurationsfilen på en skrivskyddad diskett som vi helt enkelt monterar när vi vill köra en koll. Vi ska även ta bort alla spår efter programmet för att eventuella obehöriga inte direkt ska se att vi kör AIDE.
När du har skräddarsytt konfigurationsfilen så den passar dig är det dags att skapa databasen.
# aide --config=/etc/aide.conf --init
Detta placerar en databas vid namn aide.db.new i /var/db/. Nu har vi binären, konfigurationsfilen och databasen klara. Det enda som återstår är disketten.
# disklabel -r -w /dev/fd0a floppy # newfs /dev/fd0a
Sådär, nu har vi en ffs-formaterad diskett, klar att lägga över de relevanta filerna på. Vi använder 'mv' eftersom vi inte vill ha kvar något av AIDE på vår vanliga disk.
# mount /dev/fd0a /floppy # mv /usr/local/bin/aide /floppy # mv /var/db/aide.db.new /floppy/aide.db # mv /etc/aide.conf /floppy
Nu är vi snart klara, det enda som återstår är att gör disketten skrivskyddad (genom att ändra den lilla pluppen som återfinns på alla disktter ;-)) samt lägga till en rad i roots crontab som kör AIDE två gånger per dygn, 12:10 och 24:10.
Kör 'crontab -e' som root och lägg till följande (allt på samma rad):
10 0,12 * * * mount -r /dev/fd0a /floppy && /floppy/aide --config=/floppy/aide.conf --check ; umount /floppy ;mail -s "AIDE daily report" din\@mail.foo < /tmp/aide_daily_report.txt ; rm /tmp/aide_daily_report.txt
Slutligen tar vi bort de sista resterna av AIDE - mansidor, dokumentation etc.
# cd /usr/ports/security/aide ; make deinstall
Sådär, klart! Nu kommer två detaljerade rapporter / dygn över eventuella filändringarna till din mailbox (notera att du måste köra sendmail lokalt (lokalt som i "lyssnar på loopback") om mail-kommandot ska fungera). Du ska inte bli förvånad om mailen som kommer är tomma, detta betyder helt enkelt att AIDE inte hittade något att rapportera. Värt att notera är även att du förmodligen kommer behöva uppdatera databasen, eftersom program installeras, filer ändras etc.
Mer läsning & adresser
- AIDE (http://sourceforge.net/projects/aide)
- AIDEs manual (http://www.cs.tut.fi/~rammer/aide/manual.html)
- man aide(1)
- man aide.conf(5)