Arkiv for '3-feile "kategori

Er Virtualisert systemer mer eller mindre sikker?

18 mai 2010

Jeg har hatt over spørsmålet nok ganger at jeg følte det verd et blogginnlegg. Mens noen år tilbake svaret kan ha vært "mindre sikker", i dag er svaret "både". Jeg vet, det høres ut som Chris være uforpliktende, men at svaret egentlig ikke beskrive mest nøyaktig den nåværende tilstand av teknologien.

Virtualisering endrer alt

Jeg har hørt noen folk bemerkning at virtualisering er i ferd med å påvirke industrien på samme måte som internett gjorde på 90-tallet. For å være ærlig, tror jeg det er fortjeneste i den mening. På begynnelsen av 90-tallet de fleste folk kjørte IPX, AppleTalk, NetBUI og en mengde andre protokoller på lukkede nettverk. Ved slutten av 90-tallet ble de fleste folk kjører IP utelukkende med tilkobling til hele verden. Måten vi gjorde forretninger, samt måten vi brukt sikkerhet, helt endret seg over at 10 år. Både nettverk administrasjon og sikkerhet ferdigheter som ble cutting edge i 1990 var alle, men ubrukelige innen 1999.

Virtualisering er i ferd med å trappe opp til å ha samme innvirkning på bransjen. Virtualiseringsdistribuering krever en fullstendig gjennomtenkning av hvordan å søke sikkerhet. Tilbake på 1990-tallet, fikk admins som rett og slett koblet til Internett, uten hensyn til hvordan dette ville påvirke deres nettverk, brent big time. Vi står i kø for å se et lignende utfall som folk vedta virtualisering.

Hva gjør Virtualisering mindre sikker

Den akilleshæl av virtualisering er i selve programvaren. Vi håper vi kan stole på programvaren for å holde Gjestene systemene fra hverandre, samt vert og / eller hypervisor. Det er to hovedproblemer med denne forventningen:

  1. Ingen programvare er feilfri
  2. Programvare kan være feilkonfigurert

Noen år tilbake Core-forskning viste at de kunne bryte ut av en gjest og få full kontroll over verten OS . Mens en Hypervisor er ment å begrense den type eksponering, har vi faktisk sett tilfeller der selv hypervisoren har vært forbigått . Vi har selv sett tilfeller var programvaren blir utnyttes bare når det kjøres i et virtuelt miljø . Disse lenkene viser et lite tverrsnitt av virtualisering problemene som har blitt oppdaget de siste årene. Google kan gi deg en mer komplett liste hvis du er interessert.

Så en forsvarlig sikkerhet profesjonell skal være forsiktig med å stole blindt programvare for å være sikker. Problemet er leverandørene ikke alltid ta dette samme tilnærmingen. Ta VMware med sin ESX (snart ESXi) produkt som eksempel. Mange av oss ble forbløffet da en VMware representant annonsert på CanSecWest at det var teoretisk umulig å angripe ESX hypervisor . Når vi bare anta noe er uknuselige, noen er mer kreative kommer til å finne ut en måte å slå igjennom .

En av mine største bekymringer med ESX / ESXi er at VMware har designet den for å være modulbasert (via VMSafe ). På pluss-siden, betyr dette at eksterne leverandører kan lage produkter for å forbedre hypervisoren funksjonalitet og sikkerhet. På nedsiden Dette øker sjansene for dårlig kode som blir introdusert som kan kompromittere sikkerheten.

Vi har sett et godt eksempel på dette i det siste. Marcus Ranum skapte Gauntlet brannmur, som den gang var en av de sikreste og sparke rumpe sikkerhet enheter tilgjengelig. Når tre brev byråene ville den beste sikkerheten, henvendte de seg til Gauntlet. Marcus solgt Gauntlet til Network Associates (senere ble McAfee) som straks startet å legge på funksjoner. Det var ikke lenge før en jevn rekke sårbarheter ble oppdaget, hver introdusert av disse nye "funksjoner". Derfra mistet produktet sin sikkerhet cred og skled ut av radar.

Nå er det absolutt mulig å legge til funksjoner og holde ting sikkert. De FreeBSD folk er et utmerket eksempel på hvordan du gjør dette riktig. For å sikre sikkerheten de opprettholde en meget streng auditeringsprosess . Er den perfekt? Absolutt ikke, men deres auditeringsprosess har satt standarden for sikker programvare implementering. Med noe hell VMware vil gjøre lignende, men jeg har ikke hørt noe buzz om dette er tilfelle.

Komme Your Head Straight

OK, så vi kan ikke blindt stole på virtualisering programvare for å holde angriperne i sjakk. Vi kan imidlertid fortsatt ta forholdsregler for å minimere virkningen hvis det verste skjer. En av de største du kan gjøre er å nøye vurdere hvilke servere blir vertskap, og hva andre gjesterom systemer er tillatt å kjøre på samme boks. Sikkerhetssonen begrep som brukes av nettverket arkitekter er like aktuelt her.

En sikkerhetssone er rett og slett en samling av systemer som deler den samme relative nivå av risiko. For eksempel Web, og SMTP-servere er vanligvis befinner seg på en DMZ, fordi de alle aksje tilsvarende risiko fra direkte angrep. På den interne delen av nettet, er stasjonære vanligvis plassert i en annen sikkerhetssone enn serverne. Dette er fordi serverne har liten eller ingen tilgang til Internett mens stasjonære vanligvis lov til å kommunisere direkte. Dette plasserer skrivebordene høyere risiko for angrep enn serverne.

Vi kan bruke dette samme logikken ved implementering virtualisering. En DMZ server og en intern server bør ikke være gjester på den samme maskinvaren (både CPU og disk array). Gjør du det kan gi en angriper mulighet til å skape en alternativ rute til nettverket vårt. Snarere enn å måtte passere gjennom en brannmur, NIDS og nips, etc. enheter som har blitt utplassert på ledningen, kan en angriper kunne få tilgang til interne ressurser via virtualisering programvaren. Er det en enkel angrep? Ikke fra det vi har sett så langt. Funksjonelle utnytter har blitt oppdaget imidlertid så hvorfor innføre unødig risiko hvis vi ikke må.

Forresten, bør de samme sikkerhetssonenivåene regler brukes til virtuelt nettverk utstyr. For eksempel er det en dårlig idé å bruke den samme fysiske bryteren til VLAN DMZ og det interne nettverket. Jeg har sett et par kunder får whacked den måten.

Hva gjør Virtualisering sikrere

Heldigvis, fra et sikkerhetsperspektiv, er virtualisering ikke alle dårlige nyheter. Faktisk er det noen veldig kule sikkerhetsrutiner kan du søke i et virtualisert miljø som du bare ikke kan klare seg uten det. Dette var en av grunnene til at vi begynte å bruke virtualisering innen Honeynet så tidlig som 2000.

En av de største sikkerhetsproblemene vi står overfor i dag er kjernen nivå rootkits . Hva gjør denne stammen av malware så lumske er det effektivt blir selve operativsystemet til malware. Dette gjør deteksjon ekstremt vanskelig, som alle sikkerhetskontrollene må passere gjennom kjernen. Hvis selve kjernen er kompromittert, kan vi ikke stole på kjernen til nøyaktig rapportere sikkerhetsinformasjon. Vi ender opp med å måtte nedleggelse systemet, montere harddisken på en kjent for å være rent OS, og utfører våre rettsmedisinske sjekker derfra. Å selvfølgelig problemet med denne prosessen er at den ikke skalerer godt. Hvis vi har dusinvis eller hundrevis av servere, det er rett og slett ikke nok tid på en dag for å sjekke dem alle riktig.

