Weekend Prosjekt: Intrusion Detection på Linux med AIDE


Front linjer tiltak som brannmur, sterk autentisering, og bor på toppen av sikkerhetsoppdateringer er obligatoriske trinn til å holde systemet sikkert. Men du må også sjekke systemet helse ofte og sørge for at et kompromiss ikke slippe forbi deg ubemerket. Et godt sted å begynne er med en Intrusion Detection System (IDS) som overvåker maskinens ressurser og flagg eventuelle endringer som kan indikere en inntrenger eller et rootkit. Advanced Intrusion Detection Environment (AIDE) er en åpen kildekode IDS at du kan sette opp i en helg.

Før vi kommer i gang, skjønt, er det viktig å forstå hvordan en IDS som Aide funksjoner. AIDE er en vertsbasert IDS, som i utgangspunktet betyr at den skanner filsystemet og logger attributtene til viktige filer, kataloger og enheter. Hver gang det kjøres, sammen det sine funn mot den forrige, " kjent god " data, og varsler deg hvis noe har endringer. Men ulempen er at hvis systemet er allerede svekket før du installerer og kjører AIDE i utgangspunktet, vil du ikke være i stand til å oppdage det.

Selvfølgelig, oddsen for at systemet er allerede kompromittert er ikke høy , men faktum er at den eneste måten å garantere
at det er rent er å installere og kjøre AIDE rett etter at du har installert OS, men før du kobler til nettverket. Sette det på din liste over gjøremål ved distribusjon av nye maskiner fra nå av, og som for de eksisterende Linux-bokser, må gjøre som best du kan.

AIDE kjører på Linux og de fleste andre Unix-lignende operativsystemer . Det er forutsatt av de fleste distribusjoner, men det kan være lurt å vurdere å gripe inn koden fra prosjektets hjemmeside og kompilere fra kildekode – er det noen avanserte alternativer som kun er tilgjengelig på kompilering-time via ./configure script. Hvis du allerede har installert en AIDE binære, kjøre aide -V, som vil dumpe ut versjonsnummer og compile-time alternativene som brukes. For nå, skjønt, vil vi snakke om den grunnleggende installasjon og bruk.

Oppsett og premiere

AIDE fungerer sin magi ved å lese i en konfigurasjonsfil som inneholder både en liste av kataloger og filer for å skanne, og attributtene til hver oppføring for å logge. Det fungerer deretter sin vei gjennom treet noder som skal skannes, og skriver ut en database av attributtene funnet. Det er for tiden tretten attributter som AIDE kan logge – inkludert tillatelser, eieren, gruppearbeid, størrelse, alle tre tidsstempler (atime, endringsdato, og mtime), pluss lavere nivå ting som inode, blokk teller, antall lenker, og så videre.

På toppen av de støtter AIDE flere har algoritmer som det kan generere kontrollsummer for hver fil. Som standard listen inkluderer MD5, SHA-1, SHA-256, SHA-512, RMD-160, Tiger, Haval, og CRC-32. Hvis du kompilere AIDE med Mhash muligheten til skriptet, kan du også bruke GOST og Whirlpool hashes

Binær pakkene inkluderer sannsynligvis en anstendig eksempel konfigurasjonsfil i /etc/aide/aide.conf &mdash.; i en bit, vil vi forklare hvorfor du kanskje vil bruke et annet sted, men for øyeblikket, åpne filen i et redigeringsprogram, og ta en titt på konfigurasjonsdirektiver.

Nær toppen er regelen definisjoner, som er like bruker leveres navn etterfulgt av et likhetstegn og en liste over egenskaper og hashes. For eksempel:

 SizeOnly = s + bSizeAndChecksum = s + b + md5 + sha1ReallyParanoid = p + i + n + u + g + s + b + m + a + c + md5 + sha1 + rmd160 + tiger + boblebad 

Den første linjen aktiverer bare størrelsen (e) og blokk count (b) attributter. Den andre legger MD5 og SHA-1 hashes, og den tredje logger omtrent hver støttet funksjon, inkludert inode (i), tidsstempler (m, a, og c) og en neve ekstra hashes.

Under disse regel definisjonene du finner noen linjer notering kataloger og filer for å sjekke, bruker vanlig-uttrykk basert formler. ! For eksempel:

 /etc SizeAndChecksum /sbin ReallyParanoid /var Størrelse /var /log /.*!/var /spool /.* 

De tre første linjene er " positivt " uttrykk som forteller AIDE å inkludere alt som matcher regulært uttrykk. Den ledende utropstegn på de to siste indikerer en " negativ " uttrykk, som i dette tilfellet sier å utelukke den raskt skiftende /var /log /og /var /spool /kataloger. Som du kan se, er hvert positivt uttrykk etterfulgt av navnet på en av de regel definisjoner. Du kan også bruke en streng i stedet for en regel navn her, for eksempel /var /www /intranett p + s + b + a + SHA256 – regel navnene er bare for lettere å lese.

Korrekt definere dine regulære uttrykk og regler er den vanskeligste delen av å bruke AIDE. For mange filer og kataloger, og du kan ende opp med ekstremt lange stokker til å lese gjennom på hver integritet sjekk. For smale for et sett, og du risikerer mangler en inntrenger. Det er heller ikke trivially lett å få den rette balansen av regulære uttrykk syntaks når du ønsker å matche noen filer i en katalog hierarki, men ikke andre. Det er en god idé å konsultere AIDE bruksanvisningen og lese mann aide.conf om hjelp kombinere wildcards med positive og negative uttrykk.