Som nevnt tidligere, er VMware nå tillater tredjeparts leverandører tilgang til hypervisoren API via VMSafe. Dette gir tilgang til privilegert tilstand informasjon, for eksempel minne og nettverkstrafikk, på hver av gjesten OS. Ved å plugge inn i hypervisor, noen ekstremt kule sikkerhetsalternativer blitt mulig.

For eksempel la oss si en gjest OS er angrepet av en kjerne nivå rootkit. Ved å analysere gjest minne, kan det rootkit påvises fra utsiden av den virtuelle operativsystemet. Når du utfører kontrollene via hypervisor, er det langt mindre sjanse for at en rootkit kan stealth sine aktiviteter og gå ubemerket. Som nevnt tidligere, er det ingen sammenlignbar alternativ med et ikke-virtualisert system.

API plug skaper også nye muligheter for å håndtere kryptert trafikk. Når ende til ende kryptering er ansatt (som en VPN), nettverksbaserte kontroller av programmet laget er lett forbigått. Din eneste reelle alternativet var å kjøre agenten programvare på slutten, kunne så sikkerheten skal gjennomføres etter dekrypteringen. Selvfølgelig problemet her er at hvis agenten er angrepet, er alle spill av. Igjen, ved å koble inn i hypervisoren er vi i en bedre posisjon til mer sikkert granske disse dataene.

Vi er bare å begynne å se nye produkter som utnytter VMSafe API pluggen . Siden alle produktene er relativt ny, er juryen fortsatt ute på hvor effektive de kan være. Tilbudene kjøre gambit fra å erstatte host-basert brannmur og IDS beskyttelse til full håndhevelse. Det vil være interessant å se hvordan dette produktet nisje rister ut over neste år.

Oppsummering

Så som jeg nevnte i begynnelsen av dette innlegget, har virtualisering evnen til å gjøre miljøet mer eller mindre sikker, avhengig av hvordan du distribuerer den. Hvis du bare begynne alt på en enkelt boks, er du sannsynligvis kommer til å få whacked. Hvis du utvide den beste praksis som er utviklet gjennom årene inn i virtualisering riket, samt utnytter noen av de nye sikkerhetsfunksjonene som blir utgitt, kan du faktisk lage en bedre total sikkerhet holdning.

Kombinere Logwatch og OSSEC - Del 4

18 februar 2010

I mitt siste innlegg installerte vi Logwatch samt OSSEC. Det er nå på tide å få Logwatch og OSSEC spille sammen i samme sandkassen. I dette innlegget vil jeg diskutere hvordan å få Logwatch å oppsummere den informasjonen som blir generert av OSSEC.

Deployment Alternativer

Vi har to veier vi kan følge for å sette dette opp:

  1. Har Logwatch analysere OSSEC loggene direkte.
  2. Har OSSEC sende sine meldinger til en Syslog typen server, og deretter kjøre Logwatch på sysloggserveren.

Fordelen for alternativ 1 er at vi bare trenger ett system. Logwatch skal kjøres på systemet vert OSSEC server. Problemet vi kommer til å kjøre inn likevel innebærer OSSEC varselet filen. Loggoppføringer ikke blir normalisert. Dette betyr at formatet kan endre seg fra oppføring til oppføring, og kan også spre seg over flere linjer. Det kommer til å bli en ekte mareritt å lage en Logwatch skript som vil filtrere og oppsummere varselet informasjon.

Hvis vi går med opsjon nr. 2, vil vi kreve en annen boks for å fungere som vår sentralisert logging server. For å få OSSEC serveren godta oppføringer fra ikke-agent systemer, har det å lytte på UDP/514. Dette er den samme porten som brukes av en sentralisert logging server, og du kan ikke ha to programmer har samme port (unntatt med Windows, men socket tilgangen er ekstremt rotete). På pluss-siden, vil varslet oppføringene blir normalisert når de er overført til sysloggserveren så lage en Logwatch sammendrag script vil bli langt enklere. Videre vet Logwatch allerede om standard Syslog filene, så vi vil ha mindre tilpasning arbeid å gjøre.

Til slutt nevnte jeg i en tidligere post som OSSEC ikke er designet for å være et SIM. Dette er fordi det ikke rekord alt, bare de hendelser som genererer et varsel. Så vi sannsynligvis kommer til å ha en sentralisert server uansett, og det er fornuftig å ha den lagre informasjonen som blir generert av OSSEC.

Så hvis det høres ut som jeg styrer du mot alternativ nr. 2, er du helt korrekt. Med det sagt, jeg faktisk kommer til å dekke alternativ 1 som det er en langt mer komplisert oppsett.

Dealing med dato / klokkeslett Frimerker

Ta en titt på de viktigste OSSEC loggfilen og du skal se omtrent slik ut:

[Root @ Fubar logger] # tail -3 / var / ossec / logger / ossec.log

2010/02/18 12:32:05 ossec-rootcheck: INFO: Avslutte rootcheck scan.

2010/02/18 14:27:06 ossec-syscheckd: INFO: Starter syscheck scan.

2010/02/18 14:39:21 ossec-syscheckd: INFO: Avslutte syscheck scan.

Legg merke til måten dato / klokkeslett-stempel er formatert. Dette er annerledes enn de fleste programmer, så det første vi må gjøre er å fortelle Logwatch hvordan man skal håndtere dette formatet. Vi må lage et skript som vi kan kalle når det trengs som forstår formatet vist ovenfor.

Start med å flytte inn i den delte skript katalogen:

cd / usr / share / logwatch / scripts / delt

Bruk din favoritt editor, lage en fil som heter "applylongdate":

VI applylongdate

Her er hva du trenger på innsiden av filen. Føl deg fri til å kopiere / lime inn fra denne siden:

Bruk Logwatch ': dateres';

my $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;

$ SearchDate = TimeFilter ('% Y /% m /% d% H:% M:% S');

if ($ Debug> 5) {

print stderr "DEBUG: Inside ApplyLongDate ... \ n";

print stderr "DEBUG: Looking For". $ SearchDate. "\ N";

}

while (definert ($ ThisLine = <STDIN>)) {

if ($ ThisLine = ~ m / ^ $ SearchDate / o) {

print $ ThisLine = ~ s / ^ .... \ / .. \ / .. ..: ..: .. / /;

print $ ThisLine;

}

}

# Vi: shiftwidth = 3 syntaks = perl tabstop = 3 et

Når du lagrer filen, har vi nå må stille de riktige tillatelser:

chmod 755 applylongdate

Konfigurer loggfilene

Neste vi trenger å fortelle Logwatch hvor OSSEC loggfilene ligger. Hver gang du legger til nye loggfiler eller opprette nye tjenester for å overvåke i Logwatch, bør du plassere dine endringer under / etc / logwatch katalogen. Vi skal lage to konfigurasjonsfiler. Den første vil håndtere OSSEC meldinger, og den andre skal håndtere OSSEC varsler og aktive respons endringer.

La oss begynne med å lage konfigurasjonsfilen for den viktigste OSSEC loggfilen:

cd / etc / logwatch / conf / loggfiler

VI ossec.conf

Innholdet i filen skal være som følger:

Logfile = / var / ossec / logger / ossec.log

* ApplyLongDate =

Du kan nå lagre og avslutte filen. Deretter vil vi lage config-filen for de resterende loggfiler:

VI ossec-alert.conf

Innholdet i denne filen skal være som følger:

Logfile = / var / ossec / logger / aktiv-responses.log

Logfile = / var / ossec / logger / varsler / alerts.log

Logfile = / var / ossec / logger / brannmur / firewall.log

Når fullført, lagre og avslutte. Standard tillatelsene bør være akseptabelt for oppsett vår.

Konfigurere OSSEC Tjenester

Deretter må vi definere OSSEC tjenester og identifisere hva vi vil bruke som en tittel når rapportene er generert. Her er hvordan å lage den første filen:

cd / etc / logwatch / conf / tjenester

VI ossec.conf

Innholdet i denne filen er ganske enkelt:

Title = "OSSEC meldinger"

Logfile = ossec

Når fullført, kan du lagre og avslutte. Vi trenger å skape en mer fil i denne katalogen:

VI ossec-alert.conf

Innholdet i denne filen skal være:

Title = "OSSEC varsler"

Logfile = ossec-varsel

Når fullført, lagre og avslutte som vanlig.

Analysere oppføringer

Deretter må vi fortelle Logwatch hvordan å formatere loggoppføringene i rapporten. Vi må skape en tilpasning script for hvert sett av tjenester. Vi skal begynne med en Logwatch medfølgende test script, bare for å kontrollere at alt fungerer.

Start med å flytte inn i den aktuelle katalogen:

cd / etc / logwatch / scripts / tjenester

Bruk din favoritt editor for å lage din første skriptet:

VI ossec

Innholdet i scriptet bør være som følger:

#! / Bin / bash

# Dette er så fint script som vil vise deg de linjene du vil

# Skal behandle og rapportere om. Det vil først vise

# Standard miljøvariabler og så tar det STDIN og

# Dumpe det rett ut igjen til STDOUT.

# Dette er standard miljøvariabler. Du kan definere

# Mer i din tjeneste config-filen (se ovenfor).

echo "Date Range: $ LOGWATCH_DATE_RANGE"

echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Nivå: $ LOGWATCH_DEBUG"

# Nå tar STDIN og dumpe det å STDOUT

katt

Nå oppretter andre script:

VI ossec-varsel

og omfatter de eksakt samme innholdet:

#! / Bin / bash

# Dette er så fint script som vil vise deg de linjene du vil

# Skal behandle og rapportere om. Det vil først vise

# Standard miljøvariabler og så tar det STDIN og

# Dumpe det rett ut igjen til STDOUT.

# Dette er standard miljøvariabler. Du kan definere

# Mer i din tjeneste config-filen (se ovenfor).

echo "Date Range: $ LOGWATCH_DATE_RANGE"

echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Nivå: $ LOGWATCH_DEBUG"

# Nå tar STDIN og dumpe det å STDOUT

katt

Til slutt må vi sette de riktige tillatelsene:

chmod 755 ossec *

Testing av oppsett

Den enkleste måten å teste vår nye oppsettet er å kjøre kommandoen:

logwatch | less

Hvis du bare ønsker å se endringene, kan du kjøre en rapport på hver tjeneste, en om gangen:

logwatch-tjeneste ossec | less

logwatch-tjeneste ossec-varsling | less

Ytterligere tilpasning

Når du får alt dette fungerer, kan du fokusere på å få Logwatch å filtrere og oppsummere loggoppføringene. Logwatch er ganske fleksibel, og du kan tilpasse resultatet akkurat slik du vil. En av de fine ting om ovenfor testskriptet er over at det viser deg nøyaktig hva du har å jobbe med. Så med litt vanlig uttrykk magi kan du oppsummere de oppføringene som du anser som passende. For noen ideer, sjekk ut filene som ligger under:

/ Usr / share / logwatch / scripts / tjenester

Disse er standard summariske skript som følger med Logwatch. Nærmere bestemt, ta en titt på filene "Pam" og "sshd". De er gode eksempler på både en enkel og et komplekst sett av sammendrag filtre.

Som du utvikle dine skript, følge nøye med på $ LOGWATCH_DETAIL_LEVEL "variable. Dette vil tillate deg å tilpasse utgangsnivået av rapporten avhengig av hvor mye detaljnivå brukeren er ute etter. For eksempel, mens du fremdeles er i ovennevnte tjenester katalogen, kjør følgende kommando:

mindre sshd

Når den første siden av filen innholdet vises, skriver i:

/ Detalj <Skriv Key>

Backslash lar oss søke på filen for en bestemt tekststreng. I dette tilfellet søker vi etter ordet "Detalj". Når du trykker Enter søket vil hoppe gjennom filen til den finner den første forekomsten av tekststrengen. Det vil også markere søkestrengen. I den første kampen vil du merke at forfatteren tildelt variabelen "$ Detalj" å være den samme som den variabelen $ LOGWATCH_DETAIL_LEVEL ". Dette er for å spare dem litt å skrive.

Trykk nå på backslash-tasten igjen etterfulgt av Enter-tasten. Dette vil hoppe gjennom filen til neste forekomst av "Detalj". Du bør se:

if ($ Detalj> = 20) {

Kr Brukere {$ Brukernavn} {$ Host} {$ Method} + +;

} Else {

if ($ Host! ~ / $ IgnoreHost /) {

Kr Brukere {$ Brukernavn} {$ Host} {"(alle)"} + +;

Merk forfatteren gir mer informasjon om detaljnivået er satt til 20 (halvveis mellom lav og medium) eller høyere. Hold hopping gjennom filen og du vil se andre eksempler hvor forfatteren utnyttet denne teknikken.

Nå side ned til slutten av filen, og du burde se denne uttalelsen:

if (nøkler% OtherList) {

print "\ n ** Umatchede Entries ** \ n";

print "$ _: $ OtherList {$ _} tid (s) \ n" foreach nøkler% OtherList;

}

Denne delen er ekstremt viktig, fordi det er en endelig CatchAll. Tenk på en brannmur politikk for et øyeblikk. De fleste av oss lage en endelig regel som sier, "Hvis jeg ikke spesifikt tillater en trafikk mønster gjennom, benekte det". Med andre ord, hvis noe uventet skjer, dette er hvordan jeg vil at du skal håndtere det.

Ovennevnte uttalelse tjener samme formål ved analyse av loggfilen. Alle de tidligere "hvis" utsagn forsøke å matche en bestemt tekststreng i loggoppføringen for å formatere den skikkelig. Denne oppføringen sier "Hvis du ikke har matchet og trykket en bestemt loggoppføring ennå, skrive den ut i en seksjon som heter" ** Umatchede Entries ** ". Dette trinnet er svært viktig, fordi uten den ville vi aldri får se uventede oppføringer. Det er de uventede oppføringer som sannsynligvis er den viktigste og mest interessante.

Exec Oppsummering

Både OSSEC og Logwatch er gode gratis verktøy. OSSEC utmerket til å advare deg når et visst angrep mønster finner sted. Logwatch er et kjempefint verktøy for oppsummering en gang del av stokker slik mennesker kan faktisk gjøre følelse av hva som skjer. Ved å kombinere de to verktøyene du kan opprette en langt mer robust forsvar i dybden holdning. Hele blir større enn summen av delene.

Kombinere Logwatch og OSSEC - Del 3

17 februar 2010

I mine to siste innlegg drøftet jeg Logwatch og OSSEC, samt hvordan de kan være innflytelse til å styrke sikkerheten holdning. I denne utgaven vil jeg diskutere hvordan man installerer begge disse verktøyene.

Installere Logwatch

Logwatch er ganske enkel å installere. Faktisk er det installert som standard på mange Linux-distribusjoner, så du kanskje allerede har en kopi på systemet ditt. For å sjekke, pålogging som root og prøv å kjøre Logwatch med "-v"-bryteren. Hvis du ser:

[Root @ Fubar logwatch] # logwatch-v

Logwatch 7.3.6 (utgitt 05/19/07)

Logwatch er installert og du har en kopi av den nyeste versjonen. Hvis du ikke har den nyeste versjonen, kan du hente den fra Logwatch nedlastingssiden .

Det er tre varianter av Logwatch som kan lastes ned, binærfiler i RPM-format, kilde i RPM-format, eller kilde i en Tar ball. Hvis systemet støtter RPM pakke ledelse, er det binære RPM beste valget. Den er enkel å installere og RPM vil automatisk oppdatere programvaren når nye versjoner er tilgjengelige.

Installere Logwatch Fra RPM

Hvis du vil installere den binære versjonen av RPM, bare logger på som root og naviger til katalogen der du lastet ned RPM filen. Nå utføre kommandoen:

rpm-U logwatch-7.3.6-1.noarch.rpm

Ikke glem at du kan bruke tabulatortasten for å auto-fullføre filnavnet i stedet for å skrive i det hele.

Installere Logwatch Fra Source

Installere fra source er litt mer tidkrevende. Husk at for å installere kildekoden må du allerede ha en kompilator (som GCC) installert på systemet ditt. Logger på som root, og naviger til katalogen der du lastet ned Tar ballen. For å pakke ut arkivet, utføre kommandoen:

tjære xvzf logwatch-7.3.6.tar.gz

Du vil se en katalogstruktur under din nåværende posisjon blir opprettet og massevis av filer som blir kopiert i. Vi trenger nå å flytte inn den øverste katalogen som ble opprettet:

cd logwatch-7.3.6

For Logwatch å kjøre, er det en haug med kataloger som skal opprettes på systemet ditt. Disse er dokumentert i README i gjeldende katalog. Heldigvis har Logwatch en installasjon script som kan gjøre alt arbeidet for deg. Dessverre har skriptet feil tillatelser satt så det vil ikke kjøre som standard. Dette er ganske enkelt å fikse men med chmod kommandoen:

chmod 500 install_logwatch.sh

Nå kan vi kjøre script for å sette opp vårt system:

. / Install_logwatch.sh

Ikke glem perioden på begynnelsen av linjen.

Testing Logwatch

For å teste Logwatch oppsettet, utføre kommandoen:

logwatch | less

Du vil se din terminal skjermen svart, men det er normalt. Du vil etter hvert se en Logwatch rapport blir skrevet til skjermen som du kan navigere gjennom å bruke "Page Up" og "Page Down"-tastene. Hvordan logger det tar for rapporten å dukke opp på skjermen vil avhenge av hvor mye logginformasjonen trenger å få analysert. Det kan ta noen sekunder eller et par minutter. Uansett vil det gi deg en sjanse til å bli kjent med rapporten format.

Installere OSSEC

Som jeg nevnte i mitt forrige innlegg, har du to monteringsmuligheter med OSSEC, lokale eller klient / server. I dette innlegget skal jeg fokusere på klienten / server-oppsett, da det er litt mer komplisert. Hvis du utfører en lokal installasjon, velger du bare "lokale" valget under installasjonen, og hoppe i avsnittet om å sette opp en sikker kanal mellom agenten og serveren.

Start med Server

OSSEC bruker Blowfish-kryptering for å sikre kommunikasjonen mellom klienten og serveren. Blowfish er symmetrisk nøkkel basert, slik at begge sider må vite hva nøkkelen verdi å bruke for å kommunisere. Serveren er ansvarlig for å generere symmetriske nøkkelen, så vi må installere serverprogramvaren første. Under kunden installerer vi vil bli bedt om en nøkkel verdi så åpenbart vi trenger å ha det godt med på forhånd.

Her er en tidsbesparende tips. Nøkkelen verdi er lang og nesten umulig å huske. Den enkleste måten å flytte nøkkelen verdi fra serveren systemet til agenten systemet er å bruke SSH. Opprette en sikker tilkobling til OSSEC serveren, og trekke den aktuelle tasten (retninger nedenfor). I en annen terminal vindu, opprette en SSH sesjon til systemet hvor du skal installere agenten. Når klienten installasjonen ber deg om nøkkelen verdi, kan du bare kopiere / lime mellom de to terminalene.

Installere OSSEC Server

Serverprogramvaren er tilgjengelig som en Tar ball, slik at du kan ta en kopi av den nyeste versjonen fra OSSEC nedlastingssiden . Du må deretter å pakke ut innholdet i Tar ballen:

tjære xvzf ossec-hids-2.3.tar.gz

Deretter flytter inn i katalogstrukturen du nettopp opprettet:

cd ossec-hids-2.3

OSSEC gir en installasjon script for å lede deg gjennom prosessen med å installere serveren. For å starte skriptet, type:

. / Install.sh

Ikke glem perioden på begynnelsen av kommandoen. Du vil nå bli bedt om gjennom en rekke installere alternativer:

  • Språk - Standarden er engelsk. Endre etter behov.
  • Bekreftelse på installasjon - Trykk Enter når du har lese på skjermen.
  • Installer type - Skriv inn "server" uten anførselstegn, og trykk Enter.
  • Installer plassering - Godta standard.
  • E-postvarsling - Standard er ja, velg om du vil at e-postvarsler. Hvis du velger ja, vil du bli bedt om en gyldig e-postadresse og e-postserveren.
  • Integritet sjekk - Standard er ja. Velg om du vil det lokale systemet jevnlig sjekkes for inntrenging.
  • Root kit deteksjon - Standard er ja. Godt alternativ siden vi trenger for å opprettholde en høy integritet på dette systemet.
  • Aktiv respons - Standard er ja. Velg dette alternativet hvis du ønsker å kunne reagere på hendelser.
  • Brannmur drop - tillater OSSEC serveren for å forsvare seg selv hvis en direkte angrep blir oppdaget.
  • Hvit liste - Dette vil tillate deg å legge IP-adresser som mulige angrep vil bli ignorert. Vær forsiktig med dette alternativet. Hvis du ikke vil ha konsollen tilgang til OSSEC server, kan det være lurt å identifisere en IP-adresse som kan alltid komme i. Akkurat sikre kilden IP er en pålitelig system.
  • Aktiver Syslog - Standard er ja. Velg dette alternativet hvis du ønsker å samle logger fra systemet som ikke kan kjøre en OSSEC agent (som brannmurer, svitsjer, rutere, aksesspunkter, etc.).
  • Loggfiler som skal overvåkes - Denne skjermen identifiserer alle de lokale loggfiler OSSEC vil overvåke. Det er en ren informasjon, så alt du kan gjøre er å trykke på Enter for å gå forbi den. Hvis du oppdager en eller flere loggfiler mangler i listen, kan du legge dem senere til ossec.conf filen.

På dette punktet OSSEC vil få tilgang til lokale complier og installere alle nødvendige filer til systemet. Når du er ferdig, kan du starte OSSEC server ved å kjøre kommandoen:

/ Var / ossec / bin / ossec-kontroll start

Definere OSSEC Agenter

Vi er ikke ferdig med OSSEC serveren ennå. Deretter må vi på forhånd definere noen systemer som skal kjøre OSSEC agent (klient) programvare. Dette utføres ved hjelp av manage_agents kommandoen. Først trenger vi imidlertid å gjøre litt lekser. Lag en liste over alle de systemene som skal kjøre OSSEC agent-programvare. For hvert system, trenger du et beskrivende navn samt at systemets IP-adresse.

Nå utføre følgende fra kommandolinjen:

/ Var / ossec / bin / manage_agents

Dette vil gi agenten manager hovedmenyen. Trykk på "A" etterfulgt av Enter for å definere ditt første system. Skriv inn et beskrivende navn for det første systemet, etterfulgt av systemets IP-adresse. Ikke bekymre deg om agenten ID-nummer. Bare godta standardnavnet og OSSEC vil automatisk tildele neste tilgjengelige ID-nummer. Når du bekrefte opplysningene du la inn, vil du bli sendt tilbake til Agent leder hovedmenyen. Gjenta prosessen ovenfor for hvert system som skal kjøre en OSSEC agent.

Generere Keys

Når du har lagt i alle systemer, er det på tide å generere krypteringsnøkler. Dette trinnet er også utført med manage_agents verktøyet. Hvis du lukket verktøyet etter siste trinnet, relansering det nå.

Trykk på "E"-tasten etterfulgt av Enter for å velge "Pakk ut nøkkelen for en agent" menyvalget. Du vil da bli bedt om ID-nummeret av nøkkelen du ønsker å pakke. De beskrivende navn og IP-adresser er oppført med hver ID-nummer, så det burde være trivielt å identifisere hvilken du vil. Start med det systemet du planlegger å installere agenten programvaren på først.

OSSEC Agent Install På Linux

Når du installerer agent-programvare på en Linux eller UNIX klient, bruker du akkurat samme Tar ballen vi brukte til å installere serverprogramvaren. Kjør samme install script, men denne gangen når du blir bedt for den typen installere du ønsker å utføre, skriv inn "agent" etterfulgt av Enter.

Klienten installasjon har mange av de samme instruksjonene som server install. Bruk info ovenfor for å veilede deg gjennom prosessen. Meldingen som vil variere er imidlertid at du vil bli bedt om å oppgi IP-adressen til OSSEC serveren. Når fullført, vil OSSEC tilgang til lokale complier og installere alle nødvendige filer til systemet.

Neste vi trenger å importere Blowfish nøkkelen fra OSSEC serveren. Mens han fortsatt på agenten systemet, kjøre kommandoen:

/ Var / ossec / bin / manage_agents

Når Agent Manager-menyen vises, velger du "jeg" for å importere den Blowfish tasten.

Når neste meldingen vises, må du manuelt skrive inn riktig Blowfish tasten. Igjen, hvis du kjører SSH til begge systemene samtidig, kan du bare kopiere / lime mellom de to terminalene. Pass på nøkkelen ser riktig, trykk på Enter-tasten, og velg deretter "y" for å bekrefte at nøkkelen ser riktig. Du kommer tilbake til Agent Manager-menyen. Velg "q" for å gå tilbake til kommandolinjen.

Nå er vi bare trenger å starte OSSEC agent. Du kan gjøre dette ved å kjøre følgende kommando:

/ Var / ossec / bin / ossec-kontroll start

Du skal se alle de OSSEC agent komponentene starte opp, etterfulgt av en "fullført"-melding.

OSSEC Agent installere på Windows

OSSEC har en selvutpakkende kjørbar som vil tillate deg å installere agenten programvare på en Windows-system. Bare dobbeltklikk den kjørbare for å starte installasjonen. Du vil bli bedt om å godta lisensen samt hvilke komponenter du vil installere. Bare følg instruksjonene till OSSEC Agent Manager-vinduet vises.

Den OSSEC Agent Manager vinduet vil spørre deg om IP-adressen til OSSEC serveren. Det vil også be deg om Blowfish nøkkelen verdi å bruke, så trekke ut den aktuelle tasten på serveren og skriv verdien i dette feltet. Pass på at du sletter meldingen innenfor dette feltet før du limer i Blowfish nøkkelen. Ellers kommunikasjon med serveren kan mislykkes.

Neste, velg "Manage" fra OSSEC Agent Manager-menyen, etterfulgt av "Start OSSEC". Du skal nå se på "Status:" indikator endring "Running ...".

Testing OSSEC

Når du har server og agent-programvare installert, startet og de riktige tastene konfigurert, er det nå på tide å sjekke vårt oppsett. Kjør følgende kommando på OSSEC serveren:

cd / var / ossec / logger

Og sjekk ut ossec.log filen:

mindre ossec.log

Sjekk loggfilen for eventuelle feil. En vanlig feil er at OSSEC rapporter det ikke kan sende e-post. Kontroller at e-postserveren er i gang og at det er å godta tilkoblinger. Når du er fornøyd med serverinstallasjonen, er det nå tid til å sjekke ut agenter. Flytt ned til "varsler" katalogen:

cd varsler

Og sjekk ut alerts.log filen:

mindre alerts.log

Nærmere bestemt er du på utkikk etter oppføringer som ligner på følgende:

2010 17 februar 16:09:16 (desktop) 192.168.1.10-> ossec

Regel: 501 (nivå 3) -> 'Ny ossec agenten tilkoblet.

Src IP: (ingen)

Bruker: (ingen)

ossec: Agent startet: 'test_system-> 192.168.1.10'.

Du burde se en oppføring for hver system som du installerte agent-programvare.

Mer kommer

Puh! Det er mer enn nok for ett innlegg! I mitt neste innlegg vil jeg komme inn utnytte Logwatch å analysere all varsling informasjon blir generert av OSSEC.

Kombinere Logwatch og OSSEC - Del 2

16 februar 2010

I mitt forrige innlegg beskrev jeg hvordan Logwatch kunne brukes til å forenkle loggen vurderingsprosessen. I dette innlegget vil vi se på OSSEC og hva den bringer til bordet.

Hva er OSSEC?

OSSEC , forkortelse for "Open Source Security", er en vertsbasert intrusion detection system (HIDS). Med andre ord, den er konstruert for å oppdage angrep eller brudd på retningslinjene hvis og når de oppstår. Selv om det ikke har evne til å beskytte mot ukjente eller 0-day angrep (som ville være vert Intrusion Prevention), gjør det inkluderer et bredt utvalg av verktøy som kan hjelpe deg å identifisere en inntrenging når det skjer, samt omfang av skaden som er forårsaket.

Støttede plattformer

For å dra nytte av alle funksjonene OSSEC har å tilby, må du kjøre en agent på systemet beskyttet. OSSEC agenter kan kjøres på Windows, Mac OS X, Linux, og et bredt spekter av UNIX-systemer. Hvis du er bare interessert i loggen analyse delen derimot, kan et enda bredere spekter av systemer støttes. Dette inkluderer maskinvare fra både Cisco og Juniper. En rekke konkrete produkter støttes også som Checkpoint brannmurer, Symantec Anti-Virus, Snort, blekksprut, og Arpwatch, bare for å nevne noen.

Når du installerer OSSEC du har to konfigurasjonsmuligheter, lokale eller klient / server. En lokal installasjon brukes når du trenger å kjøre alt på ett enkelt system. Klient / server installasjon lar deg kjøre et distribuert miljø beskytte flere systemer samtidig. Mens de fleste distribusjoner er klient / server-basert, hvis du ønsker å gi OSSEC en snurr kan du enkelt kjøre alt på en enkelt test system ved hjelp av en lokal installasjon.

Logg Analyse

OSSEC inneholder en logg-basert Intrusion Detection System (LOKK). Dette har evnen til å gjennomgå loggfiler i nær sanntid, mens studere dem for kjente angrep mønstre. Når en logg er generert på en beskyttet system, tar agenten seg av sikker overføring av log (Blowfish-kryptering ved hjelp av en pre-shared hemmelighet) tilbake til serveren. Serveren tar deretter vare utføre analysen.

De fleste log analyseverktøy bearbeide sine regler i en lineær format. Ved at jeg mener hvis vi har 500 regler, er regelen en kontrollert, da regelen to, så utelukker tre og så videre til en kamp blir funnet, eller vi kommer til slutten av regelsettet. OSSEC fungerer litt annerledes som den implementerer en hieratical struktur reglene. Loggoppføringer første klassifisert og deretter kontrolleres bare mot det som reglene er hensiktsmessige. Resultatet er at heller enn å måtte behandle alle 500 regler, vil de fleste hendelsene få sjekket mot 10 bud eller mindre. Dette reduserer dramatisk mengden overhead kreves for å behandle regelsettet.

Integritet sjekket

OSSEC inneholder et verktøy kalt Syscheck for å utføre fil og katalog integritet sjekking. Hvis du kjører en Windows agent, kan du også inkludere spesifikke taster innen Windows-registret som skal overvåkes også. Filendringer kan oppdages ved hjelp av både MD-5 og SHA-1 hash algoritmer. Systemet er ekstremt tilpasses. Du kan inkludere eller ekskludere enkelte filer eller hele katalogen strukturer. Du kan også sette et flagg for å oppdage nye filopprettelse.

Agenten er laget for å bruke en minimal mengde av CPU under integritet sjekk. Selv om dette betyr at sjekken vil ta lengre tid, det hjelper også å minimere ytelsen traff til systemet. Hash informasjon blir sendt tilbake til serveren. Serveren tar deretter vare utfører hash sammenligning for å se om noen av systemets kritiske filer har blitt forandret. Serveren lagrer også en kopi av integritet sjekk politikken, slik at hvis politiske endringer er gjort på agent, kan de bli oppdaget og rapportert i tillegg.

Anomali deteksjon

OSSEC går langt utover log sjekker å verifisere systemet integritet. Bruk politikk kan styres sentralt fra serveren, og deretter skjøvet ut til de aktuelle agenter. For eksempel kan du definere en policy om hvilke Windows-programmer er akseptabelt (Office, Firefox, osv.) og hvilke som ikke er (IM klient, Skype, osv.). Du kan selv definere akseptable konfigurasjonsalternativer som bekrefter at NT hashes blir brukt til passordet er lagret, men ikke LanMan hashes.

OSSEC inkluderer en rekke andre godbiter for å hjelpe verifisere systemets integritet. For eksempel OSSEC har evnen til å utføre kommandoer fra agent og overvåke produksjonen som blir generert. For eksempel kan du ha Linux agenten utføre "df" kommandoen med jevne mellomrom og generere et varsel om diskbruk overstiger 90%. En Windows eksempel kan være å ha OSSEC generere et varsel når fil informasjonen skrives til den alternative datastrømmer område av NTFS.

Aktiv Response

Endelig omfatter OSSEC evnen til å reagere når mistenkelig aktivitet blir oppdaget. Svarene kan genereres fra serveren eller agenten, som stadig du angir. Svarene kan være så snille som genererer en e-postvarsel, å være så aktiv som blokkerer en ekstern IP-adresse for en begrenset tidsperiode. Det finnes en rekke inkluderte aktive respons skript du kan tegne på, eller du kan enkelt skrive din egen.

Sikker Arkitektur

De OSSEC Forfatterne har gått langt for å sikre alle komponentene i produktet. Oppgaver som integritet sjekking utføres på serveren, snarere enn agenten, slik at troverdigheten til hashes kan ikke bli kompromittert under et angrep. Prosesser drives med lavest nivå av tillatelser mulige, og forskjellige kontoer benyttes til å kjøre hver OSSEC komponent. Dette betyr at et kompromiss av en enkelt søknad innen OSSEC ikke vil umiddelbart føre til et kompromiss for full pakke. Videre er de fleste komponenter kjøre innenfor en chrooted fengsel slik at deres tilgang til systemet er ytterligere begrenset.

Siste ord

Mens OSSEC er et kraftig verktøy, er det viktig å huske at det er en HIDS og ikke en logg ledelse løsning. OSSEC kan vurdere oppføringer etter mistenkelige mønstre, men det vil bare redde varsel informasjon. Så mens OSSEC ikke vil erstatte Security Information Management (SIM)-løsning, kan det absolutt forsterke den. Du kan enkelt sette opp OSSEC å videresende alle varsler det genererer til en sentral logging server .

Mens OSSEC er åpen kildekode, er Trend Micro primært å utvikle det. Hvis du trenger kommersiell støtte, kan du kjøpe en støtte kontrakt gjennom dem på en rimelig avgift.

Mer kommer

I mitt neste avdrag vil vi se på installasjon OSSEC og Logwatch. Etter det, vil vi flytte inn integrere de to sammen.

Kombinere Logwatch og OSSEC

15 februar 2010

Jeg har nylig hatt en student stille meg et spørsmål om integrering av Logwatch med OSSEC. Jeg følte meg som dette var en kompleks og likevel kjølig nok tanken om at det garanteres en serie innlegg for å dekke den i sin helhet. Så i løpet av de neste dagene vil jeg snakke om hver av disse verktøyene, hvordan å integrere dem sammen, samt hva som ekstra sikkerhet synlighet kan oppnås når prosessen er fullført.

Hva er Logwatch?

Logwatch er en utmerket åpen kildekode verktøy for å generere daglige lesbar log rapporter. Loggoppføringene tendens til å falle inn under en av tre kategorier:

  • Stuff du vet er ondt
  • Stuff du vet er normalt og kan trygt ignoreres
  • Alt annet

Det er at "alt annet"-kategorien hvor Logwatch virkelig skinner. For ting vi vet er ondt, vil vi sette opp noen form for varslingssystem. For eksempel kan vi skrive et varsel signatur som advarer sikkerhetsanalytiker når en konto blir brute tvunget. Men hva med de angrepene vi ikke vet om eller er usikker på hva de ser ut? Dette ville være et klart eksempel på at "alt annet"-kategorien. Trafikken er ikke normalt, men vi har ikke sett det før å ha en signatur som venter på å generere et varsel. Siden vi ikke vil kunne fange angrepet i sanntid, må vi ta den under en daglig logg vurdering.

Selvfølgelig problemet med å gjøre daglig logg vurderinger er at det er kjedelig og tidkrevende. Jeg mener la oss være ærlige, som ønsker virkelig å tilbringe dagen gjennom millioner pluss loggoppføringene? Selv om du gjorde det, er du sikker på at du faktisk ville fange ut av vanlig trafikk?

Slik fungerer det

Hva Logwatch fungerer svært godt er tillate deg å omorganisere dataene til et format som er lettere for mennesker å følge. Dens virkelige styrke er at det tillater deg å flytte ting du forstår ut av veien (normal eller ond), slik at uventede loggoppføringene skiller seg ut som en sår tommel. Med andre ord, lar Logwatch du oppsummere dine loggoppføringene så uvanlig ting er lettere å få øye på.

Hva jeg egentlig liker med Logwatch er at du ikke mister noe. Mange logg gjennomgang verktøy vil bare vise deg ting som er forhåndsdefinert som onde. Problemet de alle er at når noe ondt, men uventet skjer, flyr den rett under ledningen. Fordi Logwatch lar deg se alt du ikke lenger glipp av uventet.

Logwatch In Action

Lar diskutere hvordan Logwatch fungerer ved hjelp av SSH -serveren tjeneste som et eksempel. De skript for å håndtere SSH allerede har blitt definert innenfor Logwatch, så du trenger ikke å gjøre noe tweaking for å få de funksjonene vi skal diskutere.

Ved gjennomgang av en loggfil, vil ikke det første Logwatch er reorganisere loggoppføringene basert på deres meldingstyper. For eksempel alle vellykkede SSH pålogginger er gruppert sammen, samt altfor mange pålogging feil, nektet tilkoblinger, låste kontoene, kontoer uten en skikkelig skall, protokoll mis-kamper, osv. osv. osv. Når alle SSH meldingene er gruppert etter deres typen, blir dataene deretter oppsummert å redusere mengden av informasjon som blir rapportert.

For eksempel er standard å oppsummere mislykkede påloggingsforsøk av konto og kilde IP. Så en typisk mislykket pålogging rapporten punkt kan se slik ut:

Mislykkede pålogginger fra disse:

bsmith / passord fra 1.2.3.4: 637 time (s)

jsmith / passord fra 1.2.3.5: 2 time (s)

Så snarere enn å måtte gjennomgå 639 loggoppføringer rapporterer en dårlig Påloggingsforsøket, har vi all relevant informasjon oppsummert i tre linjer (hvis du inkluderer tittelen). Fortsett denne prosessen for alle de andre SSH meldinger, og vi har dramatisk redusert mengden tid som kreves for å gjennomgå loggene våre.

Men hva hvis noe skjer som Logwatch er ikke forhåndsprogrammert til å gjenkjenne? Når en uventet loggoppføring er funnet, legger Logwatch en seksjon til slutten av tjenesten rapport kalt "Umatchede oppføringer". Så hvis vi ser denne tittelen i SSH server delen, vet vi litt hendelse har inntruffet som enten er unormal eller uventet for SSH-tjeneste. Dette kan meget vel være en form for angrep som vi ikke er klar gjør rundene.

Ved å fokusere på den uovertruffen oppføringer delen, kan vi raskt identifisere uventet aktivitet. Som jeg skrev tidligere, er dette virkelig det viktigste målet med å gjøre daglig logg anmeldelser. For å finne ting vi ikke forventer noe som vil snike seg forbi vårt varslingssystem. Logwatch gjør denne prosessen så raskt og så smertefri som mulig.

Oppsummering av funksjoner

I eksempelet ovenfor snakket jeg om å gjøre daglig logg anmeldelser, men for å være ærlig Logwatch er svært lett å tilpasse. Du kan angi hvilken som helst område du ønsker å bruke ned til et intervall på ett sekund. For eksempel la oss si jeg etterforsker en inntrenging snarere enn å utføre en daglig logg vurdering. Jeg kunne angi et område som "2010/02/14 17:05:00 for den timen" å fokusere rett inn på den informasjonen som interesserer meg. Jeg kan også fokusere på en bestemt loggfilen eller tjeneste.

Detaljnivået i rapporten er også tilpasses. Vanligvis når du avtale med sikkerhet får du for vane å alltid ville det høyeste detaljnivået rapportering. For å være ærlig, med Logwatch et høyt detaljnivå er sannsynligvis mer enn du noensinne vil trenge. Personlig har jeg vanligvis holder med "med" for medium og som funker fint. Du kan også angi rapportering nivå som "lav" eller "høy" eller bruke en numerisk rekke 0-10 for et høyere nivå av granularitet (lav = 0, med = 5, høy = 10).

Logwatch kan kjøres automatisk eller som en manuell prosess. Vanligvis vil du ønsker å sette den opp til å kjøre automatisk hver dag og oppsummere en dags loggoppføringene. Hvis du noen gang trenger å utvide eller fokusere rapporten, kan du alltid kjøre Logwatch fra kommandolinjen mens spesifiserer nøyaktig hva du ønsker å se. Du kan deretter bruke "-save" muligheten til å spesifisere en rapport navn og katalog plassering for lagring.

Mer kommer

Ovennevnte bør gi deg en god idé som de funksjonene Logwatch kan bringe til bordet. I neste innlegg vil jeg diskutere OSSEC i samme detaljnivå. Etter det vil jeg komme inn i hvordan du installerer hvert verktøy samt hvordan å integrere dem sammen.

Dag 2 Keynote

12 januar 2010

Takk til alle som kom ut til Kryptering / DLP-toppmøtet. Her er lysbildene fra min keynote på dag to.

kryptering-DLP-keynote

ICMPv6 Challenge - svar

13 desember 2009

Utfordringen var: "Skriv en tcpdump / windump filter som skal fange ICMPv6 Multicast Listener pakker." Jeg har en omfattende skrive opp hva som gjør svaret så komplisert. Hvis du vet IPv6 og bare vil svaret, hoppe til slutten.

Først litt bakgrunnsinformasjon

Steinar gjort noen kommentarer til tidligere innlegg, og var 100% på sporet. Hvis du leser dem og tenkte "Wow, det høres virkelig rotete", forstår du omfanget av problemet også. :)

Protokoll Vs. Neste Header Felt

Med IPv4 hadde vi alternativene feltet. Dette kan føre til at IP header å vokse fra 20 byte til så stor som 60 byte i størrelse. Med IPv6, er det ikke lenger ett valg feltet og header er satt til 40 byte i størrelse. Når alternativene er nødvendig, bruker vi forlengelse overskrifter for å identifisere dem. Dette kaster en interessant kurve ball på oss fordi med IPv4 protokollen feltet (byte 9) ville (nesten) alltid identifisere øverste nivå transport (TCP, UDP, etc.). Med IPv6 den neste header feltet (byte 6) kan identifisere det øvre laget transport, eller det kan identifisere en forlengelse header som vil inkludere noen flere alternativer.

Her er en liste over noen IPv6 extension overskrifter du kan kjøre inn, samt RFCene som definerer dem:

Alternativ # Alternativ Beskrivelse RFC
0 Hop-by-Hop 2460
6 TCP 793
17 UDP 768
43 Routing 5095
44 Fragmentering 2460
50 ESP 4303
51 AH 4302
58 ICMPv6 4443
59 Ingen neste header 2460
60 Bestemmelsessted 2460
135 Mobilitet 3775

IPv6 begrenser ikke antallet forlengelsen overskrifter du kan bruke i en enkelt packet.There er imidlertid en publisert "anbefalt rekkefølge" om hvordan overskriftene skal legges ut. Rekkefølgen er:

  • IPv6 Header
  • Hop-by-Hop Options
  • Routing Header
  • Fragment Header
  • AH
  • ESP
  • Destination Options
  • Mobilitet Header
  • TCP/UDP/ICMPv6

Merk denne listen er "anbefalt", men ikke obligatorisk. En IPv6 vert må være i stand til å behandle de overskriftene i hva noensinne rekkefølge de ble mottatt. Dette betyr at du vil sannsynligvis finne leverandører følger denne listen, men ikke angripere. Jeg har personlig sett enheter begynne å handle egentlig merkelig når du rotet med overskriften orden. Faktisk har jeg kjørt over ganske mye av "IPv6 kompatibel kode" som ikke kan håndtere hvis foretrukket rekkefølge ikke brukes.

Chasing Protokollen Topptekst

Så med IPv6 kan vi ha flere hoder bak IPv6 header. Hvis dette høres ut som et nytt konsept, er det faktisk ikke. Faktisk har du sannsynligvis jobbet med det allerede. Når du distribuerer IPSec de to mulige sikkerhetsprotokoller er ESP og AH. Disse ble faktisk lånt fra IPv6 og masserte å jobbe med IPv4. Både AH og ESP er et neste header feltet for å identifisere hvilken type pakke de er protecting.This kalles protokoll kjeding, som du effektivt har flere hoder som sitter bak laget tre protokollen header.

Så for å finne ut hva øvre nivå transport (TCP, UDP, etc.) blir brukt, må du søke gjennom flere hoder før du finner svaret. Dette omtales som "jage overskriften", og tcpdump / Windump gi oss et filter alternativet for å utføre denne oppgaven. Du kan være fimiliar med proto filter. I IPv4 verden, hvis jeg sier:

ip proto tcp

At filter leser "sjekk byte 9 av IPv4 header og hvis verdien er lik 6 (protokoll verdi for TCP), samsvarer på pakken". Dette filteret er ikke like effektiv i IPv6 verden av kurset fordi byte 6 av IPv6 header kan identifisere det øvre laget transport, eller det kan bare identifisere en valgfri forlengelse header som blir brukt. For å løse dette problemet, ble protochain filteret innført. Writing:

IP6 protochain tcp

Leser som "Check byte 6 i IPv6 header for å se om verdien er lik seks. Hvis stedet du finner en verdi som identifiserer en valgfri forlengelse header, sjekk forlengelsen header neste header felt til en verdi av seks. Dersom du finner flere valgfrie forlengelse overskrifter, terpe den siste testen til du finner den siste utvidelsen overskriften ".

Ganske enkelt å skrive på engelsk, men dette er et mareritt å gjennomføre i koden. De fleste valgfrie forlengelse hodene er variabel i lengde, som bare legger til kompleksitet. Jeg har gjort noen tester med Scapy og du kan faktisk se forskjellen i ytelse når protochain blir påkalt. Faktisk kan du sannsynligvis gjøre en ganske god jobb med dosering en IDS / IPS ved å tvinge den til å behandle en masse unyttige forlengelse overskrifter.

Skrive vår filter

Så vårt første problem i skriftlig utfordringen filteret er at ICMPv6 overskriften ikke kan dukke opp etter IPv6 header. Vi må se opp for valgfrie forlengelse overskrifter. Faktisk RFC 2710 heter det: "Alle MLD meldinger beskrevet i dette dokumentet er sendt med en link-lokal IPv6 Source Address, en IPv6 Hop Limit av en, og en IPv6-ruter Alert alternativet [RTR-ALERT] i en Hop-by-Hop Alternativer header. "Dette betyr at vår multicast lytteren pakke er nødvendig for å ha en Hop-by-Hop utvidelse header med ruteren Alert alternativet sett. Med dette i tankene, bør vår første sjekk være:

IP6 protochain icmp6

For å sikre at vi bare ser på ICMPv6 pakker. Nå er det bare et spørsmål om å kontrollere om den type felt (byte 0) er satt til 130 (Multicast Listener Query) eller 131 (Multicast Listener Report). Dette bringer oss til vårt andre problem likevel. I IPv4 verden kan jeg gjøre en:

ICMP [0] = <type verdi av interest>

Hvis jeg prøver dette med icmp6 jeg får:

[Root @ Fubar ~] # tcpdump-nn icmp6 [0] = 130
tcpdump: IPv6 øverste laget protokollen ikke støttes av proto [x]

Med andre ord, kan jeg ikke bruke forskyvninger med icmp6 å søke etter bestemte verdier. Windump og tcpdump er annonsert som IPv6 kompatibel, men ikke forvent å få alle de samme funksjonene du har med IPv4. Yuck!

Så hva gjør vi? Vi må falle tilbake på refererer verdien fra en IP6 offset. Med andre ord, må vi måle gjennom IPv6 header, gjennom den nødvendige Hop-by-Hop header, og inn i ICMPv6 overskriften for å se om den type feltet er satt til 130 eller 131. Noen ting å ta hensyn til:

  • IPv6 header er fast på 40 byte i størrelse
  • Hop-by-Hop header er variabel, men 4 byte med ruteren Alert satt
  • Den type feltet er byte 0 innenfor ICMPv6 header

Så her er hva vi ender opp med:

IP6 protochain icmp6 og (IP6 [44] = 130 eller IP6 [44] = 131)

Puh! Vi fikk endelig det! Eller gjorde vi?

Q: Hva skjer hvis pakken har ytterligere forlengelse overskrifter?

A: Vårt filter vil ikke fungere.

Q: Hva hvis Hop-by-Hop header har flere alternativer satt enn Router Alert?

A: Vårt filter vil ikke fungere.

Spørsmål: Kan vi fikse de to ovennevnte problemene?

A: Ikke før tcpdump / Windump filtrering legger IF / THEN sløyfe support.

Så hvis vi ønsker å fange normal ML trafikk, vil ovennevnte filteret fungerer fint. Hvis derimot vi ønsker å forsikre vi fange angriper trickiness også, er ikke filteret kommer til å fly.

Hva om vi prøver noe sånt som dette:

tcpdump-nn-s 1500-x IP6 protochain icmp6 | grep-i multicast> multicast.txt

og så bare bruke Wireshark sin text2cap verktøy for å konvertere den til Libpcap format? Problemet her er vi bare få overskriften info. Grep vil matche resultatlinjen som inneholder ordet "Multicast", men så hopper alle Hex under det som er det faktiske innholdet i pakken.

Så det endelige svaret er: "Kan ikke få de? Fra Haya" ;)