Selvfølgelig, det er ingen erstatning for faktisk prøver ut konfigurasjonen med en ekte løp. Kjør sudo aide --init, og AIDE skanner utpekt filer og kataloger, skrive sine funn til en database. Plasseringen av databasen bestemmes av en linje på formen database = URL
i konfigurasjonsfilen. Dataene blir også kopiert til stdout, slik at du kan se prosessen fra et terminalvindu. Hvis du mangler noen filer og trenger å finpusse uttrykk, kan du gjøre det og kjøre prosessen før du fortsetter.

Sammenligning Påfølgende Sjekker

Nå kommer det viktige (og potensielt forvirrende ) del. Tiden går, og når du føler det er forsvarlig, du bestemmer deg for å kjøre et annet søk med sudo aide --check. Bortsett fra at med mindre du angir noe annet, ser AIDE for en konfigurasjonsfil i gjeldende arbeidskatalog
– som reiser spørsmålet om hvor du bør holde den viktige filen konfigurasjon.

Ved første øyekast kan det virke som du bør lagre den i en standard plassering som /etc /assistent /, men det er faktisk en dårlig idé, fordi hvis systemet noensinne var sprukket, kan inntrengere ikke bare lese AIDE konfigurasjon og søke etter kataloger som du har valgt å ignorere, men de kan endre nettadressen til utgangs database for å lure påfølgende Aide skanninger.

Så den beste planen er faktisk å lagre aide.conf fil på flyttbare medier (helst read-only), som du monterer rett før du kjører en scan. Av lignende grunner, er det tryggeste stedet å oppbevare AIDE utgang database også på dette flyttbare medier, så inne i konfigurasjonsfilen til databasen linjen kan være database = /media /AIDE_CD_012345 /aide.db. Du forteller AIDE der konfigurasjonsfilen er med -. Config
kommandolinjepara

Dermed riktig scan kommandoen for å kjøre er (i dette eksempelet) sudo aide --check - -config = /media /AIDE_CD_012345 /aide.conf.

Hvis noen erstatter ditt eksemplar av /sbin /fsck, bør den andre scan merke det og rapportere det til deg på stdout. På den annen side, kan du ha god grunn til å endre en systemfil som /etc/pam.conf selv, i så fall trenger du ikke AIDE kaste et rødt flagg hver gang du kjører en scan. Du kan starte AIDE som sudo aide --update --config = /sti /til /din /aide.conf å både kjøre en scan og Selge utgang en oppdatert kopi av databasen. AIDE vil lagre den nye databasen på nettadressen du oppgir i konfigurasjonsfilen etter database_out =. Hvis du følger riktig protokollen, vil dette være et sted montert lese-skrive, og senere vil du kopiere den nye databasen til din beskyttet media.

Så hvor ofte bør du kjøre skanninger? Det avhenger av maskinen. På plug-datamaskin som kjører huset ditt lysstyring og sprinkleranlegg, sjelden. På selskapets Internett-gateway, daglig minst

Extra Credit:. ACL, SELinux, og Database Signering

Som du sikkert har innsett, er alt AIDE kan gjøre deg oppmerksom på endrede filer. Ballen er i retten din til å registrere om endringen er et tegn på et sikkerhetsbrudd. Noen systemfiler bør aldri endre; noen (for eksempel tty-enheter) endring eier og tillatelser i ordinær drift. Du må bli kjent med systemet.

Avhengig av systemet ditt, kan du ikke finne de generiske Aide binærfiler som leveres av din distribusjon opp til oppgaven. Det er fordi det er noen egenskaper som AIDE kan overvåke bare hvis de er konfigurert som kompilering-time alternativer, for eksempel støtte for SELinux sikkerhets sammenhenger, adgangskontroll lister og utvidede attributter. Hvis du trenger noen av disse funksjonene, vil du ønsker å kompilere AIDE deg fra kilden. Heldigvis er det ikke vanskelig; standard GNU kompilatoren kjeden er alt som kreves.

Som nevnt ovenfor, de compile-time alternativene inkluderer også støtte for flere hash algoritmer. Som du foretrekker er i stor grad et spørsmål om personlig matematisk preferanse. Men det er også en annen kompilering-tid alternativet som du bør vurdere om du vil ha en virkelig
sikker oppsett. Konfigurering AIDE med HMAC (hash-basert meldingsautentiseringskode) støtte lar deg kryptografisk signere både konfigurasjonsfilen og utgang database.

Dette er en kompilering-tid alternativet, ikke en run-time alternativet, fordi tilsette det hindrer aide binære fra å kjøre en scan i tilfelle at signaturen til config fil eller database stemmer ikke. Det er det du vil ha: en binær som ikke kan bli lurt til å bruke en kompromittert database. Fordi la oss innse det – skrivebeskyttet media du bruker er bare så sikker som den skap du lagre den i. For å konfigurere AIDE med HMAC støtte, lese den siste delen av den AIDE online manualen. Du må velge et par av krypteringsnøkler, men ellers er det en ganske enkel prosess. Etter det, er det å lene seg tilbake og skanne-as-usual.