Så hva om du virkelig trenger å være i stand til å se denne trafikken? Inntil støtte for IPv6 modnes, er den eneste 100% metode for å fange all ICMPv6 trafikk og deretter manuelt sortere gjennom det.

I alle fall mitt syn på dette. Hvis noen kan faktisk komme opp med en 100% arbeidende løsning, ville jeg gjerne høre det.

ICMPv6 Challenge - Hints

9 desember 2009

OK, her er et tips å peke deg i riktig retning.

Utfordringen var: "Skriv en tcpdump / windump filter som skal fange ICMPv6 Multicast Listener pakker."

Høres enkelt, ikke sant?

Med litt hjelp fra Google vil du finne at den "type" for Multicast lytteren er 130, og den ICMPv6 typen feltet er det første byte i overskriften. Så dette bør være så enkelt som:

tcpdump-nn-p-v-s 0 icmp6 [0] = 130

men hvis du kjører kommandoen du får tilbake:

tcpdump: IPv6 øverste laget protokollen ikke støttes av proto [x]

Med andre ord, kan du bruke "icmp6" for å se alle ICMPv6 pakker, men du kan ikke bruke den til å filtrere på noen av de ICMPv6 topptekstfeltene.

Så vi trenger en "Plan B". Finne ut plan B, og du har løst utfordringen. :)

ICMPv6 Challenge

4 desember 2009

Bygge på IPv6 utfordringen fra forrige gang, har jeg en ny en for deg: Skriv en tcpdump / windump filter som vil fange ICMPv6 Multicast Listener pakker.

Det var det! Ganske enkelt, ikke sant? ;)

Weekend Challenge - svar

3 desember 2009

Vel sin nå torsdag så jeg tenkte det tid for å poste svar på forrige helgs utfordring. ;)

Først, hvorfor skal du selv bryr deg om IPv6 hvis du ikke har startet distribusjon av det? Jeg følte mye på samme måte til jeg fant IPv6 blir brukt som et hemmelig kommunikasjonskanal innenfor en kundes nettverk. Dataene ble deretter bli skjøvet ut til Internett via Teredo. Hvis du ikke er kjent med teknikken, har Scott Hogg noen gode innlegg om temaet.

Så selv om du ikke bruker IPv6, lønner det seg å begynne å klippe kur på teknologien så vel som å se etter den på ditt lokale nettverk.

Så til vurdering, var utfordringen:

Skriv en tcpdump eller Windump filter som skal fange opp all trafikk med en kilde IPv6 adresse 2001: DB8 :: 10 gjennom 2001: DB8 :: 20.

Det finnes et par begrensninger med å skrive dette filteret. Den første få jeg dekket i det siste innlegget. Den siste, som jeg visste, men aldri egentlig trodde var et problem før jeg begynte å jobbe med IPv6 ganske tungt, er at tcpdump / Windump vil bare la deg bruke 1, 2 eller 4 byte masker. Så mens vi ville elske å løse dette med en innledende filter uttalelse av "IP6 [08:14] =", kan vi ikke fordi vi er begrenset til 4 byte. Det er faktisk en måte å komme rundt dette, men jeg kommer tilbake til det.

Så her er det filteret jeg har jobbet med:

(IP6 [08:04] = 0x20010db8 og IP6 [12:04] = 0 og IP6 [16:04] = 0 og (IP6 [20:04]> = 0 × 0010 og IP6 [20:04] <= 0050 ))

Litt lenge, men det fungerer. Elisabeth kom opp med en løsning som er langt mer elegant enn min egen:

src netto 2001: DB8 :: / 122 og IP6 [23]> = 0 × 10 && IP6 [23] <= 0 × 20

Så ved å starte med Libpcap format, er hun i stand til å kombinere mine tre første uttalelser til én. Ikke for å være en størrelse dronning, men som gjør henne løsning er mye kortere enn min. I dette tilfellet det er en god ting. :)

Det er omtrent det. Jeg skal legge inn en annen IPv6 typen utfordring i morgen.